import { Request, Response, Router } from "express" import Stacker from "../middlewares/stacker"; import { GetClientAuthMiddleware } from "../middlewares/client"; import { GetUserMiddleware } from "../middlewares/user"; import { createJWT } from "../../keys"; const ClientRouter = Router(); /** * @api {get} /client/user * @apiParam {String} redirect_uri URL to redirect to on success * @apiParam {String} state A optional state, that will be included in the JWT and redirect_uri as parameter * * @apiName ClientUser * @apiGroup client * * @apiPermission user_client Requires ClientID and Authenticated User */ ClientRouter.get("/user", Stacker(GetClientAuthMiddleware(false), GetUserMiddleware(true, false), async (req: Request, res: Response) => { let { redirect_uri, state } = req.query; let jwt = await createJWT({ client: req.client.client_id, uid: req.user.uid, username: req.user.username, state: state }, 30); //after 30 seconds this token is invalid res.redirect(redirect_uri + "?jwt=" + jwt + (state ? `&state=${state}` : "")); })); export default ClientRouter;