Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let undot = require('undot');
- let ORMUtils = undot('utils/ORMUtils.js');
- let ApiResponse = undot('api/ApiResponse.js');
- let Joi = require('joi');
- Joi.phone = require('joi-phone');
- // POST
- function postMethod(req, res) {
- let orm = req.app.get('orm');
- let response = new ApiResponse(res);
- checkUsername(orm, req, response)
- .catch(() => response.error(400, 'ERR_USERNAME_TAKEN'))
- .then(checkMail)
- .catch(() => response.error(400, 'ERR_MAIL_TAKEN'))
- .then(checkPhone)
- .catch(() => response.error(400, 'ERR_PHONE_TAKEN'))
- .then(createUser);
- }
- function checkUsername(orm, req, response) {
- return new Promise((resolve, reject) => {
- ORMUtils.findOne(orm.User, 'username', req.body.username)
- .then((result) => {
- if (result) {
- reject();
- } else {
- resolve(orm, req, response);
- }
- }).catch(reject);
- });
- }
- function checkMail(orm, req, response) {
- return new Promise((resolve, reject) => {
- ORMUtils.findOne(orm.User, 'mail', req.body.mail)
- .then((result) => {
- if (result) {
- reject();
- } else {
- resolve(orm, req, response);
- }
- }).catch(reject);
- });
- }
- function checkPhone(orm, req, response) {
- return new Promise((resolve, reject) => {
- ORMUtils.findOne(orm.User, 'phone', req.body.phone)
- .then((result) => {
- if (result) {
- reject();
- } else {
- resolve(orm, req, response);
- }
- }).catch(reject);
- });
- }
- function createUser(orm, req, response) {
- console.log('HERE0');
- orm.sequelize.transaction(t => {
- return orm.User.create({
- username: req.body.username,
- password: req.body.password,
- mail: req.body.mail,
- phone: req.body.phone
- }).then(() => {
- console.log('success');
- response.send();
- }).catch((e) => {
- console.log(e);
- });
- });
- }
- const post = {
- schema: {
- username: Joi.string().alphanum().min(3).max(16).required(),
- password: Joi.string().min(8).required(),
- mail: Joi.string().email().required(),
- phone: Joi.phone.e164().required()
- },
- method: postMethod
- };
- module.exports = {
- //'get': get,
- 'post': post
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement