From d63a6ed19966b14b010e26ea9dbe2af0b6476dad Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Tue, 24 Oct 2023 12:40:07 +0300 Subject: [PATCH] .env: add variable COOKIE_TOKEN_NAME --- .env | 3 ++- apps/api/src/auth/auth.controller.ts | 9 ++++----- apps/api/src/auth/lib/constants.ts | 1 - apps/api/src/config/schema/env.ts | 7 ++++--- apps/api/src/users/users.controller.ts | 5 +++-- 5 files changed, 13 insertions(+), 12 deletions(-) delete mode 100644 apps/api/src/auth/lib/constants.ts diff --git a/.env b/.env index c0de5e3..b3025b5 100644 --- a/.env +++ b/.env @@ -21,4 +21,5 @@ LDAP_ATTRIBUTE= API_SECRET= API_TOKEN_TTL= -API_CACHE_TTL= \ No newline at end of file +API_CACHE_TTL= +COOKIE_TOKEN_NAME=token \ No newline at end of file diff --git a/apps/api/src/auth/auth.controller.ts b/apps/api/src/auth/auth.controller.ts index 9b6c624..425a541 100644 --- a/apps/api/src/auth/auth.controller.ts +++ b/apps/api/src/auth/auth.controller.ts @@ -2,7 +2,6 @@ /* eslint-disable class-methods-use-this */ /* eslint-disable import/no-extraneous-dependencies */ import { AuthService } from './auth.service'; -import { COOKIE_TOKEN_NAME } from './lib/constants'; import { Credentials } from './types/request'; import { Body, Controller, Get, HttpException, HttpStatus, Post, Req, Res } from '@nestjs/common'; import { FastifyReply, FastifyRequest } from 'fastify'; @@ -35,7 +34,7 @@ export class AuthController { try { const token = await this.authService.login(login, password); - return reply.setCookie(COOKIE_TOKEN_NAME, token, this.cookieOptions).status(200).send(); + return reply.setCookie(env.COOKIE_TOKEN_NAME, token, this.cookieOptions).status(200).send(); } catch { throw new HttpException('Unauthorized', HttpStatus.UNAUTHORIZED); } @@ -43,7 +42,7 @@ export class AuthController { @Get('/logout') async logout(@Req() req: FastifyRequest, @Res() reply: FastifyReply) { - const token = req.cookies[COOKIE_TOKEN_NAME]; + const token = req.cookies[env.COOKIE_TOKEN_NAME]; if (token) await this.authService.logout(token); this.clearCookies(req, reply); @@ -53,7 +52,7 @@ export class AuthController { @Get('/auth') async auth(@Req() req: FastifyRequest, @Res() reply: FastifyReply) { - const token = req.cookies[COOKIE_TOKEN_NAME]; + const token = req.cookies[env.COOKIE_TOKEN_NAME]; try { this.authService.checkToken(token); @@ -63,7 +62,7 @@ export class AuthController { if (error.name === 'TokenExpiredError') { const newToken = this.authService.refreshToken(token); - return reply.setCookie(COOKIE_TOKEN_NAME, newToken, this.cookieOptions).send(); + return reply.setCookie(env.COOKIE_TOKEN_NAME, newToken, this.cookieOptions).send(); } return reply.status(HttpStatus.UNAUTHORIZED).send(); diff --git a/apps/api/src/auth/lib/constants.ts b/apps/api/src/auth/lib/constants.ts deleted file mode 100644 index 31c543c..0000000 --- a/apps/api/src/auth/lib/constants.ts +++ /dev/null @@ -1 +0,0 @@ -export const COOKIE_TOKEN_NAME = 'token'; diff --git a/apps/api/src/config/schema/env.ts b/apps/api/src/config/schema/env.ts index 73585e5..5d9e890 100644 --- a/apps/api/src/config/schema/env.ts +++ b/apps/api/src/config/schema/env.ts @@ -1,8 +1,11 @@ import { z } from 'zod'; const envSchema = z.object({ - API_PORT: z.number().optional().default(3001), API_CACHE_TTL: z.string().transform((val) => Number.parseInt(val, 10)), + API_PORT: z.number().optional().default(3001), + API_SECRET: z.string(), + API_TOKEN_TTL: z.string().transform((val) => Number.parseInt(val, 10)), + COOKIE_TOKEN_NAME: z.string().default('token'), LDAP_ATTRIBUTE: z.string(), LDAP_BASE: z.string(), LDAP_BIND_CREDENTIALS: z.string(), @@ -14,8 +17,6 @@ const envSchema = z.object({ .string() .transform((val) => Number.parseInt(val, 10)) .default('6379'), - API_SECRET: z.string(), - API_TOKEN_TTL: z.string().transform((val) => Number.parseInt(val, 10)), }); export default envSchema; diff --git a/apps/api/src/users/users.controller.ts b/apps/api/src/users/users.controller.ts index 909ec7a..f4db6c4 100644 --- a/apps/api/src/users/users.controller.ts +++ b/apps/api/src/users/users.controller.ts @@ -1,9 +1,10 @@ +/* eslint-disable @typescript-eslint/explicit-member-accessibility */ /* eslint-disable class-methods-use-this */ /* eslint-disable import/no-extraneous-dependencies */ -import { COOKIE_TOKEN_NAME } from '../auth/lib/constants'; import { UsersService } from './users.service'; import { Controller, Get, Req, Res } from '@nestjs/common'; import { FastifyReply, FastifyRequest } from 'fastify'; +import { env } from 'src/config/env'; @Controller() export class UsersController { @@ -11,7 +12,7 @@ export class UsersController { @Get('/get-user') async getUser(@Req() req: FastifyRequest, @Res() reply: FastifyReply) { - const token = req.cookies[COOKIE_TOKEN_NAME]; + const token = req.cookies[env.COOKIE_TOKEN_NAME]; const user = await this.usersService.getUser(token);