From 6f309d5390a34a4fefe1c748be64fbe5c74c5dfe Mon Sep 17 00:00:00 2001 From: Bivekich Date: Wed, 6 Aug 2025 05:08:49 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D1=83?= =?UTF-8?q?=20CORS=20=D0=B4=D0=BB=D1=8F=20=D0=B2=D0=B7=D0=B0=D0=B8=D0=BC?= =?UTF-8?q?=D0=BE=D0=B4=D0=B5=D0=B9=D1=81=D1=82=D0=B2=D0=B8=D1=8F=20=D1=81?= =?UTF-8?q?=20=D1=84=D1=80=D0=BE=D0=BD=D1=82=D0=B5=D0=BD=D0=B4=D0=BE=D0=BC?= =?UTF-8?q?=20=D0=B8=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82=D1=8C=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D1=83=D1=80=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8E=20JWT=20=D0=B4=D0=BB=D1=8F=20=D0=B8=D1=81=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?ConfigService?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/main.ts | 10 ++++++++++ backend/src/modules/auth/auth.module.ts | 13 ++++++++++--- backend/src/modules/auth/strategies/jwt.strategy.ts | 8 ++++++-- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/backend/src/main.ts b/backend/src/main.ts index f76bc8d..dc53af1 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -3,6 +3,16 @@ import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); + + // Настройка CORS для работы с фронтендом + app.enableCors({ + origin: true, // В разработке разрешаем все источники + credentials: true, + allowedHeaders: ['Content-Type', 'Authorization'], + methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], + }); + await app.listen(process.env.PORT ?? 3000); + console.log(`Application is running on: http://localhost:${process.env.PORT ?? 3000}/graphql`); } bootstrap(); diff --git a/backend/src/modules/auth/auth.module.ts b/backend/src/modules/auth/auth.module.ts index f11f858..6cb8edb 100644 --- a/backend/src/modules/auth/auth.module.ts +++ b/backend/src/modules/auth/auth.module.ts @@ -1,6 +1,7 @@ import { Module } from '@nestjs/common'; import { JwtModule } from '@nestjs/jwt'; import { PassportModule } from '@nestjs/passport'; +import { ConfigModule, ConfigService } from '@nestjs/config'; import { AuthService } from './auth.service'; import { AuthResolver } from './auth.resolver'; import { JwtStrategy } from './strategies/jwt.strategy'; @@ -10,9 +11,15 @@ import { UsersModule } from '../users/users.module'; imports: [ UsersModule, PassportModule, - JwtModule.register({ - secret: process.env.JWT_SECRET || 'secret', - signOptions: { expiresIn: process.env.JWT_EXPIRATION || '7d' }, + JwtModule.registerAsync({ + imports: [ConfigModule], + useFactory: async (configService: ConfigService) => ({ + secret: configService.get('JWT_SECRET') || 'secret', + signOptions: { + expiresIn: configService.get('JWT_EXPIRATION') || '7d' + }, + }), + inject: [ConfigService], }), ], providers: [AuthService, AuthResolver, JwtStrategy], diff --git a/backend/src/modules/auth/strategies/jwt.strategy.ts b/backend/src/modules/auth/strategies/jwt.strategy.ts index 21307c6..5ea14bf 100644 --- a/backend/src/modules/auth/strategies/jwt.strategy.ts +++ b/backend/src/modules/auth/strategies/jwt.strategy.ts @@ -1,15 +1,19 @@ import { ExtractJwt, Strategy } from 'passport-jwt'; import { PassportStrategy } from '@nestjs/passport'; import { Injectable } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; import { UsersService } from '../../users/users.service'; @Injectable() export class JwtStrategy extends PassportStrategy(Strategy) { - constructor(private usersService: UsersService) { + constructor( + private usersService: UsersService, + private configService: ConfigService, + ) { super({ jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(), ignoreExpiration: false, - secretOrKey: process.env.JWT_SECRET || 'secret', + secretOrKey: configService.get('JWT_SECRET') || 'secret', }); }