Added coments to the jwt creator
This commit is contained in:
parent
1d54fb085b
commit
428e2c38ce
@ -3,7 +3,15 @@ import * as jsonwebtoken from "jsonwebtoken";
|
||||
import { config } from './config';
|
||||
import { User } from './models/entities/User';
|
||||
|
||||
/**
|
||||
* This class is responsible for all things JWT creation.
|
||||
*/
|
||||
export class JwtCreator {
|
||||
/**
|
||||
* Creates a new refresh token for a given user
|
||||
* @param user User entity that the refresh token shall be created for
|
||||
* @param expiry_timestamp Timestamp for the token expiry. Will be generated if not provided.
|
||||
*/
|
||||
public static createRefresh(user: User, expiry_timestamp?: number) {
|
||||
if (!expiry_timestamp) { expiry_timestamp = Math.floor(Date.now() / 1000) + 10 * 36000; }
|
||||
return jsonwebtoken.sign({
|
||||
@ -13,6 +21,11 @@ export class JwtCreator {
|
||||
}, config.jwt_secret)
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new access token for a given user
|
||||
* @param user User entity that the access token shall be created for
|
||||
* @param expiry_timestamp Timestamp for the token expiry. Will be generated if not provided.
|
||||
*/
|
||||
public static createAccess(user: User, expiry_timestamp?: number) {
|
||||
if (!expiry_timestamp) { expiry_timestamp = Math.floor(Date.now() / 1000) + 10 * 36000; }
|
||||
return jsonwebtoken.sign({
|
||||
@ -22,6 +35,9 @@ export class JwtCreator {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Special variant of the user class that
|
||||
*/
|
||||
export class JwtUser {
|
||||
@IsInt()
|
||||
id: number;
|
||||
@ -62,6 +78,10 @@ export class JwtUser {
|
||||
@IsOptional()
|
||||
profilePic?: string;
|
||||
|
||||
/**
|
||||
* Creates a new instance of this class based on a provided user entity.
|
||||
* @param user User entity that shall be encapsulated in a jwt.
|
||||
*/
|
||||
public constructor(user: User) {
|
||||
this.id = user.id;
|
||||
this.firstname = user.firstname;
|
||||
@ -75,6 +95,10 @@ export class JwtUser {
|
||||
this.permissions = this.getPermissions(user);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handels getting the permissions granted to this user (direct or indirect).
|
||||
* @param user User which's permissions shall be gotten.
|
||||
*/
|
||||
public getPermissions(user: User): string[] {
|
||||
let returnPermissions: string[] = new Array<string>();
|
||||
for (let permission of user.permissions) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user