| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import express = require('express');
- import Security from '../src/Security';
- import { SessionManager } from '../src/Session';
- const router = express.Router();
- function requestIsPost(req: express.Request): boolean {
- return req.method.toUpperCase() === 'POST' &&
- req.body["redirect"] &&
- req.body["username"] &&
- req.body["password"] !== undefined;
- }
- function extractRedirection(req: express.Request): string {
- let redir: string | undefined = undefined;
- if (requestIsPost(req))
- redir = req.body["redirect"] || undefined;
- if (!redir && req.query["redirect"]) {
- if (Array.isArray(req.query["redirect"]))
- redir = req.query["redirect"][0].toString() || undefined;
- else
- redir = req.query["redirect"]?.toString() || undefined;
- }
- return redir || "/";
- }
- router.all('/', async (req: express.Request, res: express.Response) => {
- let redir = extractRedirection(req);
- let loginFailed = false;
- if (requestIsPost(req)) {
- try {
- await Security.TryLogin(req.mSession, req.body["username"], req.body["password"]);
- }
- catch (err) {
- loginFailed = true;
- }
- if (!loginFailed) {
- SessionManager.Write(res, req.mSession);
- res.redirect(302, redir);
- return;
- }
- }
- res.render('login', {
- username: req.mSession.GetUsername(),
- failed: loginFailed,
- redirect: redir
- });
- });
- export default router;
|