From 93983b1f9f9dc36fba9cc316672e118baedb175b Mon Sep 17 00:00:00 2001 From: Robophil Date: Sun, 5 Feb 2017 18:16:34 +0100 Subject: [PATCH] added service to create user, and account type for validating multiple user --- api/controllers/JwtController.js | 51 +++++++++++--------------------- api/models/AccountType.js | 20 +++++++++++++ api/models/User.js | 7 ++++- api/services/JwtService.js | 27 ++++++++++++++++- config/routes.js | 2 +- package.json | 1 - 6 files changed, 71 insertions(+), 37 deletions(-) create mode 100644 api/models/AccountType.js diff --git a/api/controllers/JwtController.js b/api/controllers/JwtController.js index 3903970..b163a95 100644 --- a/api/controllers/JwtController.js +++ b/api/controllers/JwtController.js @@ -1,7 +1,7 @@ var bcrypt = require('bcryptjs'); module.exports = { - login: function (req, res) { + auth: function (req, res) { // Validate request paramaters if (!req.body.email || !req.body.password) { return res.json(401, { @@ -48,41 +48,26 @@ module.exports = { }, signup: function (req, res) { - // Validate request paramaters - if (!req.body.email || !req.body.password || !req.body.confirmPassword) { - return res.json(400, { - err: { - status: 'danger', - message: 'email, password or confirmPassword parameter(s) missing' - } - }); - } - - //TODO: Do some validation on the input - if (req.body.password !== req.body.confirmPassword) { - return res.json(400, { - err: { - status: 'danger', - message: 'passwords do not match' - } - }); - } - - //new user object - var newUser = { - email: req.body.email, - password: req.body.password, - active: sails.config.jsonWebToken.default_account_status - }; - - User.create(newUser).then((user) => { + JwtService.createUser(req).then( user => { JwtService.issueToken({ user_id: user.id }, user).then((token) => { return res.json({ user: user, token: token }); }).catch((err) => { - return res.serverError(err); + return res.json(401, { + err: { + status: 'danger', + message: 'Unable to create token for new account !!, account created' + }, + message: err + }); }); - }).catch((err) => { - return res.serverError(err); - }); + }).catch( err => { + return res.json(400, { + err: { + status: 'danger', + message: 'Unable to create account' + }, + message: err + }); + }) } }; \ No newline at end of file diff --git a/api/models/AccountType.js b/api/models/AccountType.js new file mode 100644 index 0000000..b2c445f --- /dev/null +++ b/api/models/AccountType.js @@ -0,0 +1,20 @@ +/** + * AccountType.js + * + * @description :: TODO: You might write a short summary of how this model works and what it represents here. + * @docs :: http://sailsjs.org/documentation/concepts/models-and-orm/models + */ + +module.exports = { + + attributes: { + type: { + type: 'string', + required: 'true' + }, + owner: { + model: 'user' + } + } +}; + diff --git a/api/models/User.js b/api/models/User.js index 3cfa95d..b369ec4 100644 --- a/api/models/User.js +++ b/api/models/User.js @@ -18,7 +18,12 @@ module.exports = { password: { type: 'string', required: true, - minLength: 6 + minLength: 4 + }, + + accountType: { + collection: 'accounttype', + via: 'owner' }, active: { diff --git a/api/services/JwtService.js b/api/services/JwtService.js index 19d9397..fe24963 100644 --- a/api/services/JwtService.js +++ b/api/services/JwtService.js @@ -29,4 +29,29 @@ module.exports.verifyToken = function (token) { resolve(decoded); }); }); -}; \ No newline at end of file +}; + +module.exports.createUser = function (req){ + return new Promise ((resolve, reject) => { + // Validate request paramaters + if (!req.body.email || !req.body.password) { + reject('email or password parameter(s) missing') + } + + //new user object + var newUser = { + email: req.body.email, + password: req.body.password, + active: sails.config.jsonWebToken.default_account_status, + accountType: { + type : req.body.type || 'user' + } + }; + + User.create(newUser).then((user) => { + resolve(user) + }).catch((err) => { + reject(err) + }); + }); +} \ No newline at end of file diff --git a/config/routes.js b/config/routes.js index 1132bdf..7da638a 100644 --- a/config/routes.js +++ b/config/routes.js @@ -1,4 +1,4 @@ module.exports.routes = { - 'POST /jwt/auth': 'JwtController.login', + 'POST /jwt/auth': 'JwtController.auth', 'POST /jwt/signup': 'JwtController.signup' }; \ No newline at end of file diff --git a/package.json b/package.json index ac8781f..ce5ca69 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,6 @@ "bcryptjs": "^2.4.0", "jsonwebtoken": "^7.1.9", "lodash": "^4.16.4", - "nodemailer": "^2.6.4", "sails-build-dictionary": "^0.10.1", "sails-util": "^0.11.0" }