register.js 3.0 KB

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