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