Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const oracledb = require('oracledb');
- const bcrypt = require('bcrypt');
- const jwt = require('jsonwebtoken');
- const cfg = require('./config/db.js');
- const express = require('express');
- const router = express.Router();
- router.route('/signup')
- .post(function(req, res, next) {
- console.log(req)
- const user = {
- email: req.body.email
- };
- const unhashedPassword = req.body.password;
- bcrypt.genSalt(10, function(err, salt) {
- if (err) {
- return next(err);
- }
- bcrypt.hash(unhashedPassword, salt, function(err, hash) {
- if (err) {
- return next(err);
- }
- user.hashedPassword = hash;
- insertUser(user, function(err, user) {
- const payload = {
- sub: req.body.email,
- role: req.body.role
- };
- if (err) {
- return next(err);
- }
- res.status(200).json({
- user: user,
- token: jwt.sign(payload, cfg.jwtSecretKey, {expiresIn: 3600})
- });
- });
- });
- });
- function insertUser(user, cb) {
- oracledb.getConnection(
- cfg.database,
- function(err, connection){
- if (err) {
- return cb(err);
- }
- 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`,
- {
- email: user.email.toLowerCase(),
- password: user.hashedPassword,
- rid: {
- type: oracledb.NUMBER,
- dir: oracledb.BIND_OUT
- },
- remail: {
- type: oracledb.STRING,
- dir: oracledb.BIND_OUT
- },
- rrole: {
- type: oracledb.STRING,
- dir: oracledb.BIND_OUT
- },
- rname: {
- type: oracledb.STRING,
- dir: oracledb.BIND_OUT
- }
- },
- {
- autoCommit: true
- },
- function(err, results){
- if (err) {
- connection.release(function(err) {
- if (err) {
- console.error(err.message);
- }
- });
- return cb(err);
- }
- cb(null, {
- id: results.outBinds.rid[0],
- email: results.outBinds.remail[0],
- role: results.outBinds.rrole[0]
- });
- connection.release(function(err) {
- if (err) {
- console.error(err.message);
- }
- });
- });
- }
- );
- }
- });
- module.exports = router;
Add Comment
Please, Sign In to add comment