Commit 1ef1a4ae6e8f91e78e57ccd9d458ed2806f9bf77

Authored by Dmitriy Zaporozhets
2 parents aa50408e 65bcc41f

Merge pull request #1239 from tsigo/disable_gravatar

Allow disabling Gravatars in gitlab.yml settings
app/helpers/application_helper.rb
... ... @@ -2,10 +2,13 @@ require 'digest/md5'
2 2 module ApplicationHelper
3 3  
4 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 12 end
10 13  
11 14 def request_protocol
... ...
config/gitlab.yml.example
1   -# # # # # # # # # # # # # # # # # #
  1 +# # # # # # # # # # # # # # # # # #
2 2 # Gitlab application config file #
3 3 # # # # # # # # # # # # # # # # # #
4 4  
... ... @@ -19,14 +19,14 @@ email:
19 19  
20 20 # Application specific settings
21 21 # Like default project limit for user etc
22   -app:
23   - default_projects_limit: 10
  22 +app:
  23 + default_projects_limit: 10
24 24 # backup_path: "/vol/backups" # default: Rails.root + backups/
25 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 32 # Git Hosting configuration
... ... @@ -39,7 +39,6 @@ git_host:
39 39 receive_pack: true
40 40 # port: 22
41 41  
42   -
43 42 # Git settings
44 43 # Use default values unless you understand it
45 44 git:
... ...
config/initializers/1_settings.rb
... ... @@ -111,5 +111,9 @@ class Settings < Settingslogic
111 111 def backup_keep_time
112 112 app['backup_keep_time'] || 0
113 113 end
  114 +
  115 + def disable_gravatar?
  116 + app['disable_gravatar'] || false
  117 + end
114 118 end
115 119 end
... ...
spec/helpers/application_helper_spec.rb 0 → 100644
... ... @@ -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
... ...