Total Complexity | 2 |
Complexity/F | 2 |
Lines of Code | 25 |
Function Count | 1 |
Duplicated Lines | 0 |
Ratio | 0 % |
Changes | 0 |
1 | import { Strategy } from 'passport-http-bearer'; |
||
2 | import { PassportStrategy } from '@nestjs/passport'; |
||
3 | import { Injectable, UnauthorizedException, Inject } from '@nestjs/common'; |
||
4 | import { IUserRepository } from 'src/Domain/User/Repository/IUserRepository'; |
||
5 | import { UserAuthView } from './UserAuthView'; |
||
6 | |||
7 | @Injectable() |
||
8 | export class BearerStrategy extends PassportStrategy(Strategy, 'bearer') { |
||
9 | constructor( |
||
10 | @Inject('IUserRepository') |
||
11 | private readonly userRepository: IUserRepository |
||
12 | ) { |
||
13 | super(); |
||
14 | } |
||
15 | |||
16 | public async validate(token: string): Promise<UserAuthView> { |
||
17 | const user = await this.userRepository.findOneByApiToken(token); |
||
18 | if (!user) { |
||
19 | throw new UnauthorizedException(); |
||
20 | } |
||
21 | |||
22 | return new UserAuthView(user.getId(), user.getRole()); |
||
23 | } |
||
24 | } |
||
25 |