From a865789efa1f81b3cfbe499385adb34a0b124355 Mon Sep 17 00:00:00 2001 From: Sergey Elpashev Date: Tue, 2 Jul 2024 15:31:59 +0300 Subject: [PATCH] feat: auth --- .env.example | 2 + .gitignore | 3 +- .prettierignore | 1 + .prettierrc | 15 +- .vscode/settings.json | 1 + backend/bun.lockb | Bin 0 -> 306037 bytes backend/config/index.ts | 49 +++--- backend/libs/database/web_user.entity.ts | 16 ++ backend/libs/libs.module.ts | 25 +-- backend/package.json | 158 +++++++++--------- backend/src/modules/auth/auth.controller.ts | 48 ++++++ backend/src/modules/auth/auth.guard.ts | 57 +++---- backend/src/modules/auth/auth.module.ts | 27 ++- backend/src/modules/auth/auth.service.ts | 51 +++++- backend/src/modules/auth/dto/login.dto.ts | 6 + .../src/modules/auth/http-bearer.strategy.ts | 18 -- .../src/modules/auth/strategy/jwt.strategy.ts | 21 +++ backend/src/swagger.ts | 17 +- bun.lockb | Bin 0 -> 10487 bytes docker-compose.yml | 27 ++- package.json | 1 + 21 files changed, 342 insertions(+), 201 deletions(-) create mode 100644 .prettierignore create mode 100755 backend/bun.lockb create mode 100644 backend/libs/database/web_user.entity.ts create mode 100644 backend/src/modules/auth/auth.controller.ts create mode 100644 backend/src/modules/auth/dto/login.dto.ts delete mode 100644 backend/src/modules/auth/http-bearer.strategy.ts create mode 100644 backend/src/modules/auth/strategy/jwt.strategy.ts create mode 100755 bun.lockb create mode 100644 package.json diff --git a/.env.example b/.env.example index e1a754a..be1e1b2 100644 --- a/.env.example +++ b/.env.example @@ -7,3 +7,5 @@ DATABASE_PORT=5432 SERVER_PORT=3000 REDIS_PASSWORD=123 + +JWT_SECRET=secret \ No newline at end of file diff --git a/.gitignore b/.gitignore index 0ffaac4..120c67d 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ # Env files **/.env **/.env.* -!**/.env.example \ No newline at end of file +!**/.env.example +node_modules \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..53c37a1 --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +dist \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index 5368c51..9c24287 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,9 +1,10 @@ { - "singleQuote": true, - "trailingComma": "all", - "semi": true, - "tabWidth": 4, - "printWidth": 150, - "bracketSpacing": true, - "endOfLine": "lf" + "arrowParens": "always", + "printWidth": 100, + "singleQuote": false, + "trailingComma": "all", + "tabWidth": 2, + "useTabs": false, + "semi": true, + "bracketSpacing": true } diff --git a/.vscode/settings.json b/.vscode/settings.json index c4f402b..2b335b6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -10,6 +10,7 @@ "**/node_modules": true }, "editor.formatOnSave": true, + "editor.tabSize": 2, "editor.defaultFormatter": "esbenp.prettier-vscode", "[dockercompose]": { "editor.insertSpaces": true, diff --git a/backend/bun.lockb b/backend/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..79b44cf94ebb7b72421bbe88968c347a3bda88b6 GIT binary patch literal 306037 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 dR+NYZdm8y*b^4}H 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%0D_-2E5xfc}&SvjZ(B`1{e)xX-8lp$ACz(5 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'allowUnauthorizedRequest', context.getHandler()); +// async canActivate(context: ExecutionContext): Promise { +// const request = context.switchToHttp().getRequest(); +// const token = this.extractTokenFromHeader(request); +// if (!token) { +// throw new UnauthorizedException(); +// } +// try { +// const payload = await this.jwtService.verifyAsync(token, { +// secret: config.auth.jwt_secret, +// }); - let token = this.extractTokenFromHeader(request.headers); +// request["user"] = payload; +// } catch { +// throw new UnauthorizedException(); +// } - if (!token) { - token = request.query.access_token || request.body.access_token; - } - if (allowUnauthorizedRequest || this.authService.authUserByToken(token)) return true; - throw new UnauthorizedException('Unathorized!'); - } +// return true; +// } - private extractTokenFromHeader(headers: any): string | null { - if (headers && headers.authorization) { - const authHeader = headers.authorization as string; - const headerParts = authHeader.split(' '); - - if (headerParts.length === 2 && headerParts[0].toLowerCase() === 'bearer') { - return headerParts[1]; - } - } - return null; - } -} +// private extractTokenFromHeader(request: Request): string | undefined { +// const [type, token] = request.headers.authorization.split(" ") ?? []; +// return type === "Bearer" ? token : undefined; +// } +// } diff --git a/backend/src/modules/auth/auth.module.ts b/backend/src/modules/auth/auth.module.ts index 7d044f2..57b156f 100644 --- a/backend/src/modules/auth/auth.module.ts +++ b/backend/src/modules/auth/auth.module.ts @@ -1,11 +1,24 @@ -import { Module } from '@nestjs/common'; -import { PassportModule } from '@nestjs/passport'; -import { AuthService } from './auth.service'; -import { HttpBearerStrategy } from './http-bearer.strategy'; +import { Module } from "@nestjs/common"; +import { JwtModule } from "@nestjs/jwt"; +import { PassportModule } from "@nestjs/passport"; +import { LibsModule } from "libs/libs.module"; +import { config } from "../../../config"; +import { AuthController } from "./auth.controller"; +import { AuthService } from "./auth.service"; +import { JwtStrategy } from "./strategy/jwt.strategy"; @Module({ - imports: [PassportModule.register({ defaultStrategy: 'bearer' })], - providers: [HttpBearerStrategy, AuthService], - exports: [HttpBearerStrategy, AuthService], + imports: [ + LibsModule, + PassportModule, + JwtModule.register({ + secret: config.auth.jwt_secret, + global: true, + signOptions: { expiresIn: 86000 }, + }), + ], + controllers: [AuthController], + providers: [AuthService, JwtStrategy], + exports: [AuthService], }) export class AuthModule {} diff --git a/backend/src/modules/auth/auth.service.ts b/backend/src/modules/auth/auth.service.ts index e8409f4..2a35d64 100644 --- a/backend/src/modules/auth/auth.service.ts +++ b/backend/src/modules/auth/auth.service.ts @@ -1,10 +1,51 @@ -import { Injectable, Logger } from '@nestjs/common'; -import { config } from 'config'; +import { Injectable, Logger, UnauthorizedException } from "@nestjs/common"; +import { JwtService } from "@nestjs/jwt"; +import { InjectRepository } from "@nestjs/typeorm"; +import * as bcrypt from "bcrypt"; +import { WebUser } from "libs/database/web_user.entity"; +import { Repository } from "typeorm"; @Injectable() export class AuthService { - private readonly logger: Logger = new Logger(AuthService.name); - authUserByToken(token: string) { - return token === config.server.access_token; + private readonly logger: Logger = new Logger(AuthService.name); + constructor( + @InjectRepository(WebUser) private userRepository: Repository, + private jwtService: JwtService, + ) {} + + async signIn(username: string, pass: string): Promise<{ access_token: string }> { + const user = await this.userRepository.findOne({ where: { login: username } }); + if (!user) throw new UnauthorizedException("User not found"); + const isMatch = await bcrypt.compare(pass, user.password); + if (!isMatch) throw new UnauthorizedException("Wrong password"); + const payload = { sub: user.uuid, username: user.login }; + this.logger.log(`User ${user.login} logged in`); + return { access_token: await this.jwtService.signAsync(payload) }; + } + + async validateUserJwt(uuid: string): Promise { + const user = await this.userRepository.findOneBy({ uuid: uuid }); + if (!user) { + throw new UnauthorizedException("User not found"); } + return { + login: user.login, + telegram_id: user.telegram_id, + }; + } + + async register(username: string, password: string): Promise<{ access_token: string }> { + const user = await this.userRepository.findOne({ where: { login: username } }); + if (user) throw new UnauthorizedException("User already exists"); + const salt = await bcrypt.genSalt(); + const hash = await bcrypt.hash(password, salt); + const newUser = this.userRepository.create({ + login: username, + password: hash, + }); + await this.userRepository.save(newUser); + this.logger.log(`User ${username} registered`); + const payload = { sub: newUser.uuid, username: newUser.login }; + return { access_token: await this.jwtService.signAsync(payload) }; + } } diff --git a/backend/src/modules/auth/dto/login.dto.ts b/backend/src/modules/auth/dto/login.dto.ts new file mode 100644 index 0000000..2876373 --- /dev/null +++ b/backend/src/modules/auth/dto/login.dto.ts @@ -0,0 +1,6 @@ +import { ApiProperty } from "@nestjs/swagger"; + +export class LoginDto { + @ApiProperty({ description: "User name", example: "test" }) readonly username: string; + @ApiProperty({ description: "User password", example: "test" }) readonly password: string; +} diff --git a/backend/src/modules/auth/http-bearer.strategy.ts b/backend/src/modules/auth/http-bearer.strategy.ts deleted file mode 100644 index fd2aeb1..0000000 --- a/backend/src/modules/auth/http-bearer.strategy.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Injectable, UnauthorizedException } from '@nestjs/common'; -import { PassportStrategy } from '@nestjs/passport'; -import { Strategy } from 'passport-http-bearer'; -import { AuthService } from './auth.service'; -@Injectable() -export class HttpBearerStrategy extends PassportStrategy(Strategy) { - constructor(private readonly authService: AuthService) { - super(); - } - - async validate(token: string): Promise { - const user = await this.authService.authUserByToken(token); - if (!user) { - throw new UnauthorizedException(); - } - return user; - } -} diff --git a/backend/src/modules/auth/strategy/jwt.strategy.ts b/backend/src/modules/auth/strategy/jwt.strategy.ts new file mode 100644 index 0000000..bae8037 --- /dev/null +++ b/backend/src/modules/auth/strategy/jwt.strategy.ts @@ -0,0 +1,21 @@ +import { Injectable, UnauthorizedException } from "@nestjs/common"; +import { PassportStrategy } from "@nestjs/passport"; +import { ExtractJwt, Strategy } from "passport-jwt"; +import { config } from "../../../../config"; +import { AuthService } from "../auth.service"; + +@Injectable() +export class JwtStrategy extends PassportStrategy(Strategy) { + constructor(private authService: AuthService) { + super({ + jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(), + secretOrKey: config.auth.jwt_secret, + }); + } + + async validate(payload: { iat: number; sub: string }): Promise { + const user = await this.authService.validateUserJwt(payload.sub); + if (!user) throw new UnauthorizedException(); + return user; + } +} diff --git a/backend/src/swagger.ts b/backend/src/swagger.ts index b206b2b..4b0aabc 100644 --- a/backend/src/swagger.ts +++ b/backend/src/swagger.ts @@ -1,9 +1,14 @@ -import { INestApplication } from '@nestjs/common'; -import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; +import { INestApplication } from "@nestjs/common"; +import { DocumentBuilder, SwaggerModule } from "@nestjs/swagger"; export function swagger(app: INestApplication): INestApplication { - const config = new DocumentBuilder().setTitle('Neuro website').setDescription('Some description').setVersion('0.1').build(); - const document = SwaggerModule.createDocument(app, config); - SwaggerModule.setup('api', app, document); - return app; + const config = new DocumentBuilder() + .setTitle("Neuro website") + .setDescription("Some description") + .setVersion("0.1") + .addBearerAuth() + .build(); + const document = SwaggerModule.createDocument(app, config); + SwaggerModule.setup("api", app, document); + return app; } diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..8c6baaaa34f8ceb22c5edeec52da24c53e50eb50 GIT binary patch literal 10487 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 literal 0 HcmV?d00001 diff --git a/docker-compose.yml b/docker-compose.yml index 2f19540..fbd6b7d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -49,20 +49,19 @@ services: depends_on: - db restart: always - - bot: - container_name: neuro_bot - build: ./neuro-reply-bot-reworked - environment: - - API_URL=http://backend:3000 - - TZ=Europe/Moscow - - REDIS_HOST=redis - networks: - - labnet - depends_on: - - backend - - redis - restart: always + # bot: + # container_name: neuro_bot + # build: ./neuro-reply-bot-reworked + # environment: + # - API_URL=http://backend:3000 + # - TZ=Europe/Moscow + # - REDIS_HOST=redis + # networks: + # - labnet + # depends_on: + # - backend + # - redis + # restart: always volumes: neuro_postgres_db: diff --git a/package.json b/package.json new file mode 100644 index 0000000..5e4cc93 --- /dev/null +++ b/package.json @@ -0,0 +1 @@ +{ "dependencies": { "@nestjs/jwt": "^10.2.0" } } \ No newline at end of file