summaryrefslogtreecommitdiff
path: root/server/providers/services/jwt.service.ts
blob: ac7f3597538587f4ced38db2a98bab7958df0a28 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { HttpException, Injectable } from '@nestjs/common';
import * as jwt from 'jsonwebtoken';
import { JwtBodyDto } from 'server/dto/jwt_body.dto';
import { RefreshTokenBody } from 'server/dto/refresh_token_body.dto';

@Injectable()
export class JwtService {
  issueToken(body: JwtBodyDto | RefreshTokenBody, expiresIn = '15m', key = process.env.ENCRYPTION_KEY): string {
    return jwt.sign(body, key, { expiresIn });
  }

  issueRefreshToken(body: RefreshTokenBody) {
    return this.issueToken(body, '1y', process.env.REFRESH_ENCRYPTION_KEY);
  }

  parseToken(token: string, key = process.env.ENCRYPTION_KEY): JwtBodyDto | RefreshTokenBody {
    try {
      return jwt.verify(token, key);
    } catch (e) {
      throw new HttpException('Invalid jwt token', 401);
    }
  }

  parseRefreshToken(token: string) {
    return this.parseToken(token, process.env.REFRESH_ENCRYPTION_KEY);
  }
}