Как применить авторизацию ко всему контроллеру, кроме одного метода - PullRequest
0 голосов
/ 18 июня 2019

Я добавил AuthGuard в класс UsersController, но я хочу исключить один метод в этом контроллере из авторизации.

Можно ли исключить один метод из авторизации?

Я добавил свой код ниже:

@UseGuards(AuthGuard('jwt'))
@ApiUseTags('Users')
@Controller('users')
export class UsersController {
  constructor(public service: UsersService) {}
  get base(): CrudController<UsersService, UserEntity> {
    return this;
  }
  @Override()
  async createOne(@ParsedParams() params, @ParsedBody() body: UserEntity) {
    const username = body.username, email = body.email;
    const qb = await getRepository(UserEntity)
    .createQueryBuilder('users')
    .where('users.username = :username', { username })
    .orWhere('users.email = :email', { email });
    const _user = await qb.getOne();
    if (_user) {
      const error = { username: 'username already exists' };
      throw new HttpException({ message: 'Input data validation error', error }, HttpStatus.BAD_REQUEST);
    }
    return this.base.createOneBase(params, body);
  }
  @Post(':id/avatar')
  @UseInterceptors(FileInterceptor('file', {
    storage: multerDiskStorageConfig('users', 'avatar'),
  }))
  async uploadAvatarFile(@Param() params, @UploadedFile() file: any) {
    const userObject = await this.base.service.findOne();
    userObject.avatar = file.path.replace(PUBLIC_ROOT_PATH, '');
    return this.base.updateOneBase(params, userObject);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...