login.js 2.0 KB

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