login.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. if (req.isUserLogged)
  12. return RouterUtils.Redirect(res, "/");
  13. let session = Security.GetOrCreateSession(req);
  14. let prevUsername = session.GetPreviousUsername() || "";
  15. if (postData && postData.username && postData.password && postData.username.length && postData.password.length && ldap) {
  16. prevUsername = postData.username;
  17. Security.TryLogin(ldap, postData.username, postData.password).then(user => {
  18. if (user) {
  19. session.Login(user, postData.username);
  20. RouterUtils.Redirect(res, "/");
  21. return;
  22. }
  23. res.render('login', { previousUsername: prevUsername, loginFail: true });
  24. }).catch(() => {
  25. res.render('login', { previousUsername: prevUsername, loginFail: true });
  26. });
  27. } else {
  28. res.render('login', { previousUsername: prevUsername, loginFail: false });
  29. }
  30. }
  31. route_login.get('/', (req: express.Request, res: express.Response) => {
  32. ManageLogin(req, res, null, null);
  33. });
  34. route_login.post('/', (req: express.Request, res: express.Response) => {
  35. req.ldapManager.GetInstance().then(ldap => {
  36. ManageLogin(req, res, ldap, { username: req.body.username, password: req.body.password });
  37. });
  38. });
  39. route_logout.get('/', (req: express.Request, res: express.Response) => {
  40. Security.GetSession(req)?.Logout();
  41. res.clearCookie("sessId");
  42. RouterUtils.Redirect(res, "/");
  43. });
  44. export { route_login };
  45. export { route_logout };