Guest User

Untitled

a guest
Mar 23rd, 2018
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.60 KB | None | 0 0
  1. const jwt = require('jsonwebtoken');
  2. const bcrypt = require('bcryptjs');
  3. const phone = require('phone');
  4.  
  5. const config = require('../auth/config');
  6.  
  7. const {User} = require('../models');
  8.  
  9. module.exports = {
  10. async register(req, res) {
  11. const {
  12. userName,
  13. phoneNumber,
  14. password,
  15. } = req.body;
  16.  
  17. if (!userName || !phoneNumber || !password) {
  18. return res
  19. .status(400)
  20. .send('Fields [userName, phoneNumber, password] are required');
  21. }
  22. console.log('password', password);
  23. phone(phoneNumber)[0] || phoneNumber.replace(/[\(\)\.\-\ \+\x]/g, '');
  24. const clearedTelephoneNumber = phone(phoneNumber)[0];
  25. const hashedPassword = bcrypt.hashSync(password, 8);
  26. console.log(clearedTelephoneNumber);
  27. let user;
  28. try {
  29. user = await User.findOne({
  30. where: {
  31. userName,
  32. },
  33. });
  34. } catch (error) {
  35. return res
  36. .status(400)
  37. .send(error);
  38. }
  39.  
  40. if (!user) {
  41. try {
  42. const createdUser = await User
  43. .create({
  44. userName,
  45. phoneNumber: clearedTelephoneNumber,
  46. password: hashedPassword,
  47. });
  48.  
  49. const token = jwt.sign(
  50. {
  51. user: createdUser.id,
  52. },
  53. config.secret,
  54. {
  55. expiresIn: config.expireTime,
  56. }
  57. );
  58.  
  59. return res
  60. .send(200, {
  61. auth: true,
  62. token,
  63. id: createdUser.id,
  64. userName: createdUser.userName,
  65. });
  66. } catch (error) {
  67. return res
  68. .status(400)
  69. .send(error);
  70. }
  71. } else {
  72. return res.
  73. status(400)
  74. .send('Username already exist!');
  75. }
  76. },
  77. async login(req, res) {
  78. const {
  79. userName,
  80. password,
  81. } = req.body;
  82.  
  83. if (!userName || !password) {
  84. res
  85. .status(400)
  86. .send('Fields [userName, password] are required');
  87. }
  88.  
  89. const user = await User
  90. .findOne({
  91. where: {
  92. userName,
  93. },
  94. });
  95.  
  96. if (!user) {
  97. return res
  98. .status(404)
  99. .send({
  100. message: 'user Not Found',
  101. });
  102. }
  103.  
  104. const passwordIsValid = bcrypt.compareSync(password, user.password);
  105.  
  106. if (!passwordIsValid) {
  107. return res
  108. .status(401)
  109. .send({
  110. auth: false,
  111. token: null,
  112. });
  113. }
  114.  
  115. const token = jwt.sign(
  116. {
  117. id: user.id,
  118. },
  119. config.secret,
  120. {
  121. expiresIn: config.expireTime,
  122. }
  123. );
  124.  
  125. return res
  126. .status(200)
  127. .send({
  128. auth: true,
  129. token,
  130. });
  131. },
  132. };
Add Comment
Please, Sign In to add comment