Skip to content

Commit f67d86e

Browse files
committed
Ensure we have user when rendering user details
1 parent 768d18e commit f67d86e

File tree

1 file changed

+106
-104
lines changed

1 file changed

+106
-104
lines changed

web-app/packages/admin-lib/src/modules/admin/views/AccountDetailView.vue

Lines changed: 106 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -7,120 +7,122 @@
77
</template>
88
</app-section>
99
</app-container>
10-
11-
<app-container>
12-
<app-section class="p-4">
13-
<div class="flex flex-column align-items-center row-gap-3 text-center">
14-
<PAvatar
15-
v-if="user"
16-
:label="$filters.getAvatar(user?.email, profile?.name)"
17-
size="xlarge"
18-
shape="circle"
19-
:pt="{
20-
root: {
21-
class: 'font-semibold text-color-forest'
22-
}
23-
}"
24-
/>
25-
<h3 class="headline-h2" data-cy="profile-name">
26-
{{
27-
profile?.name
28-
? `${profile.name} (${user?.username})`
29-
: user.username
30-
}}
31-
</h3>
32-
<p
33-
class="m-0 paragraph-p6 overflow-wrap-anywhere"
34-
data-cy="profile-email"
10+
<template v-if="user">
11+
<app-container>
12+
<app-section class="p-4">
13+
<div
14+
class="flex flex-column align-items-center row-gap-3 text-center"
3515
>
36-
<i
37-
v-if="!user?.verified_email"
38-
v-tooltip.top="{
39-
value: 'Email verification status'
16+
<PAvatar
17+
:label="$filters.getAvatar(user?.email, profile?.name)"
18+
size="xlarge"
19+
shape="circle"
20+
:pt="{
21+
root: {
22+
class: 'font-semibold text-color-forest'
23+
}
4024
}"
41-
class="ti ti-alert-circle-filled"
42-
style="color: var(--grape-color)"
43-
></i>
44-
{{ user?.email }}
45-
</p>
46-
<dl class="profile-view-detail-list grid grid-nogutter paragraph-p5">
47-
<div
48-
class="col-6 flex flex-column align-items-start text-left flex-wrap"
25+
/>
26+
<h3 class="headline-h2" data-cy="profile-name">
27+
{{
28+
profile?.name
29+
? `${profile.name} (${user?.username})`
30+
: user.username
31+
}}
32+
</h3>
33+
<p
34+
class="m-0 paragraph-p6 overflow-wrap-anywhere"
35+
data-cy="profile-email"
4936
>
50-
<dt class="paragraph-p6 opacity-80 mb-2">Last signed in</dt>
51-
<dd class="font-semibold" data-cy="profile-last-signed-in">
52-
{{ $filters.date(user?.last_signed_in) || '-' }}
53-
</dd>
54-
</div>
55-
<div class="col-6 flex flex-column align-items-end">
56-
<dt class="paragraph-p6 opacity-80 mb-2">Registered</dt>
57-
<dd class="font-semibold" data-cy="profile-registered">
58-
{{ $filters.date(user?.registration_date) }}
59-
</dd>
60-
</div>
61-
</dl>
62-
</div>
63-
</app-section>
64-
</app-container>
65-
<app-container v-if="userStore.loggedUser?.id !== user?.id">
66-
<app-section>
67-
<template #title>Advanced</template>
68-
69-
<app-settings :items="settingsItems">
70-
<template #notifications>
71-
<div class="flex-shrink-0 paragraph-p1">
72-
<PInputSwitch
73-
:model-value="profile?.receive_notifications"
74-
disabled
75-
/>
76-
</div>
77-
</template>
78-
<template #adminAccess>
79-
<div class="flex-shrink-0 paragraph-p1">
37+
<i
38+
v-if="!user?.verified_email"
39+
v-tooltip.top="{
40+
value: 'Email verification status'
41+
}"
42+
class="ti ti-alert-circle-filled"
43+
style="color: var(--grape-color)"
44+
></i>
45+
{{ user?.email }}
46+
</p>
47+
<dl class="profile-view-detail-list grid grid-nogutter paragraph-p5">
8048
<div
81-
class="flex align-items-center flex-shrink-0"
82-
data-cy="profile-notification"
49+
class="col-6 flex flex-column align-items-start text-left flex-wrap"
8350
>
51+
<dt class="paragraph-p6 opacity-80 mb-2">Last signed in</dt>
52+
<dd class="font-semibold" data-cy="profile-last-signed-in">
53+
{{ $filters.date(user.last_signed_in) || '-' }}
54+
</dd>
55+
</div>
56+
<div class="col-6 flex flex-column align-items-end">
57+
<dt class="paragraph-p6 opacity-80 mb-2">Registered</dt>
58+
<dd class="font-semibold" data-cy="profile-registered">
59+
{{ $filters.date(user?.registration_date) }}
60+
</dd>
61+
</div>
62+
</dl>
63+
</div>
64+
</app-section>
65+
</app-container>
66+
<app-container v-if="userStore.loggedUser?.id !== user?.id">
67+
<app-section>
68+
<template #title>Advanced</template>
69+
70+
<app-settings :items="settingsItems">
71+
<template #notifications>
72+
<div class="flex-shrink-0 paragraph-p1">
73+
<PInputSwitch
74+
:model-value="profile?.receive_notifications"
75+
disabled
76+
/>
77+
</div>
78+
</template>
79+
<template #adminAccess>
80+
<div class="flex-shrink-0 paragraph-p1">
81+
<div
82+
class="flex align-items-center flex-shrink-0"
83+
data-cy="profile-notification"
84+
>
85+
<PButton
86+
:severity="user?.is_admin ? 'danger' : 'warning'"
87+
:disabled="
88+
!instanceStore.configData?.enable_superadmin_assignment
89+
"
90+
@click="switchAdminAccess"
91+
:label="
92+
!user?.is_admin
93+
? 'Grant admin access'
94+
: 'Revoke admin access'
95+
"
96+
/>
97+
</div>
98+
</div>
99+
</template>
100+
<template #accountActivation>
101+
<div class="flex-shrink-0">
84102
<PButton
85-
:severity="user?.is_admin ? 'danger' : 'warning'"
86-
:disabled="
87-
!instanceStore.configData?.enable_superadmin_assignment
88-
"
89-
@click="switchAdminAccess"
103+
@click="changeStatusDialog"
104+
:severity="user?.active ? 'warning' : 'secondary'"
90105
:label="
91-
!user?.is_admin
92-
? 'Grant admin access'
93-
: 'Revoke admin access'
106+
user?.active ? 'Deactivate account' : 'Activate account'
94107
"
108+
class="w-auto mr-1"
95109
/>
96110
</div>
97-
</div>
98-
</template>
99-
<template #accountActivation>
100-
<div class="flex-shrink-0">
101-
<PButton
102-
@click="changeStatusDialog"
103-
:severity="user?.active ? 'warning' : 'secondary'"
104-
:label="
105-
user?.active ? 'Deactivate account' : 'Activate account'
106-
"
107-
class="w-auto mr-1"
108-
/>
109-
</div>
110-
</template>
111-
<template #deleteAccount>
112-
<div class="flex-shrink-0">
113-
<PButton
114-
@click="confirmDeleteUser"
115-
severity="danger"
116-
data-cy="profile-close-account-btn"
117-
label="Delete account"
118-
/>
119-
</div>
120-
</template>
121-
</app-settings>
122-
</app-section>
123-
</app-container>
111+
</template>
112+
<template #deleteAccount>
113+
<div class="flex-shrink-0">
114+
<PButton
115+
@click="confirmDeleteUser"
116+
severity="danger"
117+
data-cy="profile-close-account-btn"
118+
label="Delete account"
119+
/>
120+
</div>
121+
</template>
122+
</app-settings>
123+
</app-section>
124+
</app-container>
125+
</template>
124126
</admin-layout>
125127
</template>
126128

0 commit comments

Comments
 (0)