error handling for login

This commit is contained in:
unknown
2024-08-11 15:32:20 +03:00
parent a173e43610
commit 6b425eba6f

View File

@ -40,7 +40,7 @@ export class UserAuthService {
throw new BadRequestException('User already registered with given email'); throw new BadRequestException('User already registered with given email');
} }
const salt = this.helperHashService.randomSalt(10); // Hash the password using bcrypt const salt = this.helperHashService.randomSalt(10); // Hash the password using bcrypt
const hashedPassword = await this.helperHashService.bcrypt( const hashedPassword = this.helperHashService.bcrypt(
userSignUpDto.password, userSignUpDto.password,
salt, salt,
); );
@ -90,39 +90,40 @@ export class UserAuthService {
} }
async userLogin(data: UserLoginDto) { async userLogin(data: UserLoginDto) {
const user = await this.authService.validateUser( try {
data.email, const user = await this.authService.validateUser(
data.password, data.email,
data.regionUuid, data.password,
); data.regionUuid,
);
if (!user) { if (!user) {
throw new UnauthorizedException('Invalid login credentials.'); throw new UnauthorizedException('Invalid login credentials.');
} }
const session = await Promise.all([
const session = await Promise.all([ await this.sessionRepository.update(
await this.sessionRepository.update( { userId: user.id },
{ userId: user.id }, {
{ isLoggedOut: true,
isLoggedOut: true, },
}, ),
), await this.authService.createSession({
await this.authService.createSession({ userId: user.uuid,
loginTime: new Date(),
isLoggedOut: false,
}),
]);
return await this.authService.login({
email: user.email,
userId: user.uuid, userId: user.uuid,
loginTime: new Date(), uuid: user.uuid,
isLoggedOut: false, roles: user?.roles?.map((role) => {
}), return { uuid: role.uuid, type: role.roleType.type };
]); }),
sessionId: session[1].uuid,
return await this.authService.login({ });
email: user.email, } catch (error) {
userId: user.uuid, throw new UnauthorizedException('User unauthorized');
uuid: user.uuid, }
roles: user?.roles?.map((role) => {
return { uuid: role.uuid, type: role.roleType.type };
}),
sessionId: session[1].uuid,
});
} }
async deleteUser(uuid: string) { async deleteUser(uuid: string) {