Make gravatar support explicit only
This commit is contained in:
18
src/users.js
18
src/users.js
@@ -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');
|
||||
|
||||
Reference in New Issue
Block a user