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 { config } from './config';
|
||||||
import { User } from './models/entities/User';
|
import { User } from './models/entities/User';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class is responsible for all things JWT creation.
|
||||||
|
*/
|
||||||
export class JwtCreator {
|
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) {
|
public static createRefresh(user: User, expiry_timestamp?: number) {
|
||||||
if (!expiry_timestamp) { expiry_timestamp = Math.floor(Date.now() / 1000) + 10 * 36000; }
|
if (!expiry_timestamp) { expiry_timestamp = Math.floor(Date.now() / 1000) + 10 * 36000; }
|
||||||
return jsonwebtoken.sign({
|
return jsonwebtoken.sign({
|
||||||
@ -13,6 +21,11 @@ export class JwtCreator {
|
|||||||
}, config.jwt_secret)
|
}, 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) {
|
public static createAccess(user: User, expiry_timestamp?: number) {
|
||||||
if (!expiry_timestamp) { expiry_timestamp = Math.floor(Date.now() / 1000) + 10 * 36000; }
|
if (!expiry_timestamp) { expiry_timestamp = Math.floor(Date.now() / 1000) + 10 * 36000; }
|
||||||
return jsonwebtoken.sign({
|
return jsonwebtoken.sign({
|
||||||
@ -22,6 +35,9 @@ export class JwtCreator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Special variant of the user class that
|
||||||
|
*/
|
||||||
export class JwtUser {
|
export class JwtUser {
|
||||||
@IsInt()
|
@IsInt()
|
||||||
id: number;
|
id: number;
|
||||||
@ -62,6 +78,10 @@ export class JwtUser {
|
|||||||
@IsOptional()
|
@IsOptional()
|
||||||
profilePic?: string;
|
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) {
|
public constructor(user: User) {
|
||||||
this.id = user.id;
|
this.id = user.id;
|
||||||
this.firstname = user.firstname;
|
this.firstname = user.firstname;
|
||||||
@ -75,6 +95,10 @@ export class JwtUser {
|
|||||||
this.permissions = this.getPermissions(user);
|
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[] {
|
public getPermissions(user: User): string[] {
|
||||||
let returnPermissions: string[] = new Array<string>();
|
let returnPermissions: string[] = new Array<string>();
|
||||||
for (let permission of user.permissions) {
|
for (let permission of user.permissions) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user