diff --git a/.example b/.example index 34af4b9..b71fadf 100644 --- a/.example +++ b/.example @@ -4,4 +4,5 @@ DB_HOST= DB_PORT= DB_USER= DB_PASSWORD= -DB_NAME= \ No newline at end of file +DB_NAME= +Front_URL= \ No newline at end of file diff --git a/src/app.module.ts b/src/app.module.ts index 30c4c4d..59b8663 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -3,12 +3,16 @@ import { ConfigModule, ConfigService } from '@nestjs/config'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { StudentModule } from './student/student.module'; +import { StudentModule } from './alumno/student.module'; import { UserModule } from './user/user.module'; import { User } from './user/entities/user.entity'; import { DetalleServicioModule } from './detalle_servicio/detalle_servicio.module'; import { PeriodoModule } from './periodo/periodo.module'; import { ServicioModule } from './servicio/servicio.module'; +import { Student } from './alumno/entities/student.entity'; +import { DetalleServicio } from './detalle_servicio/entities/detalle_servicio.entity'; +import { Periodo } from './periodo/entities/periodo.entity'; +import { Servicio } from './servicio/entities/servicio.entity'; @Module({ imports: [ @@ -25,11 +29,12 @@ import { ServicioModule } from './servicio/servicio.module'; username: configService.get('DB_USER'), password: configService.get('DB_PASSWORD'), database: configService.get('DB_NAME'), - entities: [User], - synchronize: false, + entities: [User,Student,DetalleServicio,Periodo,Servicio], + synchronize: false,//Never change to true in production! }), }), UserModule, + StudentModule, DetalleServicioModule, PeriodoModule, ServicioModule, diff --git a/src/detalle_servicio/detalle_servicio.controller.spec.ts b/src/detalle_servicio/detalle_servicio.controller.spec.ts deleted file mode 100644 index 4c4ec1a..0000000 --- a/src/detalle_servicio/detalle_servicio.controller.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { DetalleServicioController } from './detalle_servicio.controller'; -import { DetalleServicioService } from './detalle_servicio.service'; - -describe('DetalleServicioController', () => { - let controller: DetalleServicioController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [DetalleServicioController], - providers: [DetalleServicioService], - }).compile(); - - controller = module.get(DetalleServicioController); - }); - - it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/detalle_servicio/detalle_servicio.service.spec.ts b/src/detalle_servicio/detalle_servicio.service.spec.ts deleted file mode 100644 index 53f1830..0000000 --- a/src/detalle_servicio/detalle_servicio.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { DetalleServicioService } from './detalle_servicio.service'; - -describe('DetalleServicioService', () => { - let service: DetalleServicioService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [DetalleServicioService], - }).compile(); - - service = module.get(DetalleServicioService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/src/main.ts b/src/main.ts index 27f66be..21b52a4 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,11 +1,20 @@ import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import { ValidationPipe } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; async function bootstrap() { const app = await NestFactory.create(AppModule); + const configService = app.get(ConfigService); + app.useGlobalPipes(new ValidationPipe()); - app.enableCors(); + + app.enableCors( + // { + // origin: configService.get('Front_URL'), + // } +); + await app.listen(process.env.PORT ?? 3000); } bootstrap(); diff --git a/src/periodo/periodo.controller.spec.ts b/src/periodo/periodo.controller.spec.ts deleted file mode 100644 index f5eace8..0000000 --- a/src/periodo/periodo.controller.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { PeriodoController } from './periodo.controller'; -import { PeriodoService } from './periodo.service'; - -describe('PeriodoController', () => { - let controller: PeriodoController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [PeriodoController], - providers: [PeriodoService], - }).compile(); - - controller = module.get(PeriodoController); - }); - - it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/periodo/periodo.service.spec.ts b/src/periodo/periodo.service.spec.ts deleted file mode 100644 index be9458e..0000000 --- a/src/periodo/periodo.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { PeriodoService } from './periodo.service'; - -describe('PeriodoService', () => { - let service: PeriodoService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [PeriodoService], - }).compile(); - - service = module.get(PeriodoService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/src/servicio/servicio.controller.spec.ts b/src/servicio/servicio.controller.spec.ts deleted file mode 100644 index fe37ce5..0000000 --- a/src/servicio/servicio.controller.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { ServicioController } from './servicio.controller'; -import { ServicioService } from './servicio.service'; - -describe('ServicioController', () => { - let controller: ServicioController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [ServicioController], - providers: [ServicioService], - }).compile(); - - controller = module.get(ServicioController); - }); - - it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/servicio/servicio.service.spec.ts b/src/servicio/servicio.service.spec.ts deleted file mode 100644 index f18d3c4..0000000 --- a/src/servicio/servicio.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { ServicioService } from './servicio.service'; - -describe('ServicioService', () => { - let service: ServicioService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [ServicioService], - }).compile(); - - service = module.get(ServicioService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/src/user/jwt.strategy.ts b/src/user/jwt.strategy.ts new file mode 100644 index 0000000..ba6d3ae --- /dev/null +++ b/src/user/jwt.strategy.ts @@ -0,0 +1,20 @@ +import { Injectable } from '@nestjs/common'; +import { PassportStrategy } from '@nestjs/passport'; +import { ExtractJwt, Strategy } from 'passport-jwt'; +import { UserService } from './user.service'; +import { ConfigService } from '@nestjs/config'; + +@Injectable() +export class JwtStrategy extends PassportStrategy(Strategy) { + constructor(private configService: ConfigService) { + super({ + jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(), + ignoreExpiration: false, + secretOrKey: configService.get('JWT_SECRET')!, + }); + } + + async validate(payload: any) { + return { userId: payload.id, username: payload.usuario }; + } +} diff --git a/src/user/user.controller.ts b/src/user/user.controller.ts index 2c733ad..c501e83 100644 --- a/src/user/user.controller.ts +++ b/src/user/user.controller.ts @@ -1,15 +1,21 @@ -import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; +import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards, Request } from '@nestjs/common'; import { UserService } from './user.service'; import { CreateUserDto } from './dto/create-user.dto'; -import { UpdateUserDto } from './dto/update-user.dto'; +import { AuthGuard } from '@nestjs/passport'; @Controller('user') export class UserController { - constructor(private readonly userService: UserService) {} + constructor(private readonly userService: UserService) { } @Post() Login(@Body() user: CreateUserDto) { return this.userService.Login(user); } - + + @UseGuards(AuthGuard('jwt')) + @Get('/validate-token') + getProfile(@Request() req) { + return req.user; + } + } diff --git a/src/user/user.module.ts b/src/user/user.module.ts index 653ca0f..ecbeb79 100644 --- a/src/user/user.module.ts +++ b/src/user/user.module.ts @@ -3,11 +3,15 @@ import { UserService } from './user.service'; import { UserController } from './user.controller'; import { TypeOrmModule } from '@nestjs/typeorm'; import { User } from './entities/user.entity'; -import { ConfigModule, ConfigService } from '@nestjs/config'; +import { ConfigService } from '@nestjs/config'; import { JwtModule } from '@nestjs/jwt'; +import { PassportModule } from '@nestjs/passport'; +import { JwtStrategy } from './jwt.strategy'; @Module({ imports: [ + TypeOrmModule.forFeature([User]), + PassportModule.register({ defaultStrategy: 'jwt' }), JwtModule.registerAsync({ inject: [ConfigService], useFactory: async (configService: ConfigService) => { @@ -19,11 +23,9 @@ import { JwtModule } from '@nestjs/jwt'; }, }), - - TypeOrmModule.forFeature([User]) ], controllers: [UserController], - providers: [UserService], + providers: [UserService,JwtStrategy], exports: [UserService], }) export class UserModule { }