This commit is contained in:
2025-09-12 13:18:11 -04:00
parent e646597c7a
commit 873f34164f
12 changed files with 56 additions and 127 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 };
}
}
+10 -4
View File
@@ -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;
}
}
+6 -4
View File
@@ -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 { }