login and authentication
login via totp authentication via access and refresh tokens
This commit is contained in:
parent
6696975bee
commit
e1ec65350d
28 changed files with 3750 additions and 0 deletions
40
src/helpers/jwtHelper.ts
Normal file
40
src/helpers/jwtHelper.ts
Normal file
|
@ -0,0 +1,40 @@
|
|||
import jwt from "jsonwebtoken";
|
||||
import { JWTData } from "../type/jwtTypes";
|
||||
|
||||
export abstract class JWTHelper {
|
||||
static validate(token: string): Promise<string | jwt.JwtPayload> {
|
||||
return new Promise<string | jwt.JwtPayload>((resolve, reject) => {
|
||||
jwt.verify(token, process.env.JWT_SECRET, (err, decoded) => {
|
||||
if (err) reject(err.message);
|
||||
else resolve(decoded);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
static create(data: JWTData): Promise<string> {
|
||||
return new Promise<string>((resolve, reject) => {
|
||||
jwt.sign(
|
||||
data,
|
||||
process.env.JWT_SECRET,
|
||||
{
|
||||
expiresIn: process.env.JWT_EXPIRATION,
|
||||
},
|
||||
(err, token) => {
|
||||
if (err) reject(err.message);
|
||||
else resolve(token);
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
static decode(token: string): Promise<string | jwt.JwtPayload> {
|
||||
return new Promise<string | jwt.JwtPayload>((resolve, reject) => {
|
||||
try {
|
||||
let decoded = jwt.decode(token);
|
||||
resolve(decoded);
|
||||
} catch (err) {
|
||||
reject(err.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
11
src/helpers/stringHelper.ts
Normal file
11
src/helpers/stringHelper.ts
Normal file
|
@ -0,0 +1,11 @@
|
|||
export abstract class StringHelper {
|
||||
static random(len: number, charSet?: string): string {
|
||||
charSet = charSet || "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
var randomString = "";
|
||||
for (var i = 0; i < len; i++) {
|
||||
var randomPoz = Math.floor(Math.random() * charSet.length);
|
||||
randomString += charSet.substring(randomPoz, randomPoz + 1);
|
||||
}
|
||||
return randomString;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue