change validation to be stricter

This commit is contained in:
rubikscraft
2022-03-19 21:34:33 +01:00
parent cc7d9ddef3
commit 94c2a16bc9
24 changed files with 247 additions and 167 deletions

View File

@@ -1,8 +1,8 @@
import { Injectable, Logger } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import { instanceToPlain, plainToClass } from 'class-transformer';
import { validate } from 'class-validator';
import { JwtDataDto } from 'picsur-shared/dist/dto/jwt.dto';
import { strictValidate } from 'picsur-shared/dist/util/validate';
import { EUserBackend } from '../../models/entities/user.entity';
@Injectable()
@@ -16,7 +16,7 @@ export class AuthManagerService {
user,
});
const errors = await validate(jwtData, { forbidUnknownValues: true });
const errors = await strictValidate(jwtData);
if (errors.length > 0) {
this.logger.warn(errors);
throw new Error('Invalid jwt token generated');

View File

@@ -5,7 +5,7 @@ import {
Logger
} from '@nestjs/common';
import { plainToClass } from 'class-transformer';
import { validate } from 'class-validator';
import { strictValidate } from 'picsur-shared/dist/util/validate';
import { EUserBackend } from '../../../models/entities/user.entity';
@Injectable()
@@ -20,7 +20,7 @@ export class AdminGuard implements CanActivate {
}
const user = plainToClass(EUserBackend, request.user);
const errors = await validate(user, { forbidUnknownValues: true });
const errors = await strictValidate(user);
if (errors.length > 0) {
this.logger.warn(errors);
return false;

View File

@@ -6,9 +6,9 @@ import {
} from '@nestjs/common';
import { PassportStrategy } from '@nestjs/passport';
import { plainToClass } from 'class-transformer';
import { validate } from 'class-validator';
import { ExtractJwt, Strategy } from 'passport-jwt';
import { JwtDataDto } from 'picsur-shared/dist/dto/jwt.dto';
import { strictValidate } from 'picsur-shared/dist/util/validate';
import { EUserBackend } from '../../../models/entities/user.entity';
@Injectable()
@@ -26,9 +26,7 @@ export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') {
async validate(payload: any): Promise<EUserBackend> {
const jwt = plainToClass(JwtDataDto, payload);
const errors = await validate(jwt, {
forbidUnknownValues: true,
});
const errors = await strictValidate(jwt);
if (errors.length > 0) {
this.logger.warn(errors);

View File

@@ -8,12 +8,12 @@ import {
import { Reflector } from '@nestjs/core';
import { AuthGuard } from '@nestjs/passport';
import { plainToClass } from 'class-transformer';
import { validate } from 'class-validator';
import {
Permissions
} from 'picsur-shared/dist/dto/permissions';
import { Fail, Failable, HasFailed } from 'picsur-shared/dist/types';
import { isPermissionsArray } from 'picsur-shared/dist/util/permissions';
import { strictValidate } from 'picsur-shared/dist/util/validate';
import { UsersService } from '../../../collections/userdb/userdb.service';
import { EUserBackend } from '../../../models/entities/user.entity';
@@ -77,9 +77,7 @@ export class MainAuthGuard extends AuthGuard(['jwt', 'guest']) {
private async validateUser(user: EUserBackend): Promise<EUserBackend> {
const userClass = plainToClass(EUserBackend, user);
const errors = await validate(userClass, {
forbidUnknownValues: true,
});
const errors = await strictValidate(userClass);
if (errors.length > 0) {
this.logger.error(