Добавлена работа с пользователями по всем методам, добавлена авторизация пользователей
This commit is contained in:
80
src/auth/auth.controller.ts
Normal file
80
src/auth/auth.controller.ts
Normal file
@ -0,0 +1,80 @@
|
||||
import {Controller, Req, Post, Options, Header, HttpCode} from '@nestjs/common';
|
||||
|
||||
import {ApiResponse, ApiTags, ApiBody} from '@nestjs/swagger';
|
||||
import {ALLOW_ORIGIN_ALL, ALLOW_METHOD, ALLOW_CREDENTIALS, CONTENT_LENGTH, ALLOW_HEADERS, AUTH_CONTROLLER} from '../consts';
|
||||
import {UserService} from '../users/users.service';
|
||||
import {AuthRequest, TokenResponse, RefreshAuthRequest, CheckAuthTokenRequest} from '../users/users.schema';
|
||||
import {Request} from 'express';
|
||||
|
||||
|
||||
@Controller(AUTH_CONTROLLER)
|
||||
@ApiTags(AUTH_CONTROLLER)
|
||||
export class AuthController {
|
||||
constructor(
|
||||
private readonly userService: UserService
|
||||
) {}
|
||||
|
||||
@Post()
|
||||
@Header(...ALLOW_ORIGIN_ALL)
|
||||
@ApiResponse({
|
||||
status: 201,
|
||||
description: 'Метод авторизации пользователя',
|
||||
type: TokenResponse,
|
||||
})
|
||||
@ApiBody({
|
||||
type: AuthRequest,
|
||||
description: 'Ожидает логин и пароль пользователя для авторизации'
|
||||
})
|
||||
async authUser(@Req() request: Request<null, AuthRequest>): Promise<TokenResponse> {
|
||||
const host = request.headers.host;
|
||||
const agent = request.headers['user-agent'];
|
||||
return await this.userService.authUser(request.body.login, request.body.password, host, agent);
|
||||
}
|
||||
|
||||
@Post('refresh')
|
||||
@Header(...ALLOW_ORIGIN_ALL)
|
||||
@ApiResponse({
|
||||
status: 201,
|
||||
description: 'Метод обновления токенов',
|
||||
type: TokenResponse,
|
||||
})
|
||||
@ApiBody({
|
||||
type: RefreshAuthRequest,
|
||||
description: 'Токен для сброса токенов'
|
||||
})
|
||||
async refreshAuth(@Req() request: Request<null, RefreshAuthRequest>): Promise<TokenResponse> {
|
||||
const host = request.headers.host;
|
||||
const agent = request.headers['user-agent'];
|
||||
const refresh_token = request.body.refresh_token;
|
||||
return await this.userService.refreshAuth(refresh_token, host, agent);
|
||||
}
|
||||
|
||||
@Post('check')
|
||||
@ApiResponse({
|
||||
status: 200,
|
||||
description: 'Проверяет токен авторизации',
|
||||
type: Boolean,
|
||||
})
|
||||
@ApiBody({
|
||||
type: CheckAuthTokenRequest,
|
||||
description: 'Токен для проверки',
|
||||
})
|
||||
async checkAccessToken(@Req() request: Request<null, CheckAuthTokenRequest>): Promise<boolean> {
|
||||
const {access_token, host, agent} = request.body;
|
||||
console.log(request.headers)
|
||||
return this.userService.checkAccessToken(access_token, host, agent);
|
||||
}
|
||||
|
||||
@Options([
|
||||
'', 'refresh', 'check'
|
||||
])
|
||||
@Header(...ALLOW_ORIGIN_ALL)
|
||||
@Header(...ALLOW_METHOD)
|
||||
@Header(...ALLOW_CREDENTIALS)
|
||||
@Header(...CONTENT_LENGTH)
|
||||
@Header(...ALLOW_HEADERS)
|
||||
@HttpCode(204)
|
||||
async optionsAuth(): Promise<string> {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user