user: move avatar handling into model code
This commit is contained in:
41
src/users.js
41
src/users.js
@@ -30,6 +30,10 @@ exports = module.exports = {
|
||||
sendPasswordResetByIdentifier: sendPasswordResetByIdentifier,
|
||||
|
||||
setupAccount,
|
||||
getAvatarUrlSync,
|
||||
getAvatarFileSync,
|
||||
setAvatar,
|
||||
clearAvatar,
|
||||
|
||||
count: count,
|
||||
|
||||
@@ -57,9 +61,11 @@ let assert = require('assert'),
|
||||
debug = require('debug')('box:user'),
|
||||
eventlog = require('./eventlog.js'),
|
||||
externalLdap = require('./externalldap.js'),
|
||||
fs = require('fs'),
|
||||
groups = require('./groups.js'),
|
||||
hat = require('./hat.js'),
|
||||
mailer = require('./mailer.js'),
|
||||
path = require('path'),
|
||||
paths = require('./paths.js'),
|
||||
qrcode = require('qrcode'),
|
||||
safe = require('safetydance'),
|
||||
@@ -793,3 +799,38 @@ function delAppPassword(id, callback) {
|
||||
callback(null);
|
||||
});
|
||||
}
|
||||
|
||||
function getAvatarFileSync(id) {
|
||||
assert.strictEqual(typeof id, 'string');
|
||||
|
||||
return path.join(paths.PROFILE_ICONS_DIR, id);
|
||||
}
|
||||
|
||||
function getAvatarUrlSync(user) {
|
||||
assert.strictEqual(typeof user, 'object');
|
||||
|
||||
if (fs.existsSync(path.join(paths.PROFILE_ICONS_DIR, user.id))) return `${settings.adminOrigin()}/api/v1/profile/avatar/${user.id}`;
|
||||
|
||||
const emailHash = require('crypto').createHash('md5').update(user.email).digest('hex');
|
||||
return `https://www.gravatar.com/avatar/${emailHash}.jpg`;
|
||||
}
|
||||
|
||||
function setAvatar(id, filename, callback) {
|
||||
assert.strictEqual(typeof id, 'string');
|
||||
assert.strictEqual(typeof filename, 'string');
|
||||
assert.strictEqual(typeof callback, 'function');
|
||||
|
||||
fs.rename(filename, path.join(paths.PROFILE_ICONS_DIR, id), function (error) {
|
||||
if (error) return callback(new BoxError(BoxError.FS_ERROR, error.message));
|
||||
|
||||
callback();
|
||||
});
|
||||
}
|
||||
|
||||
function clearAvatar(id, callback) {
|
||||
assert.strictEqual(typeof id, 'string');
|
||||
assert.strictEqual(typeof callback, 'function');
|
||||
|
||||
safe.fs.unlinkSync(path.join(paths.PROFILE_ICONS_DIR, id));
|
||||
callback();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user