Advertisement
CrushedPixel

Untitled

Jan 30th, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let undot       = require('undot');
  2. let ORMUtils    = undot('utils/ORMUtils.js');
  3. let ApiResponse = undot('api/ApiResponse.js');
  4. let Joi         = require('joi');
  5. Joi.phone       = require('joi-phone');
  6.  
  7. // POST
  8.  
  9. function postMethod(req, res) {
  10.     let orm = req.app.get('orm');
  11.  
  12.     let response = new ApiResponse(res);
  13.  
  14.     checkUsername(orm, req, response)
  15.         .catch(() => response.error(400, 'ERR_USERNAME_TAKEN'))
  16.         .then(checkMail)
  17.         .catch(() => response.error(400, 'ERR_MAIL_TAKEN'))
  18.         .then(checkPhone)
  19.         .catch(() => response.error(400, 'ERR_PHONE_TAKEN'))
  20.         .then(createUser);
  21. }
  22.  
  23. function checkUsername(orm, req, response) {
  24.     return new Promise((resolve, reject) => {
  25.         ORMUtils.findOne(orm.User, 'username', req.body.username)
  26.             .then((result) => {
  27.                 if (result) {
  28.                     reject();
  29.                 } else {
  30.                     resolve(orm, req, response);
  31.                 }
  32.             }).catch(reject);
  33.     });
  34. }
  35.  
  36. function checkMail(orm, req, response) {
  37.     return new Promise((resolve, reject) => {
  38.         ORMUtils.findOne(orm.User, 'mail', req.body.mail)
  39.             .then((result) => {
  40.                 if (result) {
  41.                     reject();
  42.                 } else {
  43.                     resolve(orm, req, response);
  44.                 }
  45.             }).catch(reject);
  46.     });
  47. }
  48.  
  49. function checkPhone(orm, req, response) {
  50.     return new Promise((resolve, reject) => {
  51.         ORMUtils.findOne(orm.User, 'phone', req.body.phone)
  52.             .then((result) => {
  53.                 if (result) {
  54.                     reject();
  55.                 } else {
  56.                     resolve(orm, req, response);
  57.                 }
  58.             }).catch(reject);
  59.     });
  60. }
  61.  
  62. function createUser(orm, req, response) {
  63.     console.log('HERE0');
  64.     orm.sequelize.transaction(t => {
  65.  
  66.         return orm.User.create({
  67.             username: req.body.username,
  68.             password: req.body.password,
  69.             mail: req.body.mail,
  70.             phone: req.body.phone
  71.         }).then(() => {
  72.             console.log('success');
  73.             response.send();
  74.         }).catch((e) => {
  75.             console.log(e);
  76.         });
  77.  
  78.     });
  79. }
  80.  
  81. const post = {
  82.     schema: {
  83.         username: Joi.string().alphanum().min(3).max(16).required(),
  84.         password: Joi.string().min(8).required(),
  85.         mail:     Joi.string().email().required(),
  86.         phone:    Joi.phone.e164().required()
  87.     },
  88.  
  89.     method: postMethod
  90. };
  91.  
  92. module.exports = {
  93.     //'get': get,
  94.     'post': post
  95. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement