<%= render HeaderComponent.new(title: "User: #{@user.cn}") %> <%= render MainSimpleComponent.new do %>

Account

ID <%= @user.id %>
Created at <%= @user.created_at.strftime("%Y-%m-%d (%H:%M UTC)") %>
Confirmed at <% if @user.confirmed_at %> <%= @user.confirmed_at.strftime("%Y-%m-%d (%H:%M UTC)") %> <% else %> <%= badge "pending", :yellow %> <% end %>
Email <%= @user.email %>
Roles <%= @user.is_admin? ? badge("admin", :red) : "—" %>
Status <%= @user.is_contributing_member? ? badge("contributor", :green) : "" %> <%= @user.is_paying_member? ? badge("sustainer", :green) : "" %>
Invited by <% if @user.inviter %> <%= link_to @user.inviter.cn, admin_user_path(@user.inviter.cn), class: 'ks-text-link' %> <% else %>—<% end %>
Invitations available
<%= @user.invitations.count %> <% if @user.invitations.unused.count > 0 %> <%= link_to invitations_admin_user_path(@user.cn), id: "remove-invitations", data: { turbo_method: :delete, turbo_confirm: "Delete all of #{@user.cn}'s available invitations?" } do %> <%= render partial: "icons/x-circle", locals: { custom_class: "text-red-600 hover:text-red-500 -mt-2 -mb-1 h-6 w-6 inline-block" } %> <% end %> <% end %>
<%= render ModalComponent.new(show_close_button: false) do %> <%= render partial: "admin/users/create_invitations", locals: { user: @user } %> <% end %>
Invited users <% if @user.invitees.length > 0 %>
    <% @user.invitees.order(cn: :asc).each do |invitee| %>
  • <%= link_to invitee.cn, admin_user_path(invitee.cn), class: 'ks-text-link' %>
  • <% end %>
<% else %>—<% end %>

Avatar

<% if @user.avatar.attached? %>
Image <%= image_tag image_url_for(@user.avatar), class: "h-20 w-20 rounded-lg" %>
Content type <%= @user.avatar.content_type %>
Size <%= number_to_human_size(@user.avatar.blob.byte_size) %>
<% else %>

No avatar uploaded

<% end %>

LDAP

Avatar <% if @ldap_avatar.present? %> JPEG size: <%= number_to_human_size(@ldap_avatar.size) %> <% else %> — <% end %>
Display name <%= @user.display_name || "—" %>
PGP key <% if @user.pgp_pubkey.present? %> <% if @user.pgp_pubkey_contains_user_address? %> <%= link_to wkd_key_url(hashed_username: @user.wkd_hash, l: @user.cn, format: :txt), class: "ks-text-link", target: "_blank" do %> <%= "#{@user.pgp_fpr[0, 8]}…#{@user.pgp_fpr[-8..-1]}" %> <% end %> <% else %> <%= "#{@user.pgp_fpr[0, 8]}…#{@user.pgp_fpr[-8..-1]}" %> <% end %>
<% @user.gnupg_key.uids.each do |uid| %> <%= uid.uid %>
<% end %> <% else %> — <% end %>

Services

<% if Setting.discourse_enabled %> <% end %> <% if Setting.email_enabled %> <% end %> <% if Setting.gitea_enabled %> <% end %> <% if Setting.mastodon_enabled %> <% end %> <% if Setting.mediawiki_enabled %> <% end %> <% if Setting.ejabberd_enabled %> <% end %> <% if Setting.nostr_enabled %> <% end %> <% if Setting.remotestorage_enabled %> <% end %>
Name Enabled
Discourse <%= render FormElements::ToggleComponent.new( enabled: @services_enabled.include?("discourse"), input_enabled: false ) %> <%= link_to "Open profile", "#{Setting.discourse_public_url}/u/#{@user.cn}/summary", class: "btn-sm btn-gray" %>
E-Mail <%= render FormElements::ToggleComponent.new( enabled: Flipper.enabled?(:email, current_user), input_enabled: false ) %>
Gitea <%= render FormElements::ToggleComponent.new( enabled: @services_enabled.include?("gitea"), input_enabled: false ) %> <%= link_to "Open profile", "#{Setting.gitea_public_url}/#{@user.cn}", class: "btn-sm btn-gray" %>
Mastodon <%= render FormElements::ToggleComponent.new( enabled: @services_enabled.include?("mastodon"), input_enabled: false ) %> <%= link_to "Open profile", "#{Setting.mastodon_public_url}/@#{@user.cn}", class: "btn-sm btn-gray" %>
MediaWiki <%= render FormElements::ToggleComponent.new( enabled: @services_enabled.include?("mediawiki"), input_enabled: false ) %> <%= link_to "Open profile", "#{Setting.mediawiki_public_url}/Special:Contributions/#{@user.cn}", class: "btn-sm btn-gray" %>
XMPP (ejabberd) <%= render FormElements::ToggleComponent.new( enabled: @services_enabled.include?("ejabberd"), input_enabled: false ) %> <% if Setting.ejabberd_admin_url.present? %> <%= link_to "Open profile", "#{Setting.ejabberd_admin_url}/server/#{@user.ou}/user/#{@user.cn}/", class: "btn-sm btn-gray" %> <% end %>
Nostr <%= render FormElements::ToggleComponent.new( enabled: @user.nostr_pubkey.present?, input_enabled: false ) %> <%= link_to "Open profile", "https://njump.me/#{@user.nostr_pubkey_bech32}", class: "btn-sm btn-gray" %>
remoteStorage <%= render FormElements::ToggleComponent.new( enabled: Flipper.enabled?(:remotestorage, current_user) && @services_enabled.include?("remotestorage"), input_enabled: false ) %>
<% if Setting.lndhub_admin_enabled? && @user.confirmed? %>

LndHub

<% if @lndhub_user %>
Account Balance Incoming Outgoing Fees
<%= @user.lndhub_username %> <%= number_with_delimiter @lndhub_user.balance %> sats <%= number_with_delimiter @lndhub_user.sum_incoming %> sats <%= number_with_delimiter @lndhub_user.sum_outgoing %> sats <%= number_with_delimiter @lndhub_user.sum_fees %> sats
<% else %>

No LndHub user found for account <%= @user.lndhub_username %>. <% end %>

<% end %> <% end %>