Make gravatar support explicit only

This commit is contained in:
Johannes Zellner
2021-07-07 14:31:39 +02:00
parent cdad2a80d4
commit 81e6cd6195
4 changed files with 23 additions and 24 deletions

View File

@@ -192,7 +192,8 @@ function create(username, password, email, displayName, options, auditSource, ca
resetToken: '',
displayName: displayName,
source: source,
role: role
role: role,
avatar: constants.AVATAR_NONE
};
userdb.add(user.id, user, function (error) {
@@ -782,25 +783,26 @@ function compareRoles(role1, role2) {
async function getAvatarUrl(user) {
assert.strictEqual(typeof user, 'object');
const result = await database.query('SELECT avatar FROM users WHERE id = ?', [ user.id ]);
if (result.length === 0) return null;
if (result[0].avatar) return `${settings.dashboardOrigin()}/api/v1/profile/avatar/${user.id}`;
const result = await getAvatar(user.id);
const fallbackUrl = `${settings.dashboardOrigin()}/img/avatar-default-symbolic.svg`;
const emailHash = require('crypto').createHash('md5').update(user.email).digest('hex');
return `https://www.gravatar.com/avatar/${emailHash}.jpg`;
if (result.toString() === constants.AVATAR_NONE) return fallbackUrl;
else if (result.toString() === constants.AVATAR_GRAVATAR) return `https://www.gravatar.com/avatar/${require('crypto').createHash('md5').update(user.email).digest('hex')}.jpg`;
else if (result) return `${settings.dashboardOrigin()}/api/v1/profile/avatar/${user.id}`;
else return fallbackUrl;
}
async function getAvatar(id) {
assert.strictEqual(typeof id, 'string');
const result = await database.query('SELECT avatar FROM users WHERE id = ?', [ id ]);
if (result.length === 0) return null;
if (result.length === 0) throw new BoxError(BoxError.NOT_FOUND, 'User not found');
return result[0].avatar;
}
async function setAvatar(id, avatar) {
assert.strictEqual(typeof id, 'string');
assert(avatar === null || Buffer.isBuffer(avatar));
assert(avatar === constants.AVATAR_NONE || avatar === constants.AVATAR_GRAVATAR || Buffer.isBuffer(avatar));
const result = await database.query('UPDATE users SET avatar=? WHERE id = ?', [ avatar, id ]);
if (result.length === 0) throw new BoxError(BoxError.NOT_FOUND, 'User not found');