@aarconada/urserver
Version:
Basic Server definitions to develope REST API with a node + express Server
125 lines (121 loc) • 4.41 kB
JavaScript
/**
* 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);
});
}
}