Update user avatar in LDAP
This commit is contained in:
parent
64d09cfb7f
commit
50c63d5c38
@ -19,11 +19,17 @@ class SettingsController < ApplicationController
|
|||||||
def update
|
def update
|
||||||
@user.preferences.merge!(user_params[:preferences] || {})
|
@user.preferences.merge!(user_params[:preferences] || {})
|
||||||
@user.display_name = user_params[:display_name]
|
@user.display_name = user_params[:display_name]
|
||||||
|
current_avatar_checksum = @user.avatar.attached? ? @user.avatar.blob.checksum : nil
|
||||||
@user.avatar = user_params[:avatar] if user_params[:avatar].present?
|
@user.avatar = user_params[:avatar] if user_params[:avatar].present?
|
||||||
|
|
||||||
if @user.save
|
if @user.save
|
||||||
if @user.display_name && (@user.display_name != @user.ldap_entry[:display_name])
|
if @user.display_name && (@user.display_name != @user.ldap_entry[:display_name])
|
||||||
LdapManager::UpdateDisplayName.call(@user.dn, user_params[:display_name])
|
LdapManager::UpdateDisplayName.call(@user.dn, @user.display_name)
|
||||||
|
end
|
||||||
|
|
||||||
|
if @user.avatar.attached? &&
|
||||||
|
(@user.avatar.blob.checksum != current_avatar_checksum)
|
||||||
|
LdapManager::UpdateAvatar.call(@user.dn, @user.avatar_base64)
|
||||||
end
|
end
|
||||||
|
|
||||||
redirect_to setting_path(@settings_section), flash: {
|
redirect_to setting_path(@settings_section), flash: {
|
||||||
|
@ -10,9 +10,9 @@ class User < ApplicationRecord
|
|||||||
#
|
#
|
||||||
|
|
||||||
has_one_attached :avatar do |attachable|
|
has_one_attached :avatar do |attachable|
|
||||||
attachable.variant :small, resize_to_fill: [64, 64]
|
attachable.variant :small, resize_to_fill: [64, 64], convert: :jpeg
|
||||||
attachable.variant :medium, resize_to_fill: [256, 256]
|
attachable.variant :medium, resize_to_fill: [256, 256], convert: :jpeg
|
||||||
attachable.variant :large, resize_to_fill: [512, 512]
|
attachable.variant :large, resize_to_fill: [512, 512], convert: :jpeg
|
||||||
end
|
end
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -167,6 +167,11 @@ class User < ApplicationRecord
|
|||||||
@display_name ||= ldap_entry[:display_name]
|
@display_name ||= ldap_entry[:display_name]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def avatar_base64(variant: :large)
|
||||||
|
Base64.strict_encode64 avatar.variant(variant).processed.download
|
||||||
|
end
|
||||||
|
|
||||||
def services_enabled
|
def services_enabled
|
||||||
ldap_entry[:service] || []
|
ldap_entry[:service] || []
|
||||||
end
|
end
|
||||||
|
12
app/services/ldap_manager/update_avatar.rb
Normal file
12
app/services/ldap_manager/update_avatar.rb
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
module LdapManager
|
||||||
|
class UpdateAvatar < LdapManagerService
|
||||||
|
def initialize(dn, img_data)
|
||||||
|
@dn = dn
|
||||||
|
@img_data = img_data
|
||||||
|
end
|
||||||
|
|
||||||
|
def call
|
||||||
|
replace_attribute @dn, :jpegPhoto, @img_data
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
x
Reference in New Issue
Block a user