/
viktorphp
/
back-socket
Обзор
Документация
Войти
/
viktorphp
/
back-socket
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/controllers/auth/auth.controller.ts
69 строк
2 KB
Иванов Виктор Евгеньевич
release/D-24.001.00: add logout and change password
04 янв 2025, 23:12
04 янв 2025, 23:12
3bf1b9e
Код
Авторство
О чём код?
import { Controller, Post, UseGuards, Request, Res, HttpCode, Body, } from '@nestjs/common'; import { AuthService } from 'src/services/auth/auth.service'; import { LocalAuthGuard } from 'src/auth/local-auth.guard'; import { Response, Request as ExpressRequest } from 'express'; import { User } from 'src/entities/users/user.entity'; import { JwtAuthGuard } from 'src/auth/jwt-auth.guard'; import { RegisterDto } from 'src/dto/register.dto'; import { SessionGuard } from 'src/auth/session.guard'; @Controller('auth') export class AuthController { constructor(private authService: AuthService) {} @UseGuards(LocalAuthGuard) @Post('/login') @HttpCode(200) async login( @Request() req: { user: User }, @Res({ passthrough: true }) response: Response, // passthrough: true - позволяет использовать два подхода для ответа: стандартный и с использованием response объекта из express ) { return await this.authService.login(req.user, response); } @UseGuards(LocalAuthGuard) @Post('/loginSession') @HttpCode(200) async loginSession( @Request() req: { user: User }, @Res({ passthrough: true }) response: Response, // passthrough: true - позволяет использовать два подхода для ответа: стандартный и с использованием response объекта из express ) { return await this.authService.loginSession(req.user, response); } @UseGuards(JwtAuthGuard) @Post('/refresh') async refresh( @Request() request: ExpressRequest, @Res({ passthrough: true }) response: Response, ) { return await this.authService.refreshToken(request, response); } @Post('/register') @HttpCode(200) async register( @Body() user: RegisterDto, @Res({ passthrough: true }) response: Response, ) { return await this.authService.register(user, response); } @UseGuards(SessionGuard) @Post('/logout') @HttpCode(200) async logout( @Request() request: ExpressRequest, @Res({ passthrough: true }) response: Response, ) { return await this.authService.logout(request, response); } }