| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- import express from "express";
- import internalToken from "../internal/token.js";
- import jwtdecode from "../lib/express/jwt-decode.js";
- import apiValidator from "../lib/validator/api.js";
- import { express as logger } from "../logger.js";
- import { getValidationSchema } from "../schema/index.js";
- const router = express.Router({
- caseSensitive: true,
- strict: true,
- mergeParams: true,
- });
- router
- .route("/")
- .options((_, res) => {
- res.sendStatus(204);
- })
- /**
- * GET /tokens
- *
- * Get a new Token, given they already have a token they want to refresh
- * We also piggy back on to this method, allowing admins to get tokens
- * for services like Job board and Worker.
- */
- .get(jwtdecode(), async (req, res, next) => {
- try {
- const data = await internalToken.getFreshToken(res.locals.access, {
- expiry: typeof req.query.expiry !== "undefined" ? req.query.expiry : null,
- scope: typeof req.query.scope !== "undefined" ? req.query.scope : null,
- });
- res.status(200).send(data);
- } catch (err) {
- logger.debug(`${req.method.toUpperCase()} ${req.path}: ${err}`);
- next(err);
- }
- })
- /**
- * POST /tokens
- *
- * Create a new Token
- */
- .post(async (req, res, next) => {
- try {
- const data = await apiValidator(getValidationSchema("/tokens", "post"), req.body);
- const result = await internalToken.getTokenFromEmail(data);
- res.status(200).send(result);
- } catch (err) {
- logger.debug(`${req.method.toUpperCase()} ${req.path}: ${err}`);
- next(err);
- }
- });
- export default router;
|