diff --git a/apps/api/src/account/account.controller.ts b/apps/api/src/account/account.controller.ts index 36af0a4..97b42fa 100644 --- a/apps/api/src/account/account.controller.ts +++ b/apps/api/src/account/account.controller.ts @@ -25,10 +25,11 @@ import { cookieOptions } from 'src/config/cookie'; import { env } from 'src/config/env'; import { Credentials } from 'src/dto/credentials'; import { Account } from 'src/schemas/account.schema'; +import type { BaseAuthController } from 'src/types/auth-controller'; @Controller('account') @ApiTags('account') -export class AccountController { +export class AccountController implements BaseAuthController { constructor(private readonly accountService: AccountService) {} private clearCookies(req, reply) { @@ -102,7 +103,11 @@ export class AccountController { } @Post('/login') - async login(@Body() credentials: Credentials, @Res() reply: FastifyReply) { + async login( + @Body() credentials: Credentials, + @Req() _req: FastifyRequest, + @Res() reply: FastifyReply + ) { try { const token = await this.accountService.login(credentials); diff --git a/apps/api/src/ldap/ldap.controller.ts b/apps/api/src/ldap/ldap.controller.ts index 4e89835..ec8861d 100644 --- a/apps/api/src/ldap/ldap.controller.ts +++ b/apps/api/src/ldap/ldap.controller.ts @@ -19,11 +19,12 @@ import { ApiResponse, ApiTags } from '@nestjs/swagger'; import { FastifyReply, FastifyRequest } from 'fastify'; import { cookieOptions } from 'src/config/cookie'; import { env } from 'src/config/env'; +import type { BaseAuthController } from 'src/types/auth-controller'; import { User } from 'src/utils/ldap'; @Controller('ldap') @ApiTags('ldap') -export class LdapController { +export class LdapController implements BaseAuthController { cookieOptions: CookieSerializeOptions; constructor(private readonly ldapService: LdapService) {} @@ -42,19 +43,11 @@ export class LdapController { status: HttpStatus.OK, }) async login( - @Req() req: FastifyRequest, @Body() credentials: Credentials, + @Req() _req: FastifyRequest, @Res() reply: FastifyReply ) { - const twoFactor = req.headers['tfa'] === 'telegram'; - try { - if (twoFactor) { - const user = await this.ldapService.getUser(credentials.login); - - return reply.status(200).send(user); - } - const token = await this.ldapService.login(credentials); return reply.setCookie(env.COOKIE_TOKEN_NAME, token, cookieOptions).status(200).send(); diff --git a/apps/api/src/types/auth-controller.ts b/apps/api/src/types/auth-controller.ts new file mode 100644 index 0000000..ee4d7a6 --- /dev/null +++ b/apps/api/src/types/auth-controller.ts @@ -0,0 +1,8 @@ +import type { FastifyReply, FastifyRequest } from 'fastify'; +import type { Credentials } from 'src/dto/credentials'; + +export type BaseAuthController = { + getUser: (req: FastifyRequest, reply: FastifyReply) => Promise; + login: (credentials: Credentials, req: FastifyRequest, reply: FastifyReply) => Promise; + logout: (req: FastifyRequest, reply: FastifyReply) => Promise; +};