Completed
Push — master ( 7c7ab7...45cb8f )
by Mathieu
19s queued 11s
created

server/src/Infrastructure/HumanResource/User/Security/BearerStrategy.ts   A

Complexity

Total Complexity 2
Complexity/F 2

Size

Lines of Code 26
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 21
mnd 1
bc 1
fnc 1
dl 0
loc 26
bpm 1
cpm 2
noi 0
c 0
b 0
f 0
rs 10

1 Function

Rating   Name   Duplication   Size   Complexity  
A BearerStrategy.validate 0 9 2
1
import {Strategy} from 'passport-http-bearer';
2
import {PassportStrategy} from '@nestjs/passport';
3
import {Injectable, UnauthorizedException, Inject} from '@nestjs/common';
4
import {User} from 'src/Domain/HumanResource/User/User.entity';
5
import {IUserRepository} from 'src/Domain/HumanResource/User/Repository/IUserRepository';
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<User> {
17
    const user = await this.userRepository.findOneByApiToken(token);
18
19
    if (!(user instanceof User)) {
20
      throw new UnauthorizedException();
21
    }
22
23
    return user;
24
  }
25
}
26