login.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import { User, Syslog } from '../database/models.js';
  2. import bcrypt from 'bcrypt';
  3. export const Login = function(req,res){
  4. if(req.session.user){
  5. res.redirect("/logout");
  6. }else{
  7. res.render("login",{
  8. "error":"",
  9. });
  10. }
  11. }
  12. export const submitLogin = async function(req,res){
  13. let { email, password } = req.body;
  14. if(email && password){
  15. let existingUser = await User.findOne({ where: {email:email}});
  16. if(existingUser){
  17. let match = await bcrypt.compare(password,existingUser.password);
  18. if(match){
  19. let currentDate = new Date();
  20. let newLogin = currentDate.toLocaleString();
  21. await User.update({lastLogin: newLogin}, {where: {UUID:existingUser.UUID}});
  22. req.session.user = existingUser.username;
  23. req.session.UUID = existingUser.UUID;
  24. req.session.role = existingUser.role;
  25. req.session.avatar = existingUser.avatar;
  26. const syslog = await Syslog.create({
  27. user: req.session.user,
  28. email: email,
  29. event: "Successful Login",
  30. message: "User logged in successfully",
  31. ip: req.socket.remoteAddress
  32. });
  33. if (req.session.role == "admin") {
  34. res.redirect("/");
  35. }
  36. else {
  37. res.redirect("/portal");
  38. }
  39. }else{
  40. const syslog = await Syslog.create({
  41. user: null,
  42. email: email,
  43. event: "Bad Login",
  44. message: "Invalid password",
  45. ip: req.socket.remoteAddress
  46. });
  47. res.render("login",{
  48. "error":"Invalid password",
  49. });
  50. }
  51. }else{
  52. res.render("login",{
  53. "error":"User with that email does not exist.",
  54. });
  55. }
  56. }else{
  57. res.status(400);
  58. res.render("login",{
  59. "error":"Please fill in all the fields.",
  60. });
  61. }
  62. }
  63. export const Logout = function(req,res){
  64. req.session.destroy(() => {
  65. res.redirect("/login");
  66. });
  67. }