Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const _ = require('lodash')
- const helpers = require('./helpers')
- const bcrypt = require('bcryptjs')
- const jwt = require('jsonwebtoken')
- const User = require('./model').User
- const registerController = async (request) => {
- const data = request.body
- const requiredParameters = ['name', 'email', 'password']
- const allParametersPresent = _.every(requiredParameters, _.partial(_.has, data))
- if (!allParametersPresent) {
- return { message: "Parameters missing"}
- }
- let registrationValidation = helpers.isRegistrationDataValid(data)
- if (!registrationValidation.status) {
- return { errors: registrationValidation.errors }
- }
- const securedPassword = bcrypt.hashSync(data.password, 8)
- const databaseResponse = await User.create(_.set(data, 'password', securedPassword)).then(res => res).catch(err => err)
- if (_.has(databaseResponse, 'message')) { return { error: databaseResponse.message } }
- const token = jwt.sign({email: data.email}, 'SUPER SECRET KEY', { expiresIn : "1 day" })
- return { message: "success", token }
- }
- const loginController = (request) => {
- return { message: "To be implemented!"}
- }
- module.exports = {
- registerController,
- loginController
- }
- const router = require('express').Router()
- const controller = require('./controllers')
- router.post('/login', (request, response) => {
- response.json(controller.loginController(request))
- })
- router.post('/register', async (request, response) => {
- response.json(await controller.registerController(request))
- })
- module.exports = router
Add Comment
Please, Sign In to add comment