This commit is contained in:
hannathkadher
2025-01-08 12:16:49 +04:00
2 changed files with 51 additions and 29 deletions

View File

@ -33,32 +33,33 @@ export class AuthService {
const user = await this.userRepository.findOne({
where: {
email,
region: regionUuid
? {
uuid: regionUuid,
}
: undefined,
region: regionUuid ? { uuid: regionUuid } : undefined,
},
relations: ['roleType'],
});
if (!user) {
throw new BadRequestException('Invalid credentials');
}
if (!user.isUserVerified) {
throw new BadRequestException('User is not verified');
}
if (!user.isActive) {
throw new BadRequestException('User is not active');
}
if (user) {
const passwordMatch = this.helperHashService.bcryptCompare(
pass,
user.password,
);
if (passwordMatch) {
const { ...result } = user;
return result;
}
const passwordMatch = await this.helperHashService.bcryptCompare(
pass,
user.password,
);
if (!passwordMatch) {
throw new BadRequestException('Invalid credentials');
}
return null;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { password, ...result } = user;
return result;
}
async createSession(data): Promise<UserSessionEntity> {

View File

@ -5,34 +5,55 @@ import {
HttpException,
HttpStatus,
} from '@nestjs/common';
import { Response } from 'express';
import { Request, Response } from 'express';
@Catch()
export class HttpExceptionFilter implements ExceptionFilter {
catch(exception: unknown, host: ArgumentsHost) {
catch(exception: unknown, host: ArgumentsHost): void {
const ctx = host.switchToHttp();
const response = ctx.getResponse<Response>();
const request = ctx.getRequest<Request>();
const status =
exception instanceof HttpException
? exception.getStatus()
: HttpStatus.INTERNAL_SERVER_ERROR;
const message =
exception instanceof HttpException
? exception.getResponse()
: 'Internal server error';
const status = this.getStatus(exception);
const errorMessage = this.getErrorMessage(exception);
const formattedStatus = this.formatStatus(status);
const errorResponse = {
statusCode: status,
timestamp: new Date().toISOString(),
path: request.url,
error: message,
error:
typeof errorMessage === 'string'
? {
message: errorMessage,
error: formattedStatus,
statusCode: status,
}
: errorMessage,
};
// Optionally log the exception
console.error(`Error occurred:`, exception);
console.error('Error occurred:', exception);
response.status(status).json(errorResponse);
}
private getStatus(exception: unknown): HttpStatus {
return exception instanceof HttpException
? exception.getStatus()
: HttpStatus.INTERNAL_SERVER_ERROR;
}
private getErrorMessage(exception: unknown): string | object {
return exception instanceof HttpException
? exception.getResponse()
: 'Internal server error';
}
private formatStatus(status: HttpStatus): string {
return HttpStatus[status]
.toLowerCase()
.replace('_', ' ')
.split(' ')
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
.join(' ');
}
}