1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
# frozen_string_literal: true
module Admin
class InitialSetupController < ApplicationController
include CheckInitialSetup
skip_before_action :authenticate_admin!
skip_before_action :authenticate_user!
before_action :check_initial_setup
layout 'devise'
feature_category :system_access
def new; end
def update
@result = Users::UpdateService.new(@user, user_params).execute(&:skip_reconfirmation!)
if @result[:status] == :success
clean_up_non_primary_emails(@user)
redirect_to new_user_session_path, notice: _('Initial account configured! Please sign in.')
else
render :new
end
end
private
def user_params
params.require(:user).permit(:email, :password, :password_confirmation).merge(
user: @user,
password_automatically_set: nil,
password_expires_at: nil
)
end
def check_initial_setup
if in_initial_setup_state?
@user = User.admins.last
return
end
# redirect to root_path to avoid potential redirect loop on sessions_controller
redirect_to root_path, notice: _("Initial setup complete!")
end
# the initial email generated randomly by fixtures, or from the GITLAB_ROOT_EMAIL env var
# should be cleaned up if different than the assigned-via-UI initial account email
def clean_up_non_primary_emails(user)
user.emails.each do |email|
email.destroy unless email.user_primary_email?
end
end
end
end
|