Commit 5bf6d379 authored by Diego Iván's avatar Diego Iván
Browse files

agregando auth user guard

parent 4a02f4e1
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
import { Controller, Get, Req } from '@nestjs/common';
import { Controller, Get, Req, UseGuards } from '@nestjs/common';
import { AdminService } from './admin.service';
import { ApiBearerAuth, ApiTags } from '@nestjs/swagger';
import { ADMIN_ROLES } from 'src/shared/enum/admin-role.enum';
import { Roles } from 'src/auth/role.decorator';
import { CustomAdminRequest } from 'src/auth/admin/interface/customAdminReq';
import { AuthAdminGuard } from 'src/auth/admin/authAdmin.guard';

@Controller('')
@ApiTags('Admin')
export class AdminController {
  constructor(private readonly adminService: AdminService) {}

  @UseGuards(AuthAdminGuard)
  @Roles(ADMIN_ROLES)
  @ApiBearerAuth('jwt')
  @Get('admin/whoami')
+4 −1
Original line number Diff line number Diff line
@@ -4,10 +4,13 @@ import { AdminController } from './admin.controller';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Admin } from './entities/admin.entity';
import { Town } from 'src/town/entities/town.entity';
import { AuthAdminService } from 'src/auth/admin/authAdmin.service';
import { JwtService } from '@nestjs/jwt';
import { EncryptionService } from 'src/auth/encryption/encryption.service';

@Module({
  controllers: [AdminController],
  providers: [AdminService],
  providers: [AdminService, AuthAdminService, JwtService, EncryptionService],
  imports: [TypeOrmModule.forFeature([Admin, Town])],
  exports: [AdminService],
})
+1 −1
Original line number Diff line number Diff line
@@ -65,7 +65,7 @@ import { PlaceTraduction } from './place/entities/place-traduction.entity';
    PointOfInterestModule,
  ],
  controllers: [AppController],
  providers: [AppService, DatabaseSeederModule, { provide: APP_GUARD, useClass: AuthAdminGuard }],
  providers: [AppService, DatabaseSeederModule],
  exports: [TypeOrmModule],
})
export class AppModule {}
+3 −1
Original line number Diff line number Diff line
import { Body, Controller, Post } from '@nestjs/common';
import { Body, Controller, Post, UseGuards } from '@nestjs/common';
import { AuthAdminService } from './authAdmin.service';
import { CreateAdminDto } from 'src/admin/dto/create-admin.dto';
import { LoginAdminDto } from 'src/auth/admin/dto/login-admin.dto';
@@ -6,6 +6,7 @@ import { ApiBearerAuth, ApiBody, ApiCreatedResponse, ApiTags, ApiUnauthorizedRes
import { AdminSigninResDto } from './dto/admin-signin-res.dto';
import { Roles } from '../role.decorator';
import { ADMIN_ROLE, SUPERADMIN_ROLES } from 'src/shared/enum/admin-role.enum';
import { AuthAdminGuard } from './authAdmin.guard';

@Controller()
@ApiTags('Create admin account and sign in as admin')
@@ -22,6 +23,7 @@ export class AuthAdminController {
      },
    },
  })
  @UseGuards(AuthAdminGuard)
  @Roles(SUPERADMIN_ROLES)
  @Post('admin/signup')
  @ApiBearerAuth('jwt')
+21 −0
Original line number Diff line number Diff line
import { CanActivate, ExecutionContext, Injectable, UnauthorizedException } from '@nestjs/common';
import { UserService } from 'src/user/user.service';
import { AuthUserService } from './authUserservice';

@Injectable()
export class AuthUserGuard implements CanActivate {
  constructor(
    private authUserService: AuthUserService,
    private userService: UserService,
  ) {}
  async canActivate(context: ExecutionContext): Promise<boolean> {
    const request = context.switchToHttp().getRequest();
    let { authorization }: any = request.headers;
    if (!authorization) throw new UnauthorizedException('session expired! Please sign In');
    authorization = authorization.split(' ')[1];
    const jwtPayload = await this.authUserService.validateToken(authorization);
    const user = await this.userService.findOne(jwtPayload.email);
    request.user = { ...user };
    return true;
  }
}
Loading