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
|
- 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
|
- Add date when user joined the team on the member page
|
||||||
- Fix 404 redirect after validation fails importing a GitLab project
|
- 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
|
v 8.9.5
|
||||||
- Add more debug info to import/export and memory killer. !5108
|
- Add more debug info to import/export and memory killer. !5108
|
||||||
|
|
|
@ -87,6 +87,7 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController
|
||||||
:version_check_enabled,
|
:version_check_enabled,
|
||||||
:admin_notification_email,
|
:admin_notification_email,
|
||||||
:user_oauth_applications,
|
:user_oauth_applications,
|
||||||
|
:user_default_external,
|
||||||
:shared_runners_enabled,
|
:shared_runners_enabled,
|
||||||
:shared_runners_text,
|
:shared_runners_text,
|
||||||
:max_artifacts_size,
|
:max_artifacts_size,
|
||||||
|
|
|
@ -142,6 +142,7 @@ class ApplicationSetting < ActiveRecord::Base
|
||||||
send_user_confirmation_email: false,
|
send_user_confirmation_email: false,
|
||||||
container_registry_token_expire_delay: 5,
|
container_registry_token_expire_delay: 5,
|
||||||
repository_storage: 'default',
|
repository_storage: 'default',
|
||||||
|
user_default_external: false,
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ class User < ActiveRecord::Base
|
||||||
add_authentication_token_field :authentication_token
|
add_authentication_token_field :authentication_token
|
||||||
|
|
||||||
default_value_for :admin, false
|
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_group, gitlab_config.default_can_create_group
|
||||||
default_value_for :can_create_team, false
|
default_value_for :can_create_team, false
|
||||||
default_value_for :hide_no_ssh_key, false
|
default_value_for :hide_no_ssh_key, false
|
||||||
|
|
|
@ -100,6 +100,13 @@
|
||||||
= f.label :user_oauth_applications do
|
= f.label :user_oauth_applications do
|
||||||
= f.check_box :user_oauth_applications
|
= f.check_box :user_oauth_applications
|
||||||
Allow users to register any application to use GitLab as an OAuth provider
|
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
|
%fieldset
|
||||||
%legend Sign-in Restrictions
|
%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.string "health_check_access_token"
|
||||||
t.boolean "send_user_confirmation_email", default: false
|
t.boolean "send_user_confirmation_email", default: false
|
||||||
t.integer "container_registry_token_expire_delay", default: 5
|
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.text "after_sign_up_text"
|
||||||
t.string "repository_storage", default: "default"
|
t.string "repository_storage", default: "default"
|
||||||
t.string "enabled_git_access_protocol"
|
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
|
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
|
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.
|
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,
|
akismet_enabled: false,
|
||||||
repository_checks_enabled: true,
|
repository_checks_enabled: true,
|
||||||
container_registry_token_expire_delay: 5,
|
container_registry_token_expire_delay: 5,
|
||||||
|
user_default_external: false,
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -446,6 +446,7 @@ describe User, models: true do
|
||||||
it { expect(user.can_create_group?).to be_truthy }
|
it { expect(user.can_create_group?).to be_truthy }
|
||||||
it { expect(user.can_create_project?).to be_truthy }
|
it { expect(user.can_create_project?).to be_truthy }
|
||||||
it { expect(user.first_name).to eq('John') }
|
it { expect(user.first_name).to eq('John') }
|
||||||
|
it { expect(user.external).to be_falsey }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'with defaults' do
|
describe 'with defaults' do
|
||||||
|
@ -468,6 +469,26 @@ describe User, models: true do
|
||||||
expect(user.theme_id).to eq(1)
|
expect(user.theme_id).to eq(1)
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
||||||
describe '.find_by_any_email' do
|
describe '.find_by_any_email' do
|
||||||
|
|
Loading…
Reference in a new issue