From 613225885f733f7198ed9ffc992d1337d3a83091 Mon Sep 17 00:00:00 2001 From: Anshu Babu Date: Mon, 8 Jul 2024 00:25:55 +0530 Subject: [PATCH] FIX SONAR ISSUES --- readme.md | 16 ++++++++++++++ src/config/index.ts | 2 +- src/controllers/AuthController.ts | 4 ++-- src/middlewares/authenticate.ts | 2 +- src/middlewares/parseRefreshToken.ts | 2 +- src/middlewares/validateRefreshToken.ts | 2 +- src/server.ts | 2 +- src/services/TenantService.ts | 18 --------------- src/services/TokenService.ts | 4 ++-- src/services/UserService.ts | 29 ------------------------- tests/users/login.spec.ts | 2 +- tests/users/register.spec.ts | 2 +- tests/utils/index.ts | 3 ++- 13 files changed, 29 insertions(+), 59 deletions(-) diff --git a/readme.md b/readme.md index e995554..a05a323 100644 --- a/readme.md +++ b/readme.md @@ -6,3 +6,19 @@ npm run migration:run -- -d //FOR MIGRATION CREATE typeorm migration:generate -d path/to/migrations/ + +// READ PRIVSTE KEY FORM FILE +let privateKey: Buffer; + + try { + privateKey = fs.readFileSync( + path.join(__dirname, '../../certs/private.pem'), + ); + } catch (err) { + const error = createHttpError( + 500, + 'Fail to read private key. Make sure the private.pem file is present in the certs folder.', + ); + + throw error; + } diff --git a/src/config/index.ts b/src/config/index.ts index 512457c..dd92b3c 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -2,7 +2,7 @@ import { config } from 'dotenv'; import path from 'path'; config({ - path: path.join(__dirname, `../../.env.${process.env.NODE_ENV || 'dev'}`), + path: path.join(__dirname, `../../.env.${process.env.NODE_ENV ?? 'dev'}`), }); const { diff --git a/src/controllers/AuthController.ts b/src/controllers/AuthController.ts index ae9b60f..3ca08a3 100644 --- a/src/controllers/AuthController.ts +++ b/src/controllers/AuthController.ts @@ -44,8 +44,8 @@ export class AuthController { this.logger.info('User has been registered:', user); const payLoad: JwtPayload = { - sub: user.id.toString() || '1', - role: user.role || ROLES.CUSTOMER, + sub: user.id.toString() ?? '1', + role: user.role ?? ROLES.CUSTOMER, }; const accessToken = this.tokenService.generateAccessToken(payLoad); diff --git a/src/middlewares/authenticate.ts b/src/middlewares/authenticate.ts index 13252d7..87de8c4 100644 --- a/src/middlewares/authenticate.ts +++ b/src/middlewares/authenticate.ts @@ -6,7 +6,7 @@ import { AuthCookie } from '../types'; export default expressjwt({ secret: jwksClient.expressJwtSecret({ - jwksUri: Config.JWKS_URI || '', + jwksUri: Config.JWKS_URI ?? '', cache: true, rateLimit: true, }) as GetVerificationKey, diff --git a/src/middlewares/parseRefreshToken.ts b/src/middlewares/parseRefreshToken.ts index 38e411d..442f0bb 100644 --- a/src/middlewares/parseRefreshToken.ts +++ b/src/middlewares/parseRefreshToken.ts @@ -4,7 +4,7 @@ import { Request } from 'express'; import { AuthCookie } from '../types'; export default expressjwt({ - secret: Config.REFRESH_TOKEN_SECRET || '', + secret: Config.REFRESH_TOKEN_SECRET ?? 'HOLA_SECRET', algorithms: ['HS256'], getToken(req: Request) { const { refreshToken } = req.cookies as AuthCookie; diff --git a/src/middlewares/validateRefreshToken.ts b/src/middlewares/validateRefreshToken.ts index 7df240b..1f4f73f 100644 --- a/src/middlewares/validateRefreshToken.ts +++ b/src/middlewares/validateRefreshToken.ts @@ -7,7 +7,7 @@ import { RefreshToken } from '../entity/RefreshToken'; import logger from '../config/logger'; export default expressjwt({ - secret: Config.REFRESH_TOKEN_SECRET || '', + secret: Config.REFRESH_TOKEN_SECRET ?? 'HOLA_SECRET', algorithms: ['HS256'], getToken(req: Request) { const { refreshToken } = req.cookies as AuthCookie; diff --git a/src/server.ts b/src/server.ts index 4efdada..9d50360 100644 --- a/src/server.ts +++ b/src/server.ts @@ -7,7 +7,7 @@ const startServer = async () => { try { await AppDataSource.initialize(); logger.info('Database connection established successfully.'); - await app.listen(Config.PORT, () => { + app.listen(Config.PORT, () => { logger.info(`Server is running on port ${Config.PORT}.`); }); } catch (error) { diff --git a/src/services/TenantService.ts b/src/services/TenantService.ts index b4fd0ec..d2ef97b 100644 --- a/src/services/TenantService.ts +++ b/src/services/TenantService.ts @@ -13,24 +13,6 @@ export class TenantService { return await this.tenantRepository.update(id, tenantData); } - // async getAll(validatedQuery: TenantQueryParams) { - // const queryBuilder = this.tenantRepository.createQueryBuilder('tenant'); - - // if (validatedQuery.q) { - // const searchTerm = `%${validatedQuery.q}%`; - // queryBuilder.where("CONCAT(tenant.name, ' ', tenant.address) ILike :q", { - // q: searchTerm, - // }); - // } - - // const result = await queryBuilder - // .skip((validatedQuery.currentPage - 1) * validatedQuery.perPage) - // .take(validatedQuery.perPage) - // .orderBy('tenant.id', 'DESC') - // .getManyAndCount(); - // return result; - // } - async getById(tenantId: number) { return await this.tenantRepository.findOne({ where: { id: tenantId } }); } diff --git a/src/services/TokenService.ts b/src/services/TokenService.ts index 31fb996..91bafba 100644 --- a/src/services/TokenService.ts +++ b/src/services/TokenService.ts @@ -12,7 +12,7 @@ export class TokenService { throw createHttpError(500, 'SECRET_KEY is not set..!'); } - const privateKey = Config.PRIVATE_KEY || 'PRIVATE_KEY'; + const privateKey = Config.PRIVATE_KEY ?? 'PRIVATE_KEY'; const accessToken = sign(payLoad, privateKey, { algorithm: 'RS256', @@ -24,7 +24,7 @@ export class TokenService { } generateRefreshToken(payLoad: JwtPayload) { - const secret = Config.REFRESH_TOKEN_SECRET || 'secret'; + const secret = Config.REFRESH_TOKEN_SECRET ?? 'HOLA_SECRET'; const refreshToken = sign(payLoad, secret, { algorithm: 'HS256', expiresIn: '1y', diff --git a/src/services/UserService.ts b/src/services/UserService.ts index 55e7a6c..60e8291 100644 --- a/src/services/UserService.ts +++ b/src/services/UserService.ts @@ -91,35 +91,6 @@ export class UserService { } } - // async getAll(validatedQuery: UserQueryParams) { - // const queryBuilder = this.userRepository.createQueryBuilder('user'); - - // if (validatedQuery.q) { - // const searchTerm = `%${validatedQuery.q}%`; - // queryBuilder.where( - // new Brackets((qb) => { - // qb.where("CONCAT(user.firstName, ' ', user.lastName) ILike :q", { - // q: searchTerm, - // }).orWhere('user.email ILike :q', { q: searchTerm }); - // }), - // ); - // } - - // if (validatedQuery.role) { - // queryBuilder.andWhere('user.role = :role', { - // role: validatedQuery.role, - // }); - // } - - // const result = await queryBuilder - // .leftJoinAndSelect('user.tenant', 'tenant') - // .skip((validatedQuery.currentPage - 1) * validatedQuery.perPage) - // .take(validatedQuery.perPage) - // .orderBy('user.id', 'DESC') - // .getManyAndCount(); - // return result; - // } - async deleteById(userId: number) { return await this.userRepository.delete(userId); } diff --git a/tests/users/login.spec.ts b/tests/users/login.spec.ts index d543a16..995e91d 100644 --- a/tests/users/login.spec.ts +++ b/tests/users/login.spec.ts @@ -54,7 +54,7 @@ describe('POST /auth/login', () => { let accessToken: string | null = null; let refreshToken: string | null = null; const cookies = - (response.headers as unknown as Headers)['set-cookie'] || []; + (response.headers as unknown as Headers)['set-cookie'] ?? []; cookies.forEach((cookie) => { if (cookie.startsWith('accessToken=')) { accessToken = cookie.split(';')[0].split('=')[1]; diff --git a/tests/users/register.spec.ts b/tests/users/register.spec.ts index 8ffad72..547d32c 100644 --- a/tests/users/register.spec.ts +++ b/tests/users/register.spec.ts @@ -176,7 +176,7 @@ describe('POST /auth/register', () => { } const cookies = - (response.headers as unknown as Headers)['set-cookie'] || []; + (response.headers as unknown as Headers)['set-cookie'] ?? []; cookies.forEach((cookie) => { if (cookie.startsWith('accessToken=')) { diff --git a/tests/utils/index.ts b/tests/utils/index.ts index 8557fa0..e1948e9 100644 --- a/tests/utils/index.ts +++ b/tests/utils/index.ts @@ -22,7 +22,8 @@ export const isJWT = (token: string | null): boolean => { parts.forEach((part) => { Buffer.from(part, 'base64').toString('utf-8'); }); - } catch (e) { + } catch (error) { + console.log(`Error {}`, error); return false; }