All files / server/src/features/kompassi-login kompassiLoginController.ts

100% Statements 18/18
100% Branches 6/6
100% Functions 4/4
100% Lines 18/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65                            42x       20x 1x     19x         42x       29x 1x     28x   28x 28x     42x       20x 20x 20x     42x       8x 1x     7x            
import { Request, Response } from "express";
import {
  PostKompassiLoginRedirectRequest,
  PostKompassiLoginRequest,
  PostVerifyKompassiLoginRequest,
} from "shared/types/api/login";
import {
  doKompassiLogin,
  getBaseUrl,
  verifyKompassiLogin,
} from "server/features/kompassi-login/kompassiLoginService";
import { getAuthUrl } from "server/features/kompassi-login/kompassiLoginUtils";
import { getAuthUsername } from "server/middleware/requireAuth";
 
export const postKompassiLoginRedirect = (
  req: Request<unknown, unknown, PostKompassiLoginRedirectRequest>,
  res: Response,
): Response => {
  if (!req.headers.origin) {
    return res.sendStatus(422);
  }
 
  return res.status(302).json({
    location: getAuthUrl(req.headers.origin, req.body.state),
  });
};
 
export const postKompassiLoginCallback = async (
  req: Request<unknown, unknown, PostKompassiLoginRequest>,
  res: Response,
): Promise<Response> => {
  if (!req.headers.origin) {
    return res.sendStatus(422);
  }
 
  const { code } = req.body;
 
  const response = await doKompassiLogin(code, req.headers.origin);
  return res.json(response);
};
 
export const postVerifyKompassiLogin = async (
  req: Request<unknown, unknown, PostVerifyKompassiLoginRequest>,
  res: Response,
): Promise<Response> => {
  const { username } = req.body;
  const response = await verifyKompassiLogin(getAuthUsername(req), username);
  return res.json(response);
};
 
export const postKompassiLogoutRedirect = (
  req: Request,
  res: Response,
): Response => {
  if (!req.headers.origin) {
    return res.sendStatus(422);
  }
 
  return res.status(302).json({
    location: `${getBaseUrl()}/logout?next=${
      req.headers.origin
    }/kompassi-logout-callback`,
  });
};