Guest User

Untitled

a guest
Nov 1st, 2018
325
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. const mongoose = require('mongoose');
  2. const jwt = require('jsonwebtoken');
  3. const config = require('config');
  4.  
  5. const User = require('../model/user');
  6.  
  7. const signUp = async (req, res) => {
  8. try {
  9. // You may remove this if statement by adding data validation layer at routing
  10. if (req.body.username && req.body.email && req.body.password) {
  11. // This code should go in route validation, this is making business logic bloated
  12. if (req.body.password.length < 6) {
  13. return res.status(400).json({
  14. message: 'Your password should be minimum 6 character long!',
  15. });
  16. }
  17.  
  18. const emailCheck = await User.findOne({ email: req.body.email });
  19.  
  20. if (emailCheck) {
  21. return res.status(409).json({
  22. message: 'This email already exists! Please try another.',
  23. });
  24. }
  25.  
  26. const usernameCheck = await User.findOne({ username: req.body.username });
  27.  
  28. if (usernameCheck) {
  29. return res.status(409).json({
  30. message: 'This username already exists! Please try another.',
  31. });
  32. }
  33.  
  34. const user = await new User({
  35. // Mongoose will add _id for you automatically
  36. username: req.body.username,
  37. email: req.body.email,
  38. // Don't forget to hash your password
  39. password: req.body.password,
  40. }).save();
  41.  
  42. if (user) {
  43. const token = jwt.sign(
  44. {
  45. username: req.body.username,
  46. userId: user._id,
  47. },
  48. config.get('secret'),
  49. {
  50. expiresIn: 60 * 60,
  51. },
  52. );
  53.  
  54. return res.status(201).json({
  55. message: 'User created successfully!',
  56. user,
  57. token,
  58. });
  59. }
  60. }
  61.  
  62. return res.status(400).json({
  63. message:
  64. 'Seems you entered something invalid, Please provide all nedded information correctly!',
  65. });
  66. } catch (err) {
  67. return res.status(500).json({
  68. message: 'Internal server error',
  69. error: err.message,
  70. });
  71. }
  72. };
Add Comment
Please, Sign In to add comment