Guest User

Untitled

a guest
Apr 13th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. const _ = require('lodash')
  2. const helpers = require('./helpers')
  3. const bcrypt = require('bcryptjs')
  4. const jwt = require('jsonwebtoken')
  5. const User = require('./model').User
  6.  
  7. const registerController = async (request) => {
  8. const data = request.body
  9. const requiredParameters = ['name', 'email', 'password']
  10. const allParametersPresent = _.every(requiredParameters, _.partial(_.has, data))
  11.  
  12. if (!allParametersPresent) {
  13. return { message: "Parameters missing"}
  14. }
  15.  
  16. let registrationValidation = helpers.isRegistrationDataValid(data)
  17. if (!registrationValidation.status) {
  18. return { errors: registrationValidation.errors }
  19. }
  20.  
  21. const securedPassword = bcrypt.hashSync(data.password, 8)
  22. const databaseResponse = await User.create(_.set(data, 'password', securedPassword)).then(res => res).catch(err => err)
  23. if (_.has(databaseResponse, 'message')) { return { error: databaseResponse.message } }
  24.  
  25. const token = jwt.sign({email: data.email}, 'SUPER SECRET KEY', { expiresIn : "1 day" })
  26. return { message: "success", token }
  27. }
  28.  
  29. const loginController = (request) => {
  30. return { message: "To be implemented!"}
  31. }
  32.  
  33. module.exports = {
  34. registerController,
  35. loginController
  36. }
  37.  
  38. const router = require('express').Router()
  39. const controller = require('./controllers')
  40.  
  41. router.post('/login', (request, response) => {
  42. response.json(controller.loginController(request))
  43. })
  44.  
  45. router.post('/register', async (request, response) => {
  46. response.json(await controller.registerController(request))
  47. })
  48.  
  49. module.exports = router
Add Comment
Please, Sign In to add comment