From 35ce13a67f10e5c37c43ac6aca42bdd35a327d03 Mon Sep 17 00:00:00 2001 From: ZaydSkaff Date: Tue, 3 Jun 2025 09:47:24 +0300 Subject: [PATCH] fix: return proper error on login API (#386) --- libs/common/src/auth/services/auth.service.ts | 29 ++++++++++--------- .../role-type/entities/role.type.entity.ts | 1 + 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/libs/common/src/auth/services/auth.service.ts b/libs/common/src/auth/services/auth.service.ts index 41ef028..db191a5 100644 --- a/libs/common/src/auth/services/auth.service.ts +++ b/libs/common/src/auth/services/auth.service.ts @@ -1,18 +1,18 @@ +import { PlatformType } from '@app/common/constants/platform-type.enum'; +import { RoleType } from '@app/common/constants/role.type.enum'; import { BadRequestException, Injectable, UnauthorizedException, } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; import { JwtService } from '@nestjs/jwt'; import * as argon2 from 'argon2'; -import { HelperHashService } from '../../helper/services'; -import { UserRepository } from '../../../../common/src/modules/user/repositories'; -import { UserSessionRepository } from '../../../../common/src/modules/session/repositories/session.repository'; -import { UserSessionEntity } from '../../../../common/src/modules/session/entities'; -import { ConfigService } from '@nestjs/config'; import { OAuth2Client } from 'google-auth-library'; -import { PlatformType } from '@app/common/constants/platform-type.enum'; -import { RoleType } from '@app/common/constants/role.type.enum'; +import { UserSessionEntity } from '../../../../common/src/modules/session/entities'; +import { UserSessionRepository } from '../../../../common/src/modules/session/repositories/session.repository'; +import { UserRepository } from '../../../../common/src/modules/user/repositories'; +import { HelperHashService } from '../../helper/services'; @Injectable() export class AuthService { @@ -40,16 +40,17 @@ export class AuthService { }, relations: ['roleType', 'project'], }); - if ( - platform === PlatformType.WEB && - (user.roleType.type === RoleType.SPACE_OWNER || - user.roleType.type === RoleType.SPACE_MEMBER) - ) { - throw new UnauthorizedException('Access denied for web platform'); - } if (!user) { throw new BadRequestException('Invalid credentials'); } + if ( + platform === PlatformType.WEB && + [RoleType.SPACE_OWNER, RoleType.SPACE_MEMBER].includes( + user.roleType.type as RoleType, + ) + ) { + throw new UnauthorizedException('Access denied for web platform'); + } if (!user.isUserVerified) { throw new BadRequestException('User is not verified'); diff --git a/libs/common/src/modules/role-type/entities/role.type.entity.ts b/libs/common/src/modules/role-type/entities/role.type.entity.ts index b7289a3..79d5acf 100644 --- a/libs/common/src/modules/role-type/entities/role.type.entity.ts +++ b/libs/common/src/modules/role-type/entities/role.type.entity.ts @@ -12,6 +12,7 @@ export class RoleTypeEntity extends AbstractEntity { nullable: false, enum: Object.values(RoleType), }) + // why is this ts-type string not enum? type: string; @OneToMany(() => UserEntity, (inviteUser) => inviteUser.roleType, { nullable: true,