From e8fe2ff414864e994850786cb7b249aaded65103 Mon Sep 17 00:00:00 2001 From: Milan Jovanovic Date: Fri, 8 Feb 2019 13:52:30 +0100 Subject: [PATCH] [NEW] User avatars from external source (#7929) --- packages/rocketchat-i18n/i18n/en.i18n.json | 2 ++ packages/rocketchat-lib/server/startup/settings.js | 6 ++++++ packages/rocketchat-utils/lib/getAvatarUrlFromUsername.js | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 920f554bfa17..a83f532fbc96 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -43,6 +43,8 @@ "Accounts_AvatarCacheTime_description": "Number of seconds the http protocol is told to cache the avatar images.", "Accounts_AvatarResize": "Resize Avatars", "Accounts_AvatarSize": "Avatar Size", + "Accounts_AvatarExternalProviderUrl": "Avatar External Provider URL", + "Accounts_AvatarExternalProviderUrl_Description": "Example: `https://acme.com/api/v1/{username}`", "Accounts_BlockedDomainsList": "Blocked Domains List", "Accounts_BlockedDomainsList_Description": "Comma-separated list of blocked domains", "Accounts_BlockedUsernameList": "Blocked Username List", diff --git a/packages/rocketchat-lib/server/startup/settings.js b/packages/rocketchat-lib/server/startup/settings.js index 90318c43cce3..5f5aca6934c6 100644 --- a/packages/rocketchat-lib/server/startup/settings.js +++ b/packages/rocketchat-lib/server/startup/settings.js @@ -468,6 +468,12 @@ RocketChat.settings.addGroup('Accounts', function() { value: true, }, }); + + this.add('Accounts_AvatarExternalProviderUrl', '', { + type: 'string', + public: true, + }); + this.add('Accounts_AvatarCacheTime', 3600, { type: 'int', i18nDescription: 'Accounts_AvatarCacheTime_description', diff --git a/packages/rocketchat-utils/lib/getAvatarUrlFromUsername.js b/packages/rocketchat-utils/lib/getAvatarUrlFromUsername.js index fb2653f65fc5..8606771343cc 100644 --- a/packages/rocketchat-utils/lib/getAvatarUrlFromUsername.js +++ b/packages/rocketchat-utils/lib/getAvatarUrlFromUsername.js @@ -2,6 +2,10 @@ import { Session } from 'meteor/session'; import { settings } from 'meteor/rocketchat:settings'; export const getAvatarUrlFromUsername = function(username) { + const externalSource = (settings.get('Accounts_AvatarExternalProviderUrl') || '').trim().replace(/\/$/, ''); + if (externalSource !== '') { + return externalSource.replace('{username}', username); + } const key = `avatar_random_${ username }`; const random = typeof Session !== 'undefined' && typeof Session.keys[key] !== 'undefined' ? Session.keys[key] : 0; if (username == null) {