login.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. res.redirect("/");
  34. }else{
  35. const syslog = await Syslog.create({
  36. user: null,
  37. email: email,
  38. event: "Bad Login",
  39. message: "Invalid password",
  40. ip: req.socket.remoteAddress
  41. });
  42. res.render("login",{
  43. "error":"Invalid password",
  44. });
  45. }
  46. }else{
  47. res.render("login",{
  48. "error":"User with that email does not exist.",
  49. });
  50. }
  51. }else{
  52. res.status(400);
  53. res.render("login",{
  54. "error":"Please fill in all the fields.",
  55. });
  56. }
  57. }