diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2017-11-06 15:48:08 +0000 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2017-11-10 15:55:50 +0800 |
commit | 26f58cb4462e7f1df6d8dca73cc7391836d3f068 (patch) | |
tree | de5e72ac7ee60ee310f51cdc0fa7b1f05cea3341 | |
parent | 2b72f55810284e225c763fab2c5eb1641702112e (diff) | |
download | gitlab-ce-26f58cb4462e7f1df6d8dca73cc7391836d3f068.tar.gz |
Merge branch 'dm-block-group-and-project-creation-when-external-by-default' into 'master'
Make sure group and project creation is blocked for new users that are external by default
Closes #39664
See merge request gitlab-org/gitlab-ce!15212
-rw-r--r-- | app/models/user.rb | 7 | ||||
-rw-r--r-- | changelogs/unreleased/dm-block-group-and-project-creation-when-external-by-default.yml | 6 | ||||
-rw-r--r-- | spec/models/user_spec.rb | 6 |
3 files changed, 14 insertions, 5 deletions
diff --git a/app/models/user.rb b/app/models/user.rb index 533a776bc65..91dbe4c7023 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -164,7 +164,7 @@ class User < ActiveRecord::Base before_validation :set_notification_email, if: :email_changed? before_validation :set_public_email, if: :public_email_changed? before_save :ensure_authentication_token, :ensure_incoming_email_token - before_save :ensure_user_rights_and_limits, if: :external_changed? + before_save :ensure_user_rights_and_limits, if: ->(user) { user.new_record? || user.external_changed? } before_save :skip_reconfirmation!, if: ->(user) { user.email_changed? && user.read_only_attribute?(:email) } before_save :check_for_verified_email, if: ->(user) { user.email_changed? && !user.new_record? } after_save :ensure_namespace_correct @@ -1141,8 +1141,9 @@ class User < ActiveRecord::Base self.can_create_group = false self.projects_limit = 0 else - self.can_create_group = gitlab_config.default_can_create_group - self.projects_limit = current_application_settings.default_projects_limit + # Only revert these back to the default if they weren't specifically changed in this update. + self.can_create_group = gitlab_config.default_can_create_group unless can_create_group_changed? + self.projects_limit = current_application_settings.default_projects_limit unless projects_limit_changed? end end diff --git a/changelogs/unreleased/dm-block-group-and-project-creation-when-external-by-default.yml b/changelogs/unreleased/dm-block-group-and-project-creation-when-external-by-default.yml new file mode 100644 index 00000000000..42bcf9b1edd --- /dev/null +++ b/changelogs/unreleased/dm-block-group-and-project-creation-when-external-by-default.yml @@ -0,0 +1,6 @@ +--- +title: Make sure group and project creation is blocked for new users that are external + by default +merge_request: +author: +type: fixed diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 1c3c9068f12..fa09d0a3ed4 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -797,14 +797,16 @@ describe User do end it "creates external user by default" do - user = build(:user) + user = create(:user) expect(user.external).to be_truthy + expect(user.can_create_group).to be_falsey + expect(user.projects_limit).to be 0 end describe 'with default overrides' do it "creates a non-external user" do - user = build(:user, external: false) + user = create(:user, external: false) expect(user.external).to be_falsey end |