feat: Add ability to use Gravatar as avatar provider (#1319)

Closes #1243
This commit is contained in:
Mary Ojo
2025-09-05 19:00:17 +02:00
committed by GitHub
parent 37bd4d1349
commit 5dc783c5b5
7 changed files with 56 additions and 3 deletions
+4
View File
@@ -75,3 +75,7 @@ SECRET_KEY=notsecretkey
# SMTP_PASSWORD=
# SMTP_FROM="Demo Demo" <demo@demo.demo>
# SMTP_TLS_REJECT_UNAUTHORIZED=false
# Using Gravatar directly exposes user IPs and hashed emails to a third party (GDPR risk).
# Use a proxy you control for privacy, or leave commented out or empty to disable.
# GRAVATAR_BASE_URL=https://www.gravatar.com/avatar/
@@ -0,0 +1,26 @@
/*!
* Copyright (c) 2024 PLANKA Software GmbH
* Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md
*/
const crypto = require('crypto');
module.exports = {
sync: true,
inputs: {
record: {
type: 'ref',
required: true,
},
},
fn(inputs) {
if (!sails.config.custom.gravatarBaseUrl) {
return null;
}
const hash = crypto.createHash('md5').update(inputs.record.email).digest('hex');
return `${sails.config.custom.gravatarBaseUrl}${hash}?s=180&d=initials`;
},
};
+6
View File
@@ -36,6 +36,12 @@ module.exports = {
termsType: sails.hooks.terms.getTypeByUserRole(inputs.record.role),
};
const gravatarUrl = sails.helpers.users.buildGravatarUrl(inputs.record);
if (gravatarUrl) {
data.gravatarUrl = gravatarUrl;
}
if (inputs.user) {
const isForCurrentUser = inputs.record.id === inputs.user.id;
const isForAdmin = inputs.user.role === User.Roles.ADMIN;
+2
View File
@@ -105,4 +105,6 @@ module.exports.custom = {
smtpPassword: process.env.SMTP_PASSWORD,
smtpFrom: process.env.SMTP_FROM,
smtpTlsRejectUnauthorized: process.env.SMTP_TLS_REJECT_UNAUTHORIZED !== 'false',
gravatarBaseUrl: process.env.GRAVATAR_BASE_URL,
};