user: move avatar handling into model code

This commit is contained in:
Girish Ramakrishnan
2020-07-09 22:33:36 -07:00
parent ba50eb121d
commit c6c584ff74
2 changed files with 53 additions and 12 deletions

View File

@@ -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();
}