authbase
Version:
AuthBase client library
65 lines (55 loc) • 1.64 kB
JavaScript
var _ = require('lodash');
var errors = {
invalidToken: {
message: 'AuthBase: token was either missing or invalid',
code: 'invalid_token'
},
invalidAction: {
message: 'AuthBase: unrecognized return action',
code: 'invalid_action'
},
missingAppId: {
message: 'AuthBase: app ID (i.e. { appId : <your app id> }) is a required argument',
code: 'missing_app_id'
},
missingAppSecret: {
message: 'AuthBase: app secret (i.e. { appSecret : <your app secret> }) is a required argument',
code: 'missing_app_secret'
},
missingOnAuthenticated: {
message: 'AuthBase: app secret (i.e. { onAuthenticated : function(req, res) {...} }) is a required argument',
code: 'missing_on_authenticated'
},
missingOnError: {
message: 'AuthBase: onError (i.e. { onError : function(err, req, res, next) {...} }) is a required argument',
code: 'missing_on_error'
},
serviceError: {
status: 500,
message: 'AuthBase: service error',
code: 'service_error'
}
};
// Converts an object's keys to all getters to either clones or auto clones
// Makes it so that when a value is retrieved, it is a cloned value automatically.
// Modifying it won't affect the prototype.
var deepAutoClone = function(obj){
var result = {};
_.forIn(obj, function(val, key){
if(!_.isObject(val)){
result[key] = _.cloneDeep(val);
return;
}
else{
Object.defineProperty(result, key, {
get: function(){
return deepAutoClone(val);
},
enumerable: true
}
);
}
});
return result;
};
module.exports = deepAutoClone(errors);