Merge pull request 'Allow users to set/update their display name in LDAP' (#128) from feature/123-display_names into master
All checks were successful
continuous-integration/drone/push Build is passing

Reviewed-on: #128
Reviewed-by: greg <greg@noreply.kosmos.org>
This commit was merged in pull request #128.
This commit is contained in:
2023-05-31 09:13:50 +00:00
10 changed files with 174 additions and 88 deletions

View File

@@ -2,35 +2,41 @@ class SettingsController < ApplicationController
before_action :authenticate_user!
before_action :set_main_nav_section
before_action :set_settings_section, only: [:show, :update, :update_email]
before_action :set_user, only: [:show, :update, :update_email]
def index
redirect_to setting_path(:profile)
end
def show
@user = current_user
end
def update
@user = current_user
@user.preferences.merge! user_params[:preferences]
@user.save!
@user.preferences.merge!(user_params[:preferences] || {})
@user.display_name = user_params[:display_name]
redirect_to setting_path(@settings_section), flash: {
success: 'Settings saved.'
}
if @user.save
if @user.display_name && (@user.display_name != @user.ldap_entry[:display_name])
LdapManager::UpdateDisplayName.call(@user.dn, user_params[:display_name])
end
redirect_to setting_path(@settings_section), flash: {
success: 'Settings saved.'
}
else
@validation_errors = @user.errors
render :show, status: :unprocessable_entity
end
end
def update_email
if current_user.valid_ldap_authentication?(email_params[:current_password])
current_user.email = email_params[:email]
if current_user.update email: email_params[:email]
if @user.valid_ldap_authentication?(email_params[:current_password])
if @user.update email: email_params[:email]
redirect_to setting_path(:account), flash: {
notice: 'Please confirm your new address using the confirmation link we just sent you.'
}
else
@validation_errors = current_user.errors
@validation_errors = @user.errors
render :show, status: :unprocessable_entity
end
else
@@ -49,27 +55,31 @@ class SettingsController < ApplicationController
private
def set_main_nav_section
@current_section = :settings
end
def set_settings_section
@settings_section = params[:section]
allowed_sections = [:profile, :account, :lightning, :xmpp]
unless allowed_sections.include?(@settings_section.to_sym)
redirect_to setting_path(:profile)
def set_main_nav_section
@current_section = :settings
end
end
def user_params
params.require(:user).permit(preferences: [
:lightning_notify_sats_received,
:xmpp_exchange_contacts_with_invitees
])
end
def set_settings_section
@settings_section = params[:section]
allowed_sections = [:profile, :account, :lightning, :xmpp]
def email_params
params.require(:user).permit(:email, :current_password)
end
unless allowed_sections.include?(@settings_section.to_sym)
redirect_to setting_path(:profile)
end
end
def set_user
@user = current_user
end
def user_params
params.require(:user).permit(:display_name, preferences: [
:lightning_notify_sats_received,
:xmpp_exchange_contacts_with_invitees
])
end
def email_params
params.require(:user).permit(:email, :current_password)
end
end