diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 7addf6db9e3..a7a9801f72f 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -109,6 +109,8 @@ "Accounts_RegistrationForm_SecretURL_Description": "You must provide a random string that will be added to your registration URL. Example: https://demo.rocket.chat/register/[secret_hash]", "Accounts_RequireNameForSignUp": "Require Name For Signup", "Accounts_RequirePasswordConfirmation": "Require Password Confirmation", + "Accounts_SetDefaultAvatar": "Set Default Avatar", + "Accounts_SetDefaultAvatar_Description": "Tries to determine default avatar based on OAuth Account or Gravatar", "Accounts_ShowFormLogin": "Show form-based Login", "Accounts_UseDefaultBlockedDomainsList": "Use Default Blocked Domains List", "Accounts_UseDNSDomainCheck": "Use DNS Domain Check", diff --git a/packages/rocketchat-lib/server/functions/setUsername.coffee b/packages/rocketchat-lib/server/functions/setUsername.coffee index 3d38c88edbf..66163088f33 100644 --- a/packages/rocketchat-lib/server/functions/setUsername.coffee +++ b/packages/rocketchat-lib/server/functions/setUsername.coffee @@ -24,14 +24,27 @@ RocketChat._setUsername = (userId, username) -> unless RocketChat.checkUsernameAvailability username return false - - # If first time setting username, send Enrollment Email try if not previousUsername and user.emails?.length > 0 and RocketChat.settings.get 'Accounts_Enrollment_Email' Accounts.sendEnrollmentEmail(user._id) catch error + user.username = username + + # If first time setting username, check if should set default avatar + if not previousUsername and RocketChat.settings.get('Accounts_SetDefaultAvatar') is true + avatarSuggestions = getAvatarSuggestionForUser user + for service, avatarData of avatarSuggestions + if service isnt 'gravatar' + RocketChat.setUserAvatar(user, avatarData.blob, avatarData.contentType, service) + gravatar = null + break + else + gravatar = avatarData + if gravatar? + RocketChat.setUserAvatar(user, gravatar.blob, gravatar.contentType, 'gravatar') + # Username is available; if coming from old username, update all references if previousUsername RocketChat.models.Messages.updateAllUsernamesByUserId user._id, username @@ -58,7 +71,6 @@ RocketChat._setUsername = (userId, username) -> # Set new username RocketChat.models.Users.setUsername user._id, username - user.username = username return user RocketChat.setUsername = RocketChat.RateLimiter.limitFunction RocketChat._setUsername, 1, 60000, diff --git a/packages/rocketchat-lib/server/startup/settings.coffee b/packages/rocketchat-lib/server/startup/settings.coffee index c278ab6e345..45d43ce68e9 100644 --- a/packages/rocketchat-lib/server/startup/settings.coffee +++ b/packages/rocketchat-lib/server/startup/settings.coffee @@ -41,6 +41,7 @@ RocketChat.settings.addGroup 'Accounts', -> @add 'Accounts_AvatarSize', 200, { type: 'int', enableQuery: {_id: 'Accounts_AvatarResize', value: true} } @add 'Accounts_AvatarStoreType', 'GridFS', { type: 'select', values: [ { key: 'GridFS', i18nLabel: 'GridFS' }, { key: 'FileSystem', i18nLabel: 'FileSystem' } ] } @add 'Accounts_AvatarStorePath', '', { type: 'string', enableQuery: {_id: 'Accounts_AvatarStoreType', value: 'FileSystem'} } + @add 'Accounts_SetDefaultAvatar', true, { type: 'boolean' } RocketChat.settings.addGroup 'OAuth', ->