| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 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('/', (req: express.Request, res: express.Response) => {
- let redir = extractRedirection(req);
- (requestIsPost(req) ?
- (Security.TryLogin(req.mSession, req.body["username"], req.body["password"]).then(_ => {
- SessionManager.Write(res, req.mSession);
- res.redirect(302, redir);
- }).catch(_ => Promise.resolve(true))) : Promise.resolve(false))
- .then(loginFailed => {
- res.render('login', {
- username: req.mSession.GetUsername(),
- failed: loginFailed,
- redirect: redir
- });
- });
- });
- export default router;
|