user card admin info

This commit is contained in:
Henry Jameson 2026-06-10 14:09:07 +03:00
commit 14a4ca2f75
5 changed files with 95 additions and 24 deletions

View file

@ -8,7 +8,15 @@ import { useMergedConfigStore } from 'src/stores/merged_config.js'
import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator' import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'
const BasicUserCard = { const BasicUserCard = {
props: ['user'], props: {
user: {
type: Object,
},
showLineLabels: {
type: Boolean,
default: false,
}
},
components: { components: {
UserPopover, UserPopover,
UserAvatar, UserAvatar,

View file

@ -23,6 +23,10 @@
:title="user.name" :title="user.name"
class="basic-user-card-user-name" class="basic-user-card-user-name"
> >
<strong v-if="showLineLabels">
{{ $t('admin_dash.users.labels.name_colon') }}
{{ ' ' }}
</strong>
<RichContent <RichContent
class="basic-user-card-user-name-value" class="basic-user-card-user-name-value"
:html="user.name" :html="user.name"
@ -31,6 +35,10 @@
/> />
</div> </div>
<div> <div>
<strong v-if="showLineLabels">
{{ $t('admin_dash.users.labels.handle_colon') }}
{{ ' ' }}
</strong>
<user-link <user-link
class="basic-user-card-screen-name" class="basic-user-card-screen-name"
:user="user" :user="user"
@ -48,6 +56,7 @@
display: flex; display: flex;
flex: 1 0; flex: 1 0;
margin: 0; margin: 0;
line-height: 1.25;
--emoji-size: 1em; --emoji-size: 1em;
@ -69,7 +78,7 @@
&-user-name-value, &-user-name-value,
&-screen-name { &-screen-name {
display: inline-block; display: inline;
max-width: 100%; max-width: 100%;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;

View file

@ -10,7 +10,31 @@
<BasicUserCard <BasicUserCard
class="AdminCard" class="AdminCard"
:user="user" :user="user"
show-line-labels
> >
<div>
<strong>
{{ $t('admin_dash.users.labels.email_colon') }}
</strong>
{{ ' ' }}
<template v-if="user.adminData.email == null">
{{ $t('general.not_available') }}
</template>
<a :href="'mailto:' + user.adminData.email">
{{ user.adminData.email }}
</a>
</div>
<details
v-if="user.adminData.registration_reason != null"
open
>
<summary>
{{ $t('user_card.admin_data.registration_reason') }}
</summary>
<span>
{{ user.adminData.registration_reason }}
</span>
</details>
<div class="right-side"> <div class="right-side">
<label <label
v-if="isAdmin" v-if="isAdmin"

View file

@ -349,7 +349,7 @@
</div> </div>
<div <div
class="admin-data" class="admin-data"
v-if="user.adminData" v-if="user.adminData && !hideBio"
> >
<details> <details>
<summary> <summary>
@ -357,6 +357,28 @@
</summary> </summary>
<div class="user-profile-fields"> <div class="user-profile-fields">
<dl class="user-profile-field"> <dl class="user-profile-field">
<dt class="user-profile-field-name">
{{ $t('admin_dash.users.local_id') }}
</dt>
<dd class="user-profile-field-value">
{{ user.adminData.id }}
</dd>
</dl>
<dl
v-if="user.is_local"
class="user-profile-field"
>
<dt class="user-profile-field-name">
{{ $t('admin_dash.users.labels.email') }}
</dt>
<dd class="user-profile-field-value">
{{ user.adminData.email == null ? $t('general.not_available') : user.adminData.email }}
</dd>
</dl>
<dl
v-if="user.is_local"
class="user-profile-field"
>
<dt class="user-profile-field-name"> <dt class="user-profile-field-name">
{{ $t('general.role.admin') }} {{ $t('general.role.admin') }}
</dt> </dt>
@ -364,7 +386,10 @@
{{ $t('general.' + (user.adminData.roles.admin ? 'yes' : 'no')) }} {{ $t('general.' + (user.adminData.roles.admin ? 'yes' : 'no')) }}
</dd> </dd>
</dl> </dl>
<dl class="user-profile-field"> <dl
v-if="user.is_local"
class="user-profile-field"
>
<dt class="user-profile-field-name"> <dt class="user-profile-field-name">
{{ $t('general.role.moderator') }} {{ $t('general.role.moderator') }}
</dt> </dt>
@ -372,12 +397,26 @@
{{ $t('general.' + (user.adminData.roles.moderator ? 'yes' : 'no')) }} {{ $t('general.' + (user.adminData.roles.moderator ? 'yes' : 'no')) }}
</dd> </dd>
</dl> </dl>
<dl class="user-profile-field"> <dl
v-if="user.is_local"
class="user-profile-field"
>
<dt class="user-profile-field-name"> <dt class="user-profile-field-name">
{{ $t('admin_dash.users.labels.email') }} {{ $t('admin_dash.users.indicator.confirmed') }}
</dt> </dt>
<dd class="user-profile-field-value"> <dd class="user-profile-field-value">
{{ user.adminData.email == null ? $t('general.not_available') : user.adminData.email }} {{ $t('general.' + (user.adminData.is_confirmed ? 'yes' : 'no')) }}
</dd>
</dl>
<dl
v-if="user.is_local"
class="user-profile-field"
>
<dt class="user-profile-field-name">
{{ $t('admin_dash.users.indicator.approved') }}
</dt>
<dd class="user-profile-field-value">
{{ $t('general.' + (user.adminData.is_approved ? 'yes' : 'no')) }}
</dd> </dd>
</dl> </dl>
<dl class="user-profile-field"> <dl class="user-profile-field">
@ -388,23 +427,10 @@
{{ $t('general.' + (user.adminData.is_suggested ? 'yes' : 'no')) }} {{ $t('general.' + (user.adminData.is_suggested ? 'yes' : 'no')) }}
</dd> </dd>
</dl> </dl>
<dl class="user-profile-field"> <details
<dt class="user-profile-field-name"> v-if="user.is_local"
{{ $t('admin_dash.users.indicator.confirmed') }} open
</dt> >
<dd class="user-profile-field-value">
{{ $t('general.' + (user.adminData.is_confirmed ? 'yes' : 'no')) }}
</dd>
</dl>
<dl class="user-profile-field">
<dt class="user-profile-field-name">
{{ $t('admin_dash.users.indicator.approved') }}
</dt>
<dd class="user-profile-field-value">
{{ $t('general.' + (user.adminData.is_approved ? 'yes' : 'no')) }}
</dd>
</dl>
<details open>
<summary> <summary>
{{ $t('user_card.admin_data.registration_reason') }} {{ $t('user_card.admin_data.registration_reason') }}
</summary> </summary>

View file

@ -1297,10 +1297,14 @@
}, },
"users": { "users": {
"title": "Users", "title": "Users",
"local_id": "Local ID",
"labels": { "labels": {
"query": "Search", "query": "Search",
"name": "Name", "name": "Name",
"name_colon": "Name:",
"email": "Email", "email": "Email",
"email_colon": "Email:",
"handle_colon": "Handle:",
"origin": "Origin", "origin": "Origin",
"activity": "Activity", "activity": "Activity",
"privileges": "Privileges" "privileges": "Privileges"