Guest User

Untitled

a guest
Jan 19th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.87 KB | None | 0 0
  1. const oracledb = require('oracledb');
  2. const bcrypt = require('bcrypt');
  3. const jwt = require('jsonwebtoken');
  4. const cfg = require('./config/db.js');
  5. const express = require('express');
  6. const router = express.Router();
  7.  
  8. router.route('/signup')
  9. .post(function(req, res, next) {
  10. console.log(req)
  11. const user = {
  12. email: req.body.email
  13. };
  14. const unhashedPassword = req.body.password;
  15.  
  16. bcrypt.genSalt(10, function(err, salt) {
  17. if (err) {
  18. return next(err);
  19. }
  20.  
  21. bcrypt.hash(unhashedPassword, salt, function(err, hash) {
  22. if (err) {
  23. return next(err);
  24. }
  25.  
  26. user.hashedPassword = hash;
  27.  
  28. insertUser(user, function(err, user) {
  29. const payload = {
  30. sub: req.body.email,
  31. role: req.body.role
  32. };
  33.  
  34. if (err) {
  35. return next(err);
  36. }
  37.  
  38.  
  39.  
  40. res.status(200).json({
  41. user: user,
  42. token: jwt.sign(payload, cfg.jwtSecretKey, {expiresIn: 3600})
  43. });
  44. });
  45. });
  46. });
  47.  
  48. function insertUser(user, cb) {
  49. oracledb.getConnection(
  50. cfg.database,
  51. function(err, connection){
  52. if (err) {
  53. return cb(err);
  54. }
  55.  
  56. connection.execute( `insert into jsao_users ('email, password, name, role') values (${req.body.email}, ${req.body.password}, ${req.body.name}, 'BASE') returning id, email, role, name into :rid, :remail, :rrole, :rname`,
  57. {
  58. email: user.email.toLowerCase(),
  59. password: user.hashedPassword,
  60. rid: {
  61. type: oracledb.NUMBER,
  62. dir: oracledb.BIND_OUT
  63. },
  64. remail: {
  65. type: oracledb.STRING,
  66. dir: oracledb.BIND_OUT
  67. },
  68. rrole: {
  69. type: oracledb.STRING,
  70. dir: oracledb.BIND_OUT
  71. },
  72. rname: {
  73. type: oracledb.STRING,
  74. dir: oracledb.BIND_OUT
  75. }
  76. },
  77. {
  78. autoCommit: true
  79. },
  80. function(err, results){
  81. if (err) {
  82. connection.release(function(err) {
  83. if (err) {
  84. console.error(err.message);
  85. }
  86. });
  87.  
  88. return cb(err);
  89. }
  90.  
  91. cb(null, {
  92. id: results.outBinds.rid[0],
  93. email: results.outBinds.remail[0],
  94. role: results.outBinds.rrole[0]
  95. });
  96.  
  97. connection.release(function(err) {
  98. if (err) {
  99. console.error(err.message);
  100. }
  101. });
  102. });
  103. }
  104. );
  105. }
  106. });
  107.  
  108. module.exports = router;
Add Comment
Please, Sign In to add comment