diff --git a/app/models/user.rb b/app/models/user.rb index 1886b1f..d73d780 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -159,6 +159,15 @@ class User < ApplicationRecord @display_name ||= ldap_entry[:display_name] end + def avatar + @avatar ||= LdapManager::FetchAvatar.call(cn: cn) + end + + def avatar_base64 + return nil if avatar.nil? + @avatar_base64 ||= Base64.strict_encode64(avatar) + end + def nostr_pubkey @nostr_pubkey ||= ldap_entry[:nostr_key] end @@ -186,10 +195,6 @@ class User < ApplicationRecord ZBase32.encode(Digest::SHA1.digest(cn)) end - def avatar - @avatar_base64 ||= LdapManager::FetchAvatar.call(cn: cn) - end - def services_enabled ldap_entry[:services_enabled] || [] end diff --git a/app/services/ldap_manager/fetch_avatar.rb b/app/services/ldap_manager/fetch_avatar.rb index 11035ae..a838bb8 100644 --- a/app/services/ldap_manager/fetch_avatar.rb +++ b/app/services/ldap_manager/fetch_avatar.rb @@ -5,12 +5,12 @@ module LdapManager end def call - treebase = ldap_config["base"] + treebase = ldap_config["base"] attributes = %w{ jpegPhoto } - filter = Net::LDAP::Filter.eq("cn", @cn) + filter = Net::LDAP::Filter.eq("cn", @cn) entry = client.search(base: treebase, filter: filter, attributes: attributes).first - entry.try(:jpegPhoto) ? entry.jpegPhoto.first : nil + entry&.jpegPhoto ? entry.jpegPhoto.first : nil end end end diff --git a/app/services/ldap_manager/update_avatar.rb b/app/services/ldap_manager/update_avatar.rb index f3c8975..d238303 100644 --- a/app/services/ldap_manager/update_avatar.rb +++ b/app/services/ldap_manager/update_avatar.rb @@ -8,20 +8,20 @@ module LdapManager end def call - replace_attribute @dn, :jpegPhoto, @img_data + result = replace_attribute @dn, :jpegPhoto, @img_data + result end private def process(file) processed = ImageProcessing::Vips - .resize_to_fill(512, 512) + .resize_to_fill(256, 256) .source(file) .convert("jpeg") .saver(strip: true) .call - - Base64.strict_encode64 processed.read + processed.read end end end diff --git a/app/views/settings/_profile.html.erb b/app/views/settings/_profile.html.erb index 4443e25..45ffc37 100644 --- a/app/views/settings/_profile.html.erb +++ b/app/views/settings/_profile.html.erb @@ -20,7 +20,7 @@
- Your user address for Chat and Lightning Network. + Your account's address on the Internet
<%= form_for(@user, url: setting_path(:profile), html: { :method => :put }) do |f| %> @@ -40,9 +40,10 @@ Default profile picture- <%= image_tag "data:image/jpeg;base64,#{current_user.avatar}", class: "h-24 w-24 rounded-lg" %> + <%= image_tag "data:image/jpeg;base64,#{current_user.avatar_base64}", + class: "h-24 w-24 rounded-lg" %>
<% end %>