@ducvnv/mirai-cms-role
Version:
<p align="center"> <a href="https://mirailabs.co/" target="blank"><img src="https://mirailabs.co/_next/static/media/logo.2a6685c4.svg" width="120" alt="Nest Logo" /></a> </p>
46 lines (39 loc) • 1.45 kB
text/typescript
import {env} from "../../index";
import API from '../api/service.api';
import {bodyRequestPermission} from '../model/requests/body.request.permission';
import {CanActivate, ExecutionContext, Injectable} from '@nestjs/common';
import {ResponseModel} from "../model/responses/api.response";
()
export class AuthGuard implements CanActivate {
async canActivate(context: ExecutionContext): Promise<boolean> {
const request = context.switchToHttp().getRequest();
const path = request.route.path;
const payload = request.body;
const token = this.getToken(request);
if (!token) {
return false;
}
return await this.auth(path, token, payload);
}
private async auth(_path: any, token: any, payload: any): Promise<boolean> {
try{
const body = {
pathRouter: _path,
payload: payload,
} as bodyRequestPermission;
const result = await API.postApi(env.PERMISSION_URL, body, token, env.KEY_SERVICE) as ResponseModel;
console.log(result.data)
return result.data;
}catch (e){
console.log(`[Error] Auth log : ${e}`)
return false;
}
}
private getToken(request: any) {
try {
return request.headers['authorization'].replace('Bearer ', '');
} catch (e) {
return false;
}
}
}