Commit 4caaea824cf51670d11b409efa5701dd74614d2a
Exists in
master
and in
4 other branches
Merge branch 'dmedvinsky-add-defaults-create-group-team'
Showing
9 changed files
with
63 additions
and
8 deletions
Show diff stats
app/controllers/admin/users_controller.rb
| ... | ... | @@ -29,7 +29,7 @@ class Admin::UsersController < Admin::ApplicationController |
| 29 | 29 | |
| 30 | 30 | |
| 31 | 31 | def new |
| 32 | - @admin_user = User.new({ projects_limit: Gitlab.config.gitlab.default_projects_limit }, as: :admin) | |
| 32 | + @admin_user = User.new.with_defaults | |
| 33 | 33 | end |
| 34 | 34 | |
| 35 | 35 | def edit | ... | ... |
app/controllers/registrations_controller.rb
| ... | ... | @@ -16,8 +16,7 @@ class RegistrationsController < Devise::RegistrationsController |
| 16 | 16 | |
| 17 | 17 | def build_resource(hash=nil) |
| 18 | 18 | super |
| 19 | - self.resource.projects_limit = Gitlab.config.gitlab.default_projects_limit | |
| 20 | - self.resource | |
| 19 | + self.resource.with_defaults | |
| 21 | 20 | end |
| 22 | 21 | |
| 23 | 22 | private | ... | ... |
app/models/user.rb
| ... | ... | @@ -196,6 +196,14 @@ class User < ActiveRecord::Base |
| 196 | 196 | username |
| 197 | 197 | end |
| 198 | 198 | |
| 199 | + def with_defaults | |
| 200 | + tap do |u| | |
| 201 | + u.projects_limit = Gitlab.config.gitlab.default_projects_limit | |
| 202 | + u.can_create_group = Gitlab.config.gitlab.default_can_create_group | |
| 203 | + u.can_create_team = Gitlab.config.gitlab.default_can_create_team | |
| 204 | + end | |
| 205 | + end | |
| 206 | + | |
| 199 | 207 | def notification |
| 200 | 208 | @notification ||= Notification.new(self) |
| 201 | 209 | end | ... | ... |
config/gitlab.yml.example
| ... | ... | @@ -32,12 +32,14 @@ production: &base |
| 32 | 32 | # Email address of your support contact (default: same as email_from) |
| 33 | 33 | support_email: support@localhost |
| 34 | 34 | |
| 35 | - ## Project settings | |
| 35 | + ## User settings | |
| 36 | 36 | default_projects_limit: 10 |
| 37 | + # default_can_create_group: false # default: true | |
| 38 | + # default_can_create_team: false # default: true | |
| 39 | + # username_changing_enabled: false # default: true - User can change her username/namespace | |
| 37 | 40 | |
| 38 | 41 | ## Users management |
| 39 | 42 | # signup_enabled: true # default: false - Account passwords are not sent via the email if signup is enabled. |
| 40 | - # username_changing_enabled: false # default: true - User can change her username/namespace | |
| 41 | 43 | |
| 42 | 44 | ## Default project features settings |
| 43 | 45 | default_projects_features: | ... | ... |
config/initializers/1_settings.rb
| ... | ... | @@ -48,7 +48,9 @@ Settings['issues_tracker'] ||= {} |
| 48 | 48 | # GitLab |
| 49 | 49 | # |
| 50 | 50 | Settings['gitlab'] ||= Settingslogic.new({}) |
| 51 | -Settings.gitlab['default_projects_limit'] ||= 10 | |
| 51 | +Settings.gitlab['default_projects_limit'] ||= 10 | |
| 52 | +Settings.gitlab['default_can_create_group'] = true if Settings.gitlab['default_can_create_group'].nil? | |
| 53 | +Settings.gitlab['default_can_create_team'] = true if Settings.gitlab['default_can_create_team'].nil? | |
| 52 | 54 | Settings.gitlab['host'] ||= 'localhost' |
| 53 | 55 | Settings.gitlab['https'] = false if Settings.gitlab['https'].nil? |
| 54 | 56 | Settings.gitlab['port'] ||= Settings.gitlab.https ? 443 : 80 |
| ... | ... | @@ -111,3 +113,12 @@ Settings.satellites['path'] = File.expand_path(Settings.satellites['path'] || "t |
| 111 | 113 | # Extra customization |
| 112 | 114 | # |
| 113 | 115 | Settings['extra'] ||= Settingslogic.new({}) |
| 116 | + | |
| 117 | +# | |
| 118 | +# Testing settings | |
| 119 | +# | |
| 120 | +if Rails.env.test? | |
| 121 | + Settings.gitlab['default_projects_limit'] = 42 | |
| 122 | + Settings.gitlab['default_can_create_group'] = false | |
| 123 | + Settings.gitlab['default_can_create_team'] = false | |
| 124 | +end | ... | ... |
lib/gitlab/auth.rb
| ... | ... | @@ -39,8 +39,7 @@ module Gitlab |
| 39 | 39 | email: email, |
| 40 | 40 | password: password, |
| 41 | 41 | password_confirmation: password, |
| 42 | - projects_limit: Gitlab.config.gitlab.default_projects_limit, | |
| 43 | - }, as: :admin) | |
| 42 | + }, as: :admin).with_defaults | |
| 44 | 43 | @user.save! |
| 45 | 44 | |
| 46 | 45 | if Gitlab.config.omniauth['block_auto_created_users'] && !ldap | ... | ... |
spec/features/admin/admin_users_spec.rb
| ... | ... | @@ -33,6 +33,14 @@ describe "Admin::Users" do |
| 33 | 33 | expect { click_button "Create user" }.to change {User.count}.by(1) |
| 34 | 34 | end |
| 35 | 35 | |
| 36 | + it "should apply defaults to user" do | |
| 37 | + click_button "Create user" | |
| 38 | + user = User.last | |
| 39 | + user.projects_limit.should == Gitlab.config.gitlab.default_projects_limit | |
| 40 | + user.can_create_group.should == Gitlab.config.gitlab.default_can_create_group | |
| 41 | + user.can_create_team.should == Gitlab.config.gitlab.default_can_create_team | |
| 42 | + end | |
| 43 | + | |
| 36 | 44 | it "should create user with valid data" do |
| 37 | 45 | click_button "Create user" |
| 38 | 46 | user = User.last | ... | ... |
spec/lib/auth_spec.rb
| ... | ... | @@ -91,5 +91,15 @@ describe Gitlab::Auth do |
| 91 | 91 | user.extern_uid.should == @info.uid |
| 92 | 92 | user.provider.should == 'twitter' |
| 93 | 93 | end |
| 94 | + | |
| 95 | + it "should apply defaults to user" do | |
| 96 | + @auth = mock(info: @info, provider: 'ldap') | |
| 97 | + user = gl_auth.create_from_omniauth(@auth, true) | |
| 98 | + | |
| 99 | + user.should be_valid | |
| 100 | + user.projects_limit.should == Gitlab.config.gitlab.default_projects_limit | |
| 101 | + user.can_create_group.should == Gitlab.config.gitlab.default_can_create_group | |
| 102 | + user.can_create_team.should == Gitlab.config.gitlab.default_can_create_team | |
| 103 | + end | |
| 94 | 104 | end |
| 95 | 105 | end | ... | ... |
spec/models/user_spec.rb
| ... | ... | @@ -178,4 +178,22 @@ describe User do |
| 178 | 178 | it { user.can_create_project?.should be_true } |
| 179 | 179 | it { user.first_name.should == 'John' } |
| 180 | 180 | end |
| 181 | + | |
| 182 | + describe 'without defaults' do | |
| 183 | + let(:user) { User.new } | |
| 184 | + it "should not apply defaults to user" do | |
| 185 | + user.projects_limit.should == 10 | |
| 186 | + user.can_create_group.should == true | |
| 187 | + user.can_create_team.should == true | |
| 188 | + end | |
| 189 | + end | |
| 190 | + | |
| 191 | + describe 'with defaults' do | |
| 192 | + let(:user) { User.new.with_defaults } | |
| 193 | + it "should apply defaults to user" do | |
| 194 | + user.projects_limit.should == 42 | |
| 195 | + user.can_create_group.should == false | |
| 196 | + user.can_create_team.should == false | |
| 197 | + end | |
| 198 | + end | |
| 181 | 199 | end | ... | ... |