diff --git a/src/jwtcreator.ts b/src/jwtcreator.ts index cb3269d..5fd73ae 100644 --- a/src/jwtcreator.ts +++ b/src/jwtcreator.ts @@ -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(); for (let permission of user.permissions) {