Merge branch 'Lino' of https://github.com/IO420/api-nexus into Carlos

This commit is contained in:
2025-09-18 13:43:53 -06:00
45 changed files with 938 additions and 135 deletions
+20
View File
@@ -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 };
}
}
+20 -5
View File
@@ -1,15 +1,30 @@
import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
import {
Controller,
Get,
Post,
Body,
UseGuards,
Request,
Res,
} from '@nestjs/common';
import type { Response } from 'express';
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) {}
@Post()
Login(@Body() user: CreateUserDto) {
return this.userService.Login(user);
async Login(@Body() data: CreateUserDto, @Res() res: Response) {
return this.userService.Login(data, res);
}
@UseGuards(AuthGuard('jwt'))
@Get('/validate-token')
getProfile(@Request() req) {
return req.user;
}
}
//IO
+20 -4
View File
@@ -3,13 +3,29 @@ import { UserService } from './user.service';
import { UserController } from './user.controller';
import { TypeOrmModule } from '@nestjs/typeorm';
import { User } from './entities/user.entity';
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])
imports: [
TypeOrmModule.forFeature([User]),
PassportModule.register({ defaultStrategy: 'jwt' }),
JwtModule.registerAsync({
inject: [ConfigService],
useFactory: async (configService: ConfigService) => {
return {
global: true,
secret: configService.get('JWT_SECRET'),
signOptions: { expiresIn: '1h' },
};
},
}),
],
controllers: [UserController],
providers: [UserService],
providers: [UserService,JwtStrategy],
exports: [UserService],
})
export class UserModule {}
export class UserModule { }
+5 -8
View File
@@ -1,14 +1,10 @@
import {
Injectable,
Logger,
NotFoundException,
UnauthorizedException,
} from '@nestjs/common';
import { Injectable, NotFoundException } from '@nestjs/common';
import { Response } from 'express';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
import { InjectRepository } from '@nestjs/typeorm';
import { User } from './entities/user.entity';
import { Repository } from 'typeorm';
import { JwtService } from '@nestjs/jwt';
@Injectable()
export class UserService {
@@ -32,6 +28,7 @@ export class UserService {
}
async Login(data: CreateUserDto) {
return await this.findOneByNameandPassword(data);
const user = await this.findOneByNameandPassword(data);
return user;
}
}