UNPKG

@aarconada/urserver

Version:

Basic Server definitions to develope REST API with a node + express Server

125 lines (121 loc) 4.41 kB
/** * Created by ubuntu on 12/11/18. */ 'use strict'; const server = require('../server')(); const bcrypt = require('bcryptjs'); const _ = require('lodash'); const promise = require('bluebird'); module.exports.enabled = server.configuration.authentication.anonymous.enabled; if(server.configuration.authentication.anonymous.enabled) { var anonymousUserSchema = { code: {type: server.sequelize.api.STRING, allowNull: false}, type: {type: server.sequelize.api.INTEGER, allowNull: true}, lastlogin: {type: server.sequelize.api.DATE, allowNull: null} }; const anonymousUserModel = server.sequelize.define( { modelname: 'AnonymousUser', schema: anonymousUserSchema, configuration: { defaultScope: { attributes: { exclude: [] } } }, POST: { single: { enabled: false }, all: { enabled: false } }, PUT: { single: { enabled: false } , all: { enabled: false } }, DELETE: { single: { enabled: false } , all: { enabled: false } }, GET: { single: { enabled: false } , all: { enabled: false } } } ); module.exports.signup = function (transaction, type, code) { return anonymousUserModel.findOne( { where: {code: code}, transaction: transaction }) .then(existingUser => { server.debug('User exists yet?', existingUser !== null); if (!_.isUndefined(existingUser) && !_.isNull(existingUser)) server.utils.throwError(server.defaultResponses.authentication_user_exists_yet); return anonymousUserModel.create( { code: code, type: type }, { transaction: transaction }) .then(newAnonymousUser => { server.debug('New anonymous user created?', newAnonymousUser !== null); return newAnonymousUser; }) .catch(err => { server.debug('Error during anonymous user creation', err); server.utils.throwError(server.defaultResponses.authentication_unable_signup, err); }); }) }; module.exports.login = function (transaction, code) { return anonymousUserModel.findOne( { subQuery : false, where : {code: code}, include : {all: true}, transaction : transaction }) .then(foundedUser => { server.debug('User founded?', foundedUser !== null); if (_.isUndefined(foundedUser) || _.isNull(foundedUser)) server.utils.throwError(server.defaultResponses.authentication_user_not_found); const currentDate = new Date(); return foundedUser.update( { lastlogin: currentDate }, {transaction: transaction}) .then(loggedUser => { return foundedUser; }) .catch(err => { server.debug('Error on user updating', err); server.utils.throwError(server.defaultResponses.entity_unable_update_element, err); }); }) .catch(err => { server.debug('Error on anonymous user login', err); server.utils.throwError(server.defaultResponses.authentication_login_error, err); }); } }