35 lines
1.3 KiB
TypeScript
35 lines
1.3 KiB
TypeScript
|
import { Request, Response } from "express";
|
||
|
import { JWTHelper } from "../helpers/jwtHelper";
|
||
|
import { JWTToken } from "../type/jwtTypes";
|
||
|
import InternalException from "../exceptions/internalException";
|
||
|
import RefreshCommandHandler from "../command/refreshCommandHandler";
|
||
|
import { CreateRefreshCommand, DeleteRefreshCommand } from "../command/refreshCommand";
|
||
|
import UserService from "../service/user/userService";
|
||
|
import speakeasy from "speakeasy";
|
||
|
import UnauthorizedRequestException from "../exceptions/unauthorizedRequestException";
|
||
|
import RefreshService from "../service/refreshService";
|
||
|
import ApiService from "../service/user/apiService";
|
||
|
import ForbiddenRequestException from "../exceptions/forbiddenRequestException";
|
||
|
|
||
|
/**
|
||
|
* @description Check authentication status by token
|
||
|
* @param req {Request} Express req object
|
||
|
* @param res {Response} Express res object
|
||
|
* @returns {Promise<*>}
|
||
|
*/
|
||
|
export async function getAccess(req: Request, res: Response): Promise<any> {
|
||
|
const bearer = req.headers.authorization?.split(" ")?.[1] ?? undefined;
|
||
|
|
||
|
let { expiry } = await ApiService.getByToken(bearer);
|
||
|
|
||
|
if (new Date() > new Date(expiry)) {
|
||
|
throw new ForbiddenRequestException("api token expired");
|
||
|
}
|
||
|
|
||
|
let accessToken = await JWTHelper.buildApiToken(bearer);
|
||
|
|
||
|
res.json({
|
||
|
accessToken,
|
||
|
});
|
||
|
}
|