32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import { Inject, Injectable, Request, Scope } from '@nestjs/common';
|
|
import { UsersSession } from '../entities/user-sessions.interface';
|
|
import { REQUEST } from '@nestjs/core';
|
|
import { SessionService } from '../services/session.service';
|
|
|
|
@Injectable({ scope: Scope.REQUEST })
|
|
export class UserProvider {
|
|
constructor(
|
|
@Inject(REQUEST) private readonly request: Request,
|
|
private readonly session: SessionService,
|
|
) {}
|
|
get user(): UsersSession {
|
|
/**
|
|
* There is no Token validation here
|
|
* Because, the token should be available and active here
|
|
*
|
|
* If this function throw an error
|
|
* rather you trying to call user from function that use `@Unprotected` decorator
|
|
* or you forget to set scope to `Scope.REQUEST` from app.module.
|
|
*
|
|
* Please check the token validation at JWTGuard (core/domain/jwt.guard.ts)
|
|
*/
|
|
const [, token] = this.request.headers['authorization'].split(' ');
|
|
return this.session.verifyToken(token);
|
|
}
|
|
|
|
get token(): string {
|
|
const [, token] = this.request.headers['authorization'].split(' ');
|
|
return token;
|
|
}
|
|
}
|