refactor backend done

This commit is contained in:
rubikscraft
2022-03-28 15:43:52 +02:00
parent ee5db6cd12
commit 31eac94bc7
15 changed files with 95 additions and 61 deletions

View File

@@ -2,6 +2,7 @@ import { Injectable, Logger } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import { instanceToPlain, plainToClass } from 'class-transformer';
import { JwtDataDto } from 'picsur-shared/dist/dto/jwt.dto';
import { AsyncFailable, Fail } from 'picsur-shared/dist/types';
import { strictValidate } from 'picsur-shared/dist/util/validate';
import { EUserBackend } from '../../models/entities/user.entity';
@@ -11,7 +12,7 @@ export class AuthManagerService {
constructor(private jwtService: JwtService) {}
async createToken(user: EUserBackend): Promise<string> {
async createToken(user: EUserBackend): AsyncFailable<string> {
const jwtData: JwtDataDto = plainToClass(JwtDataDto, {
user: {
username: user.username,
@@ -23,10 +24,13 @@ export class AuthManagerService {
// in case of any failures
const errors = await strictValidate(jwtData);
if (errors.length > 0) {
this.logger.warn(errors);
throw new Error('Invalid jwt token generated');
return Fail('Invalid JWT: ' + errors);
}
return this.jwtService.signAsync(instanceToPlain(jwtData));
try {
return await this.jwtService.signAsync(instanceToPlain(jwtData));
} catch (e) {
return Fail("Couldn't create JWT: " + e);
}
}
}

View File

@@ -13,7 +13,7 @@ import { strictValidate } from 'picsur-shared/dist/util/validate';
import { UserRolesService } from '../../../collections/userdb/userrolesdb.service';
import { Permissions } from '../../../models/dto/permissions.dto';
import { EUserBackend } from '../../../models/entities/user.entity';
import { isPermissionsArray } from '../../../models/util/permissions.validator';
import { isPermissionsArray } from '../../../models/validators/permissions.validator';
// This guard extends both the jwt authenticator and the guest authenticator
// The order matters here, because this results in the guest authenticator being used as a fallback