mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-27 12:53:13 +03:00
115 lines
3.6 KiB
JavaScript
115 lines
3.6 KiB
JavaScript
|
var when = require('when'),
|
||
|
_ = require('underscore'),
|
||
|
dataProvider = require('../models'),
|
||
|
settings = require('./settings'),
|
||
|
ONE_DAY = 86400000,
|
||
|
filteredAttributes = ['password', 'created_by', 'updated_by', 'last_login'],
|
||
|
users;
|
||
|
|
||
|
// ## Users
|
||
|
users = {
|
||
|
// #### Browse
|
||
|
|
||
|
// **takes:** options object
|
||
|
browse: function browse(options) {
|
||
|
// **returns:** a promise for a collection of users in a json object
|
||
|
|
||
|
return dataProvider.User.browse(options).then(function (result) {
|
||
|
var i = 0,
|
||
|
omitted = {};
|
||
|
|
||
|
if (result) {
|
||
|
omitted = result.toJSON();
|
||
|
}
|
||
|
|
||
|
for (i = 0; i < omitted.length; i = i + 1) {
|
||
|
omitted[i] = _.omit(omitted[i], filteredAttributes);
|
||
|
}
|
||
|
|
||
|
return omitted;
|
||
|
});
|
||
|
},
|
||
|
|
||
|
// #### Read
|
||
|
|
||
|
// **takes:** an identifier (id or slug?)
|
||
|
read: function read(args) {
|
||
|
// **returns:** a promise for a single user in a json object
|
||
|
if (args.id === 'me') {
|
||
|
args = {id: this.user};
|
||
|
}
|
||
|
|
||
|
return dataProvider.User.read(args).then(function (result) {
|
||
|
if (result) {
|
||
|
var omitted = _.omit(result.toJSON(), filteredAttributes);
|
||
|
return omitted;
|
||
|
}
|
||
|
|
||
|
return when.reject({errorCode: 404, message: 'User not found'});
|
||
|
});
|
||
|
},
|
||
|
|
||
|
// #### Edit
|
||
|
|
||
|
// **takes:** a json object representing a user
|
||
|
edit: function edit(userData) {
|
||
|
// **returns:** a promise for the resulting user in a json object
|
||
|
userData.id = this.user;
|
||
|
return dataProvider.User.edit(userData).then(function (result) {
|
||
|
if (result) {
|
||
|
var omitted = _.omit(result.toJSON(), filteredAttributes);
|
||
|
return omitted;
|
||
|
}
|
||
|
return when.reject({errorCode: 404, message: 'User not found'});
|
||
|
});
|
||
|
},
|
||
|
|
||
|
// #### Add
|
||
|
|
||
|
// **takes:** a json object representing a user
|
||
|
add: function add(userData) {
|
||
|
|
||
|
// **returns:** a promise for the resulting user in a json object
|
||
|
return dataProvider.User.add(userData);
|
||
|
},
|
||
|
|
||
|
// #### Check
|
||
|
// Checks a password matches the given email address
|
||
|
|
||
|
// **takes:** a json object representing a user
|
||
|
check: function check(userData) {
|
||
|
// **returns:** on success, returns a promise for the resulting user in a json object
|
||
|
return dataProvider.User.check(userData);
|
||
|
},
|
||
|
|
||
|
// #### Change Password
|
||
|
|
||
|
// **takes:** a json object representing a user
|
||
|
changePassword: function changePassword(userData) {
|
||
|
// **returns:** on success, returns a promise for the resulting user in a json object
|
||
|
return dataProvider.User.changePassword(userData);
|
||
|
},
|
||
|
|
||
|
generateResetToken: function generateResetToken(email) {
|
||
|
// TODO: Do we want to be able to pass this in?
|
||
|
var expires = Date.now() + ONE_DAY;
|
||
|
return settings.read('dbHash').then(function (dbHash) {
|
||
|
return dataProvider.User.generateResetToken(email, expires, dbHash);
|
||
|
});
|
||
|
},
|
||
|
|
||
|
validateToken: function validateToken(token) {
|
||
|
return settings.read('dbHash').then(function (dbHash) {
|
||
|
return dataProvider.User.validateToken(token, dbHash);
|
||
|
});
|
||
|
},
|
||
|
|
||
|
resetPassword: function resetPassword(token, newPassword, ne2Password) {
|
||
|
return settings.read('dbHash').then(function (dbHash) {
|
||
|
return dataProvider.User.resetPassword(token, newPassword, ne2Password, dbHash);
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
|
||
|
module.exports = users;
|
||
|
module.exports.filteredAttributes = filteredAttributes;
|