Merge branch 'feature/option-set-new-users-external' into 'master'
Added setting to set new users by default as external ## What does this MR do? This implements the feature request #14508. It adds an option in the application settings to set new users by default as external. ## Are there points in the code the reviewer needs to double check? Everything. Like I mentioned in the discussion of the issue my knowledge of Ruby basically doesn't exists. I tested it on my machine and it seems to work, but as I am very unexperienced in Ruby I highly recommend to take a close look at the code. ## Why was this MR needed? It was requested by @DouweM to work on the issue with the proposed changes by me. ## What are the relevant issue numbers? This MR is for the issue #14508 that followed up after the implementation of #4009. See merge request !4545
This commit is contained in:
commit
2c650b6f30
10 changed files with 50 additions and 1 deletions
|
@ -53,6 +53,7 @@ v 8.10.0 (unreleased)
|
|||
- Fix importer for GitHub Pull Requests when a branch was reused across Pull Requests
|
||||
- Add date when user joined the team on the member page
|
||||
- Fix 404 redirect after validation fails importing a GitLab project
|
||||
- Added setting to set new users by default as external !4545 (Dravere)
|
||||
|
||||
v 8.9.5
|
||||
- Add more debug info to import/export and memory killer. !5108
|
||||
|
|
|
@ -87,6 +87,7 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController
|
|||
:version_check_enabled,
|
||||
:admin_notification_email,
|
||||
:user_oauth_applications,
|
||||
:user_default_external,
|
||||
:shared_runners_enabled,
|
||||
:shared_runners_text,
|
||||
:max_artifacts_size,
|
||||
|
|
|
@ -142,6 +142,7 @@ class ApplicationSetting < ActiveRecord::Base
|
|||
send_user_confirmation_email: false,
|
||||
container_registry_token_expire_delay: 5,
|
||||
repository_storage: 'default',
|
||||
user_default_external: false,
|
||||
)
|
||||
end
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ class User < ActiveRecord::Base
|
|||
add_authentication_token_field :authentication_token
|
||||
|
||||
default_value_for :admin, false
|
||||
default_value_for :external, false
|
||||
default_value_for(:external) { current_application_settings.user_default_external }
|
||||
default_value_for :can_create_group, gitlab_config.default_can_create_group
|
||||
default_value_for :can_create_team, false
|
||||
default_value_for :hide_no_ssh_key, false
|
||||
|
|
|
@ -100,6 +100,13 @@
|
|||
= f.label :user_oauth_applications do
|
||||
= f.check_box :user_oauth_applications
|
||||
Allow users to register any application to use GitLab as an OAuth provider
|
||||
.form-group
|
||||
= f.label :user_default_external, 'New users set to external', class: 'control-label col-sm-2'
|
||||
.col-sm-10
|
||||
.checkbox
|
||||
= f.label :user_default_external do
|
||||
= f.check_box :user_default_external
|
||||
Newly registered users will by default be external
|
||||
|
||||
%fieldset
|
||||
%legend Sign-in Restrictions
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
class AddUserDefaultExternalToApplicationSettings < ActiveRecord::Migration
|
||||
include Gitlab::Database::MigrationHelpers
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default(:application_settings, :user_default_external, :boolean,
|
||||
default: false, allow_null: false)
|
||||
end
|
||||
|
||||
def down
|
||||
remove_column(:application_settings, :user_default_external)
|
||||
end
|
||||
end
|
|
@ -84,6 +84,7 @@ ActiveRecord::Schema.define(version: 20160705163108) do
|
|||
t.string "health_check_access_token"
|
||||
t.boolean "send_user_confirmation_email", default: false
|
||||
t.integer "container_registry_token_expire_delay", default: 5
|
||||
t.boolean "user_default_external", default: false, null: false
|
||||
t.text "after_sign_up_text"
|
||||
t.string "repository_storage", default: "default"
|
||||
t.string "enabled_git_access_protocol"
|
||||
|
|
|
@ -99,3 +99,6 @@ An administrator can flag a user as external [through the API](../api/users.md)
|
|||
or by checking the checkbox on the admin panel. As an administrator, navigate
|
||||
to **Admin > Users** to create a new user or edit an existing one. There, you
|
||||
will find the option to flag the user as external.
|
||||
|
||||
By default new users are not set as external users. This behavior can be changed
|
||||
by an administrator under **Admin > Application Settings**.
|
|
@ -48,6 +48,7 @@ module Gitlab
|
|||
akismet_enabled: false,
|
||||
repository_checks_enabled: true,
|
||||
container_registry_token_expire_delay: 5,
|
||||
user_default_external: false,
|
||||
)
|
||||
end
|
||||
|
||||
|
|
|
@ -446,6 +446,7 @@ describe User, models: true do
|
|||
it { expect(user.can_create_group?).to be_truthy }
|
||||
it { expect(user.can_create_project?).to be_truthy }
|
||||
it { expect(user.first_name).to eq('John') }
|
||||
it { expect(user.external).to be_falsey }
|
||||
end
|
||||
|
||||
describe 'with defaults' do
|
||||
|
@ -468,6 +469,26 @@ describe User, models: true do
|
|||
expect(user.theme_id).to eq(1)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when current_application_settings.user_default_external is true' do
|
||||
before do
|
||||
stub_application_setting(user_default_external: true)
|
||||
end
|
||||
|
||||
it "creates external user by default" do
|
||||
user = build(:user)
|
||||
|
||||
expect(user.external).to be_truthy
|
||||
end
|
||||
|
||||
describe 'with default overrides' do
|
||||
it "creates a non-external user" do
|
||||
user = build(:user, external: false)
|
||||
|
||||
expect(user.external).to be_falsey
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.find_by_any_email' do
|
||||
|
|
Loading…
Reference in a new issue