Commit 1ef1a4ae6e8f91e78e57ccd9d458ed2806f9bf77
Exists in
master
and in
4 other branches
Merge pull request #1239 from tsigo/disable_gravatar
Allow disabling Gravatars in gitlab.yml settings
Showing
4 changed files
with
43 additions
and
11 deletions
Show diff stats
app/helpers/application_helper.rb
| @@ -2,10 +2,13 @@ require 'digest/md5' | @@ -2,10 +2,13 @@ require 'digest/md5' | ||
| 2 | module ApplicationHelper | 2 | module ApplicationHelper |
| 3 | 3 | ||
| 4 | def gravatar_icon(user_email = '', size = 40) | 4 | def gravatar_icon(user_email = '', size = 40) |
| 5 | - return unless user_email | ||
| 6 | - gravatar_host = request.ssl? ? "https://secure.gravatar.com" : "http://www.gravatar.com" | ||
| 7 | - user_email.strip! | ||
| 8 | - "#{gravatar_host}/avatar/#{Digest::MD5.hexdigest(user_email.downcase)}?s=#{size}&d=identicon" | 5 | + if Gitlab.config.disable_gravatar? || user_email.blank? |
| 6 | + 'no_avatar.png' | ||
| 7 | + else | ||
| 8 | + gravatar_prefix = request.ssl? ? "https://secure" : "http://www" | ||
| 9 | + user_email.strip! | ||
| 10 | + "#{gravatar_prefix}.gravatar.com/avatar/#{Digest::MD5.hexdigest(user_email.downcase)}?s=#{size}&d=identicon" | ||
| 11 | + end | ||
| 9 | end | 12 | end |
| 10 | 13 | ||
| 11 | def request_protocol | 14 | def request_protocol |
config/gitlab.yml.example
| 1 | -# # # # # # # # # # # # # # # # # # | 1 | +# # # # # # # # # # # # # # # # # # |
| 2 | # Gitlab application config file # | 2 | # Gitlab application config file # |
| 3 | # # # # # # # # # # # # # # # # # # | 3 | # # # # # # # # # # # # # # # # # # |
| 4 | 4 | ||
| @@ -19,14 +19,14 @@ email: | @@ -19,14 +19,14 @@ email: | ||
| 19 | 19 | ||
| 20 | # Application specific settings | 20 | # Application specific settings |
| 21 | # Like default project limit for user etc | 21 | # Like default project limit for user etc |
| 22 | -app: | ||
| 23 | - default_projects_limit: 10 | 22 | +app: |
| 23 | + default_projects_limit: 10 | ||
| 24 | # backup_path: "/vol/backups" # default: Rails.root + backups/ | 24 | # backup_path: "/vol/backups" # default: Rails.root + backups/ |
| 25 | # backup_keep_time: 604800 # default: 0 (forever) (in seconds) | 25 | # backup_keep_time: 604800 # default: 0 (forever) (in seconds) |
| 26 | + # disable_gravatar: true # default: false - Disable user avatars from Gravatar.com | ||
| 26 | 27 | ||
| 27 | - | ||
| 28 | -# | ||
| 29 | -# 2. Advanced settings: | 28 | +# |
| 29 | +# 2. Advanced settings: | ||
| 30 | # ========================== | 30 | # ========================== |
| 31 | 31 | ||
| 32 | # Git Hosting configuration | 32 | # Git Hosting configuration |
| @@ -39,7 +39,6 @@ git_host: | @@ -39,7 +39,6 @@ git_host: | ||
| 39 | receive_pack: true | 39 | receive_pack: true |
| 40 | # port: 22 | 40 | # port: 22 |
| 41 | 41 | ||
| 42 | - | ||
| 43 | # Git settings | 42 | # Git settings |
| 44 | # Use default values unless you understand it | 43 | # Use default values unless you understand it |
| 45 | git: | 44 | git: |
config/initializers/1_settings.rb
| @@ -111,5 +111,9 @@ class Settings < Settingslogic | @@ -111,5 +111,9 @@ class Settings < Settingslogic | ||
| 111 | def backup_keep_time | 111 | def backup_keep_time |
| 112 | app['backup_keep_time'] || 0 | 112 | app['backup_keep_time'] || 0 |
| 113 | end | 113 | end |
| 114 | + | ||
| 115 | + def disable_gravatar? | ||
| 116 | + app['disable_gravatar'] || false | ||
| 117 | + end | ||
| 114 | end | 118 | end |
| 115 | end | 119 | end |
| @@ -0,0 +1,26 @@ | @@ -0,0 +1,26 @@ | ||
| 1 | +require 'spec_helper' | ||
| 2 | + | ||
| 3 | +describe ApplicationHelper do | ||
| 4 | + describe "gravatar_icon" do | ||
| 5 | + let(:user_email) { 'user@email.com' } | ||
| 6 | + | ||
| 7 | + it "should return a generic avatar path when Gravatar is disabled" do | ||
| 8 | + Gitlab.config.stub(:disable_gravatar?).and_return(true) | ||
| 9 | + gravatar_icon(user_email).should == 'no_avatar.png' | ||
| 10 | + end | ||
| 11 | + | ||
| 12 | + it "should return a generic avatar path when email is blank" do | ||
| 13 | + gravatar_icon('').should == 'no_avatar.png' | ||
| 14 | + end | ||
| 15 | + | ||
| 16 | + it "should use SSL when appropriate" do | ||
| 17 | + stub!(:request).and_return(double(:ssl? => true)) | ||
| 18 | + gravatar_icon(user_email).should match('https://secure.gravatar.com') | ||
| 19 | + end | ||
| 20 | + | ||
| 21 | + it "should accept a custom size" do | ||
| 22 | + stub!(:request).and_return(double(:ssl? => false)) | ||
| 23 | + gravatar_icon(user_email, 64).should match(/\?s=64/) | ||
| 24 | + end | ||
| 25 | + end | ||
| 26 | +end |