feat: Add ability to use Gravatar as avatar provider (#1319)
Closes #1243
This commit is contained in:
@@ -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`;
|
||||
},
|
||||
};
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user