backend/src/tokens/guards/token.guard.ts   A
last analyzed

Complexity

Total Complexity 3
Complexity/F 3

Size

Lines of Code 25
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 20
dl 0
loc 25
ccs 12
cts 12
cp 1
rs 10
c 0
b 0
f 0
wmc 3
mnd 2
bc 2
fnc 1
bpm 2
cpm 3
noi 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A TokenGuard.canActivate 0 15 3
1 9
import { Injectable, CanActivate, ExecutionContext, UnauthorizedException } from '@nestjs/common';
2 9
import { TokensService } from '../tokens.service';
3
4
@Injectable()
5 9
export class TokenGuard implements CanActivate {
6 20
  constructor(private tokensService: TokensService) {}
7
8
  async canActivate(context: ExecutionContext): Promise<boolean> {
9 3
    const request = context.switchToHttp().getRequest<Request>();
10
11 3
    const tokenId = request.headers['x-api-token'];
12
13 3
    if (!tokenId) {
14 1
      throw new UnauthorizedException('Token is required');
15
    }
16
17 2
    try {
18 2
      await this.tokensService.consume(tokenId);
19 1
      return true;
20
    } catch (error) {
21 1
      throw new UnauthorizedException(error.message);
22
    }
23
  }
24
}
25