Add audit button to user profile

This commit is contained in:
Evert Prants 2025-03-08 10:20:35 +02:00
parent 15e02f978c
commit 3cd64c3527
Signed by: evert
GPG Key ID: 0960A17F9F40237D

View File

@ -1,20 +1,21 @@
<script lang="ts"> <script lang="ts">
import { get } from 'svelte/store';
import { t } from '$lib/i18n';
import type { ActionData, PageData } from './$types';
import AdminPrivilegesSelect from '$lib/components/admin/AdminPrivilegesSelect.svelte';
import { env } from '$env/dynamic/public';
import { onNavigate } from '$app/navigation';
import { popupFormErrors } from '$lib/form-errors';
import { displayMessage, clearMessages } from '$lib/stores/messages.store';
import { hasPrivileges } from '$lib/utils';
import SplitView from '$lib/components/container/SplitView.svelte'; import SplitView from '$lib/components/container/SplitView.svelte';
import FormWrapper from '$lib/components/form/FormWrapper.svelte'; import FormWrapper from '$lib/components/form/FormWrapper.svelte';
import FormSection from '$lib/components/form/FormSection.svelte'; import FormSection from '$lib/components/form/FormSection.svelte';
import FormControl from '$lib/components/form/FormControl.svelte'; import FormControl from '$lib/components/form/FormControl.svelte';
import ColumnView from '$lib/components/container/ColumnView.svelte'; import ColumnView from '$lib/components/container/ColumnView.svelte';
import AvatarCard from '$lib/components/avatar/AvatarCard.svelte'; import AvatarCard from '$lib/components/avatar/AvatarCard.svelte';
import Button from '$lib/components/Button.svelte';
import { t } from '$lib/i18n';
import type { ActionData, PageData } from './$types';
import AdminPrivilegesSelect from '$lib/components/admin/AdminPrivilegesSelect.svelte';
import { env } from '$env/dynamic/public';
import ActionButton from '$lib/components/ActionButton.svelte'; import ActionButton from '$lib/components/ActionButton.svelte';
import { onNavigate } from '$app/navigation'; import Button from '$lib/components/Button.svelte';
import { popupFormErrors } from '$lib/form-errors';
import { displayMessage, clearMessages } from '$lib/stores/messages.store';
import { get } from 'svelte/store';
interface Props { interface Props {
data: PageData; data: PageData;
@ -23,6 +24,8 @@
let { data, form }: Props = $props(); let { data, form }: Props = $props();
const hasAuditPrivilege = hasPrivileges(data.user.privileges, ['admin:audit']);
$effect(() => popupFormErrors(form, 'admin.users.errors')); $effect(() => popupFormErrors(form, 'admin.users.errors'));
$effect(() => { $effect(() => {
if (form?.errors && !form.errors.length) { if (form?.errors && !form.errors.length) {
@ -97,16 +100,33 @@
{/if} {/if}
<h3>{$t('admin.users.actions')}</h3> <h3>{$t('admin.users.actions')}</h3>
{#if data.details.activated} <ul>
<ActionButton action="?/email&type=password">{$t('admin.users.passwordEmail')}</ActionButton> {#if hasAuditPrivilege}
{:else} <li>
<ActionButton action="?/email&type=activate">{$t('admin.users.activationEmail')}</ActionButton <a href="/ssoadmin/audit?user={data.details.uuid}">{$t('admin.audit.title')}</a>
> </li>
<form action="?/deleteInfo" method="POST"> {/if}
<Button type="submit" variant="link">{$t('admin.users.deleteInfo')}</Button>
- <span>{$t('admin.users.deleteInfoHint')}</span> {#if data.details.activated}
</form> <li>
{/if} <ActionButton action="?/email&type=password"
>{$t('admin.users.passwordEmail')}</ActionButton
>
</li>
{:else}
<li>
<ActionButton action="?/email&type=activate"
>{$t('admin.users.activationEmail')}</ActionButton
>
</li>
<li>
<form action="?/deleteInfo" method="POST">
<Button type="submit" variant="link">{$t('admin.users.deleteInfo')}</Button>
- <span>{$t('admin.users.deleteInfoHint')}</span>
</form>
</li>
{/if}
</ul>
</ColumnView> </ColumnView>
</SplitView> </SplitView>