login.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  2. * GET home page.
  3. */
  4. import express = require('express');
  5. import RouterUtils from '../src/RouterUtils';
  6. import Security from '../src/Security';
  7. import { ILDAPManager } from './../src/ldapInterface';
  8. const route_login = express.Router();
  9. const route_logout = express.Router();
  10. function ManageLogin(req: express.Request, res: express.Response, ldap: ILDAPManager|null, postData: { username: string, password: string }|null) {
  11. let session = Security.GetOrCreateSession(req);
  12. if (session.IsLoggedIn()) {
  13. RouterUtils.Redirect(res, "/");
  14. return;
  15. }
  16. let prevUsername = session.GetPreviousUsername() || "";
  17. if (postData && postData.username && postData.password && postData.username.length && postData.password.length && ldap) {
  18. prevUsername = postData.username;
  19. Security.TryLogin(ldap, postData.username, postData.password).then(user => {
  20. if (user) {
  21. session.Login(user, postData.username);
  22. RouterUtils.Redirect(res, "/");
  23. return;
  24. }
  25. res.render('login', { previousUsername: prevUsername, loginFail: true });
  26. }).catch(() => {
  27. res.render('login', { previousUsername: prevUsername, loginFail: true });
  28. });
  29. } else {
  30. res.render('login', { previousUsername: prevUsername, loginFail: false });
  31. }
  32. }
  33. route_login.get('/', (req: express.Request, res: express.Response) => {
  34. ManageLogin(req, res, null, null);
  35. });
  36. route_login.post('/', (req: express.Request, res: express.Response) => {
  37. req.ldapManager.GetInstance().then(ldap => {
  38. ManageLogin(req, res, ldap, { username: req.body.username, password: req.body.password });
  39. });
  40. });
  41. route_logout.get('/', (req: express.Request, res: express.Response) => {
  42. Security.GetSession(req)?.Logout();
  43. res.clearCookie("sessId");
  44. RouterUtils.Redirect(res, "/");
  45. });
  46. export { route_login };
  47. export { route_logout };