* feat: infra token module added * feat: infra token guard added * feat: token prefix removed * feat: get pending invites api added * docs: swagger doc added for get user invites api * feat: delete user invitation api added * feat: get users api added * feat: update user api added * feat: update admin status api added * feat: create invitation api added * chore: swagger doc update for create user invite * feat: interceptor added to track last used on * feat: change db schema * chore: readonly tag added * feat: get user by id api added * fix: return type of a function * feat: controller name change * chore: improve token extractino * chore: added email validation logic --------- Co-authored-by: Balu Babu <balub997@gmail.com>
31 lines
881 B
TypeScript
31 lines
881 B
TypeScript
import {
|
|
BadRequestException,
|
|
CallHandler,
|
|
ExecutionContext,
|
|
Injectable,
|
|
NestInterceptor,
|
|
} from '@nestjs/common';
|
|
import { Observable } from 'rxjs';
|
|
import { INFRA_TOKEN_NOT_FOUND } from 'src/errors';
|
|
import { InfraTokenService } from 'src/infra-token/infra-token.service';
|
|
|
|
@Injectable()
|
|
export class InfraTokenInterceptor implements NestInterceptor {
|
|
constructor(private readonly infraTokenService: InfraTokenService) {}
|
|
|
|
intercept(context: ExecutionContext, handler: CallHandler): Observable<any> {
|
|
const req = context.switchToHttp().getRequest();
|
|
const authHeader = req.headers.authorization;
|
|
|
|
if (!authHeader || !authHeader.startsWith('Bearer ')) {
|
|
throw new BadRequestException(INFRA_TOKEN_NOT_FOUND);
|
|
}
|
|
|
|
const token = authHeader.split(' ')[1];
|
|
|
|
this.infraTokenService.updateLastUsedOn(token);
|
|
|
|
return handler.handle();
|
|
}
|
|
}
|