register.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import { User, Syslog, Permission } from '../database/models.js';
  2. import bcrypt from 'bcrypt';
  3. let SECRET = process.env.SECRET || "MrWiskers"
  4. export const Register = function(req,res){
  5. if(req.session.user){
  6. res.redirect("/logout");
  7. } else {
  8. res.render("register",{
  9. "error":"",
  10. });
  11. }
  12. }
  13. export const submitRegister = async function(req,res){
  14. let { name, username, email, password, confirmPassword, secret } = req.body;
  15. email = email.toLowerCase();
  16. if (secret != SECRET) {
  17. const syslog = await Syslog.create({
  18. user: username,
  19. email: email,
  20. event: "Failed Registration",
  21. message: "Invalid secret",
  22. ip: req.socket.remoteAddress
  23. });
  24. }
  25. if((name && email && password && confirmPassword && username) && (secret == SECRET) && (password == confirmPassword)){
  26. async function userRole () {
  27. let userCount = await User.count();
  28. if(userCount == 0){
  29. return "admin";
  30. }else{
  31. return "user";
  32. }
  33. }
  34. let existingUser = await User.findOne({ where: {email:email}});
  35. if(!existingUser){
  36. try {
  37. let currentDate = new Date();
  38. let newLogin = currentDate.toLocaleString();
  39. const user = await User.create({
  40. name: name,
  41. username: username,
  42. email: email,
  43. password: bcrypt.hashSync(password,10),
  44. role: await userRole(),
  45. group: 'all',
  46. lastLogin: newLogin,
  47. });
  48. // make sure the user was created and get the UUID.
  49. let newUser = await User.findOne({ where: {email:email}});
  50. let match = await bcrypt.compare(password,newUser.password);
  51. if(match){
  52. req.session.user = newUser.username;
  53. req.session.UUID = newUser.UUID;
  54. req.session.role = newUser.role;
  55. const permission = await Permission.create({
  56. user: newUser.username,
  57. userID: newUser.UUID
  58. });
  59. const syslog = await Syslog.create({
  60. user: req.session.user,
  61. email: email,
  62. event: "Successful Registration",
  63. message: "User registered successfully",
  64. ip: req.socket.remoteAddress
  65. });
  66. res.redirect("/dashboard");
  67. }
  68. } catch(err) {
  69. res.render("register",{
  70. "error":"Something went wrong when creating account.",
  71. });
  72. }
  73. } else {
  74. // return an error.
  75. res.render("register",{
  76. "error":"User with that email already exists.",
  77. });
  78. }
  79. } else {
  80. // Redirect to the signup page.
  81. res.render("register",{
  82. "error":"Please fill in all the fields.",
  83. });
  84. }
  85. }