summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Botelho <tiagonbotelho@hotmail.com>2017-06-19 15:21:25 +0100
committerTiago Botelho <tiagonbotelho@hotmail.com>2017-06-19 15:48:24 +0100
commit4449f57ea627aa92e7f011a488c11285465057d2 (patch)
treefd9a9c8f5975a0367b787e89dcd27aa77d69930b
parentdb33c0fb63d50e31751fb580d502de38ee665385 (diff)
downloadgitlab-ce-30725-reset-user-limits-when-unchecking-external-user.tar.gz
-rw-r--r--app/models/user.rb18
-rw-r--r--spec/models/user_spec.rb2
2 files changed, 11 insertions, 9 deletions
diff --git a/app/models/user.rb b/app/models/user.rb
index 368c74037f4..782c162e1f3 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -139,21 +139,21 @@ class User < ActiveRecord::Base
presence: true,
uniqueness: { case_sensitive: false }
- validate :namespace_uniq, if: ->(user) { user.username_changed? }
+ validate :namespace_uniq, if: :username_changed?
validate :avatar_type, if: ->(user) { user.avatar.present? && user.avatar_changed? }
- validate :unique_email, if: ->(user) { user.email_changed? }
- validate :owns_notification_email, if: ->(user) { user.notification_email_changed? }
- validate :owns_public_email, if: ->(user) { user.public_email_changed? }
+ validate :unique_email, if: :email_changed?
+ validate :owns_notification_email, if: :notification_email_changed?
+ validate :owns_public_email, if: :public_email_changed?
validate :signup_domain_valid?, on: :create, if: ->(user) { !user.created_by_id }
validates :avatar, file_size: { maximum: 200.kilobytes.to_i }
before_validation :sanitize_attrs
- before_validation :set_notification_email, if: ->(user) { user.email_changed? }
- before_validation :set_public_email, if: ->(user) { user.public_email_changed? }
+ before_validation :set_notification_email, if: :email_changed?
+ before_validation :set_public_email, if: :public_email_changed?
- after_update :update_emails_with_primary_email, if: ->(user) { user.email_changed? }
+ after_update :update_emails_with_primary_email, if: :email_changed?
before_save :ensure_authentication_token, :ensure_incoming_email_token
- before_save :ensure_user_rights_and_limits, if: ->(user) { user.external_changed? }
+ before_save :ensure_user_rights_and_limits, if: :external_changed?
after_save :ensure_namespace_correct
after_initialize :set_projects_limit
after_destroy :post_destroy_hook
@@ -1038,7 +1038,7 @@ class User < ActiveRecord::Base
self.can_create_group = false
self.projects_limit = 0
else
- self.can_create_group = true
+ self.can_create_group = gitlab_config.default_can_create_group
self.projects_limit = current_application_settings.default_projects_limit
end
end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 633f377a382..dbe75819663 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -462,6 +462,8 @@ describe User, models: true do
end
it 'ensures correct rights and limits for user' do
+ stub_config_setting(default_can_create_group: true)
+
expect { user.update_attributes(external: false) }.to change { user.can_create_group }.to(true)
.and change { user.projects_limit }.to(current_application_settings.default_projects_limit)
end