Files
hoppscotch/packages/hoppscotch-backend/src/interceptors/infra-token.interceptor.ts
Mir Arif Hasan 783d911f8d HSB-462 feat: infra token module and sh apis (#4191)
* 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>
2024-07-29 12:36:18 +05:30

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();
}
}