web/admin: add tab to show events of a user
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
		
							
								
								
									
										77
									
								
								web/src/elements/events/UserEvents.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								web/src/elements/events/UserEvents.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,77 @@
 | 
			
		||||
import { t } from "@lingui/macro";
 | 
			
		||||
import { customElement, html, property, TemplateResult } from "lit-element";
 | 
			
		||||
import { AKResponse } from "../../api/Client";
 | 
			
		||||
import { Table, TableColumn } from "../table/Table";
 | 
			
		||||
import { Event, EventsApi } from "authentik-api";
 | 
			
		||||
 | 
			
		||||
import "../forms/DeleteForm";
 | 
			
		||||
import "../Tabs";
 | 
			
		||||
import "../buttons/ModalButton";
 | 
			
		||||
import "../buttons/SpinnerButton";
 | 
			
		||||
import "../buttons/Dropdown";
 | 
			
		||||
import "../../pages/events/EventInfo";
 | 
			
		||||
import { PAGE_SIZE } from "../../constants";
 | 
			
		||||
import { DEFAULT_CONFIG } from "../../api/Config";
 | 
			
		||||
import { EventWithContext } from "../../api/Events";
 | 
			
		||||
 | 
			
		||||
@customElement("ak-events-user")
 | 
			
		||||
export class ObjectChangelog extends Table<Event> {
 | 
			
		||||
    expandable = true;
 | 
			
		||||
 | 
			
		||||
    @property()
 | 
			
		||||
    order = "-created";
 | 
			
		||||
 | 
			
		||||
    @property()
 | 
			
		||||
    targetUser!: string;
 | 
			
		||||
 | 
			
		||||
    apiEndpoint(page: number): Promise<AKResponse<Event>> {
 | 
			
		||||
        return new EventsApi(DEFAULT_CONFIG).eventsEventsList({
 | 
			
		||||
            page: page,
 | 
			
		||||
            ordering: this.order,
 | 
			
		||||
            pageSize: PAGE_SIZE / 2,
 | 
			
		||||
            username: this.targetUser
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    columns(): TableColumn[] {
 | 
			
		||||
        return [
 | 
			
		||||
            new TableColumn(t`Action`, "action"),
 | 
			
		||||
            new TableColumn(t`User`, "enabled"),
 | 
			
		||||
            new TableColumn(t`Creation Date`, "created"),
 | 
			
		||||
            new TableColumn(t`Client IP`, "client_ip"),
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    row(item: EventWithContext): TemplateResult[] {
 | 
			
		||||
        return [
 | 
			
		||||
            html`${item.action}`,
 | 
			
		||||
            html`<div>${item.user?.username}</div>
 | 
			
		||||
            ${item.user.on_behalf_of ? html`<small>
 | 
			
		||||
                ${t`On behalf of ${item.user.on_behalf_of.username}`}
 | 
			
		||||
            </small>` : html``}`,
 | 
			
		||||
            html`<span>${item.created?.toLocaleString()}</span>`,
 | 
			
		||||
            html`<span>${item.clientIp || "-"}</span>`,
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    renderExpanded(item: Event): TemplateResult {
 | 
			
		||||
        return html`
 | 
			
		||||
        <td role="cell" colspan="4">
 | 
			
		||||
            <div class="pf-c-table__expandable-row-content">
 | 
			
		||||
                <ak-event-info .event=${item as EventWithContext}></ak-event-info>
 | 
			
		||||
            </div>
 | 
			
		||||
        </td>
 | 
			
		||||
        <td></td>
 | 
			
		||||
        <td></td>
 | 
			
		||||
        <td></td>`;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    renderEmpty(): TemplateResult {
 | 
			
		||||
        return super.renderEmpty(html`<ak-empty-state header=${t`No Events found.`}>
 | 
			
		||||
            <div slot="body">
 | 
			
		||||
                ${t`No matching events could be found.`}
 | 
			
		||||
            </div>
 | 
			
		||||
        </ak-empty-state>`);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -69,6 +69,7 @@ msgid "Access token URL"
 | 
			
		||||
msgstr "Access token URL"
 | 
			
		||||
 | 
			
		||||
#: src/elements/events/ObjectChangelog.ts:38
 | 
			
		||||
#: src/elements/events/UserEvents.ts:35
 | 
			
		||||
#: src/pages/events/EventListPage.ts:43
 | 
			
		||||
#: src/pages/policies/event_matcher/EventMatcherPolicyForm.ts:79
 | 
			
		||||
msgid "Action"
 | 
			
		||||
@ -76,7 +77,7 @@ msgstr "Action"
 | 
			
		||||
 | 
			
		||||
#: src/pages/groups/MemberSelectModal.ts:45
 | 
			
		||||
#: src/pages/users/UserListPage.ts:51
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:115
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:116
 | 
			
		||||
msgid "Active"
 | 
			
		||||
msgstr "Active"
 | 
			
		||||
 | 
			
		||||
@ -469,7 +470,7 @@ msgstr "Change your password"
 | 
			
		||||
#: src/pages/sources/ldap/LDAPSourceViewPage.ts:113
 | 
			
		||||
#: src/pages/sources/oauth/OAuthSourceViewPage.ts:132
 | 
			
		||||
#: src/pages/sources/saml/SAMLSourceViewPage.ts:119
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:176
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:185
 | 
			
		||||
msgid "Changelog"
 | 
			
		||||
msgstr "Changelog"
 | 
			
		||||
 | 
			
		||||
@ -536,6 +537,7 @@ msgid "Client ID"
 | 
			
		||||
msgstr "Client ID"
 | 
			
		||||
 | 
			
		||||
#: src/elements/events/ObjectChangelog.ts:41
 | 
			
		||||
#: src/elements/events/UserEvents.ts:38
 | 
			
		||||
#: src/pages/events/EventListPage.ts:46
 | 
			
		||||
#: src/pages/policies/event_matcher/EventMatcherPolicyForm.ts:93
 | 
			
		||||
msgid "Client IP"
 | 
			
		||||
@ -831,6 +833,7 @@ msgid "Created {0}"
 | 
			
		||||
msgstr "Created {0}"
 | 
			
		||||
 | 
			
		||||
#: src/elements/events/ObjectChangelog.ts:40
 | 
			
		||||
#: src/elements/events/UserEvents.ts:37
 | 
			
		||||
#: src/pages/events/EventListPage.ts:45
 | 
			
		||||
msgid "Creation Date"
 | 
			
		||||
msgstr "Creation Date"
 | 
			
		||||
@ -1031,7 +1034,7 @@ msgstr "Each provider has a different issuer, based on the application slug."
 | 
			
		||||
#: src/pages/stages/prompt/PromptListPage.ts:75
 | 
			
		||||
#: src/pages/user-settings/tokens/UserTokenList.ts:113
 | 
			
		||||
#: src/pages/users/UserListPage.ts:76
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:146
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:147
 | 
			
		||||
msgid "Edit"
 | 
			
		||||
msgstr "Edit"
 | 
			
		||||
 | 
			
		||||
@ -1064,7 +1067,7 @@ msgstr "Either no applications are defined, or you don't have access to any."
 | 
			
		||||
#: src/pages/stages/identification/IdentificationStageForm.ts:82
 | 
			
		||||
#: src/pages/user-settings/UserDetailsPage.ts:71
 | 
			
		||||
#: src/pages/users/UserForm.ts:61
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:99
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:100
 | 
			
		||||
msgid "Email"
 | 
			
		||||
msgstr "Email"
 | 
			
		||||
 | 
			
		||||
@ -1224,7 +1227,7 @@ msgstr "Expiry"
 | 
			
		||||
msgid "Expiry date"
 | 
			
		||||
msgstr "Expiry date"
 | 
			
		||||
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:187
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:196
 | 
			
		||||
msgid "Explicit Consent"
 | 
			
		||||
msgstr "Explicit Consent"
 | 
			
		||||
 | 
			
		||||
@ -1624,7 +1627,7 @@ msgstr "Label shown next to/above the prompt."
 | 
			
		||||
 | 
			
		||||
#: src/pages/groups/MemberSelectModal.ts:46
 | 
			
		||||
#: src/pages/users/UserListPage.ts:52
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:107
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:108
 | 
			
		||||
msgid "Last login"
 | 
			
		||||
msgstr "Last login"
 | 
			
		||||
 | 
			
		||||
@ -1901,7 +1904,7 @@ msgstr "Monitor"
 | 
			
		||||
#: src/pages/user-settings/UserDetailsPage.ts:64
 | 
			
		||||
#: src/pages/users/UserForm.ts:54
 | 
			
		||||
#: src/pages/users/UserListPage.ts:50
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:91
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:92
 | 
			
		||||
msgid "Name"
 | 
			
		||||
msgstr "Name"
 | 
			
		||||
 | 
			
		||||
@ -1944,6 +1947,7 @@ msgid "No Applications available."
 | 
			
		||||
msgstr "No Applications available."
 | 
			
		||||
 | 
			
		||||
#: src/elements/events/ObjectChangelog.ts:68
 | 
			
		||||
#: src/elements/events/UserEvents.ts:65
 | 
			
		||||
msgid "No Events found."
 | 
			
		||||
msgstr "No Events found."
 | 
			
		||||
 | 
			
		||||
@ -1972,6 +1976,7 @@ msgid "No form found"
 | 
			
		||||
msgstr "No form found"
 | 
			
		||||
 | 
			
		||||
#: src/elements/events/ObjectChangelog.ts:70
 | 
			
		||||
#: src/elements/events/UserEvents.ts:67
 | 
			
		||||
msgid "No matching events could be found."
 | 
			
		||||
msgstr "No matching events could be found."
 | 
			
		||||
 | 
			
		||||
@ -2058,11 +2063,11 @@ msgstr "Notifications Transport"
 | 
			
		||||
msgid "Number"
 | 
			
		||||
msgstr "Number"
 | 
			
		||||
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:195
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:204
 | 
			
		||||
msgid "OAuth Authorization Codes"
 | 
			
		||||
msgstr "OAuth Authorization Codes"
 | 
			
		||||
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:203
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:212
 | 
			
		||||
msgid "OAuth Refresh Codes"
 | 
			
		||||
msgstr "OAuth Refresh Codes"
 | 
			
		||||
 | 
			
		||||
@ -2084,6 +2089,7 @@ msgid "Offset after which consent expires. (Format: hours=1;minutes=2;seconds=3)
 | 
			
		||||
msgstr "Offset after which consent expires. (Format: hours=1;minutes=2;seconds=3)."
 | 
			
		||||
 | 
			
		||||
#: src/elements/events/ObjectChangelog.ts:50
 | 
			
		||||
#: src/elements/events/UserEvents.ts:47
 | 
			
		||||
#: src/pages/events/EventListPage.ts:60
 | 
			
		||||
msgid "On behalf of {0}"
 | 
			
		||||
msgstr "On behalf of {0}"
 | 
			
		||||
@ -2182,7 +2188,7 @@ msgstr "Outposts are deployments of authentik components to support different en
 | 
			
		||||
#: src/pages/sources/ldap/LDAPSourceViewPage.ts:56
 | 
			
		||||
#: src/pages/sources/oauth/OAuthSourceViewPage.ts:55
 | 
			
		||||
#: src/pages/sources/saml/SAMLSourceViewPage.ts:58
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:73
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:74
 | 
			
		||||
msgid "Overview"
 | 
			
		||||
msgstr "Overview"
 | 
			
		||||
 | 
			
		||||
@ -2520,7 +2526,7 @@ msgid "Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only."
 | 
			
		||||
msgstr "Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only."
 | 
			
		||||
 | 
			
		||||
#: src/pages/users/UserListPage.ts:133
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:164
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:165
 | 
			
		||||
msgid "Reset Password"
 | 
			
		||||
msgstr "Reset Password"
 | 
			
		||||
 | 
			
		||||
@ -3047,7 +3053,7 @@ msgid "Successfully generated certificate-key pair."
 | 
			
		||||
msgstr "Successfully generated certificate-key pair."
 | 
			
		||||
 | 
			
		||||
#: src/pages/users/UserListPage.ts:128
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:159
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:160
 | 
			
		||||
msgid "Successfully generated recovery link"
 | 
			
		||||
msgstr "Successfully generated recovery link"
 | 
			
		||||
 | 
			
		||||
@ -3178,7 +3184,7 @@ msgstr "Successfully updated user."
 | 
			
		||||
msgid "Successfully updated {0} {1}"
 | 
			
		||||
msgstr "Successfully updated {0} {1}"
 | 
			
		||||
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:125
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:126
 | 
			
		||||
msgid "Superuser"
 | 
			
		||||
msgstr "Superuser"
 | 
			
		||||
 | 
			
		||||
@ -3473,7 +3479,7 @@ msgstr "Up-to-date!"
 | 
			
		||||
#: src/pages/user-settings/tokens/UserTokenList.ts:105
 | 
			
		||||
#: src/pages/users/UserActiveForm.ts:66
 | 
			
		||||
#: src/pages/users/UserListPage.ts:68
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:138
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:139
 | 
			
		||||
msgid "Update"
 | 
			
		||||
msgstr "Update"
 | 
			
		||||
 | 
			
		||||
@ -3549,7 +3555,7 @@ msgstr "Update Token"
 | 
			
		||||
 | 
			
		||||
#: src/pages/policies/BoundPoliciesList.ts:102
 | 
			
		||||
#: src/pages/users/UserListPage.ts:71
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:141
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:142
 | 
			
		||||
msgid "Update User"
 | 
			
		||||
msgstr "Update User"
 | 
			
		||||
 | 
			
		||||
@ -3590,6 +3596,7 @@ msgid "Use global settings"
 | 
			
		||||
msgstr "Use global settings"
 | 
			
		||||
 | 
			
		||||
#: src/elements/events/ObjectChangelog.ts:39
 | 
			
		||||
#: src/elements/events/UserEvents.ts:36
 | 
			
		||||
#: src/pages/events/EventInfo.ts:83
 | 
			
		||||
#: src/pages/events/EventListPage.ts:44
 | 
			
		||||
#: src/pages/policies/PolicyBindingForm.ts:140
 | 
			
		||||
@ -3603,7 +3610,7 @@ msgstr "Use global settings"
 | 
			
		||||
msgid "User"
 | 
			
		||||
msgstr "User"
 | 
			
		||||
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:77
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:78
 | 
			
		||||
msgid "User Info"
 | 
			
		||||
msgstr "User Info"
 | 
			
		||||
 | 
			
		||||
@ -3619,6 +3626,10 @@ msgstr "User Settings"
 | 
			
		||||
msgid "User details"
 | 
			
		||||
msgstr "User details"
 | 
			
		||||
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:177
 | 
			
		||||
msgid "User events"
 | 
			
		||||
msgstr "User events"
 | 
			
		||||
 | 
			
		||||
#: src/pages/stages/authenticator_validate/AuthenticatorValidateStageForm.ts:99
 | 
			
		||||
#: src/pages/stages/identification/IdentificationStageForm.ts:74
 | 
			
		||||
msgid "User fields"
 | 
			
		||||
@ -3633,7 +3644,7 @@ msgid "User password writeback"
 | 
			
		||||
msgstr "User password writeback"
 | 
			
		||||
 | 
			
		||||
#: src/pages/policies/BoundPoliciesList.ts:52
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:62
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:63
 | 
			
		||||
msgid "User {0}"
 | 
			
		||||
msgstr "User {0}"
 | 
			
		||||
 | 
			
		||||
@ -3661,7 +3672,7 @@ msgstr "Userinfo URL"
 | 
			
		||||
#: src/pages/stages/identification/IdentificationStageForm.ts:79
 | 
			
		||||
#: src/pages/user-settings/UserDetailsPage.ts:57
 | 
			
		||||
#: src/pages/users/UserForm.ts:47
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:83
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:84
 | 
			
		||||
msgid "Username"
 | 
			
		||||
msgstr "Username"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -69,6 +69,7 @@ msgid "Access token URL"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/elements/events/ObjectChangelog.ts:38
 | 
			
		||||
#: src/elements/events/UserEvents.ts:35
 | 
			
		||||
#: src/pages/events/EventListPage.ts:43
 | 
			
		||||
#: src/pages/policies/event_matcher/EventMatcherPolicyForm.ts:79
 | 
			
		||||
msgid "Action"
 | 
			
		||||
@ -76,7 +77,7 @@ msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/pages/groups/MemberSelectModal.ts:45
 | 
			
		||||
#: src/pages/users/UserListPage.ts:51
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:115
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:116
 | 
			
		||||
msgid "Active"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -465,7 +466,7 @@ msgstr ""
 | 
			
		||||
#: src/pages/sources/ldap/LDAPSourceViewPage.ts:113
 | 
			
		||||
#: src/pages/sources/oauth/OAuthSourceViewPage.ts:132
 | 
			
		||||
#: src/pages/sources/saml/SAMLSourceViewPage.ts:119
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:176
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:185
 | 
			
		||||
msgid "Changelog"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -530,6 +531,7 @@ msgid "Client ID"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/elements/events/ObjectChangelog.ts:41
 | 
			
		||||
#: src/elements/events/UserEvents.ts:38
 | 
			
		||||
#: src/pages/events/EventListPage.ts:46
 | 
			
		||||
#: src/pages/policies/event_matcher/EventMatcherPolicyForm.ts:93
 | 
			
		||||
msgid "Client IP"
 | 
			
		||||
@ -825,6 +827,7 @@ msgid "Created {0}"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/elements/events/ObjectChangelog.ts:40
 | 
			
		||||
#: src/elements/events/UserEvents.ts:37
 | 
			
		||||
#: src/pages/events/EventListPage.ts:45
 | 
			
		||||
msgid "Creation Date"
 | 
			
		||||
msgstr ""
 | 
			
		||||
@ -1023,7 +1026,7 @@ msgstr ""
 | 
			
		||||
#: src/pages/stages/prompt/PromptListPage.ts:75
 | 
			
		||||
#: src/pages/user-settings/tokens/UserTokenList.ts:113
 | 
			
		||||
#: src/pages/users/UserListPage.ts:76
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:146
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:147
 | 
			
		||||
msgid "Edit"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -1056,7 +1059,7 @@ msgstr ""
 | 
			
		||||
#: src/pages/stages/identification/IdentificationStageForm.ts:82
 | 
			
		||||
#: src/pages/user-settings/UserDetailsPage.ts:71
 | 
			
		||||
#: src/pages/users/UserForm.ts:61
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:99
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:100
 | 
			
		||||
msgid "Email"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -1216,7 +1219,7 @@ msgstr ""
 | 
			
		||||
msgid "Expiry date"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:187
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:196
 | 
			
		||||
msgid "Explicit Consent"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -1616,7 +1619,7 @@ msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/pages/groups/MemberSelectModal.ts:46
 | 
			
		||||
#: src/pages/users/UserListPage.ts:52
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:107
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:108
 | 
			
		||||
msgid "Last login"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -1893,7 +1896,7 @@ msgstr ""
 | 
			
		||||
#: src/pages/user-settings/UserDetailsPage.ts:64
 | 
			
		||||
#: src/pages/users/UserForm.ts:54
 | 
			
		||||
#: src/pages/users/UserListPage.ts:50
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:91
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:92
 | 
			
		||||
msgid "Name"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -1936,6 +1939,7 @@ msgid "No Applications available."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/elements/events/ObjectChangelog.ts:68
 | 
			
		||||
#: src/elements/events/UserEvents.ts:65
 | 
			
		||||
msgid "No Events found."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -1964,6 +1968,7 @@ msgid "No form found"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/elements/events/ObjectChangelog.ts:70
 | 
			
		||||
#: src/elements/events/UserEvents.ts:67
 | 
			
		||||
msgid "No matching events could be found."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -2050,11 +2055,11 @@ msgstr ""
 | 
			
		||||
msgid "Number"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:195
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:204
 | 
			
		||||
msgid "OAuth Authorization Codes"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:203
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:212
 | 
			
		||||
msgid "OAuth Refresh Codes"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -2076,6 +2081,7 @@ msgid "Offset after which consent expires. (Format: hours=1;minutes=2;seconds=3)
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/elements/events/ObjectChangelog.ts:50
 | 
			
		||||
#: src/elements/events/UserEvents.ts:47
 | 
			
		||||
#: src/pages/events/EventListPage.ts:60
 | 
			
		||||
msgid "On behalf of {0}"
 | 
			
		||||
msgstr ""
 | 
			
		||||
@ -2174,7 +2180,7 @@ msgstr ""
 | 
			
		||||
#: src/pages/sources/ldap/LDAPSourceViewPage.ts:56
 | 
			
		||||
#: src/pages/sources/oauth/OAuthSourceViewPage.ts:55
 | 
			
		||||
#: src/pages/sources/saml/SAMLSourceViewPage.ts:58
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:73
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:74
 | 
			
		||||
msgid "Overview"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -2512,7 +2518,7 @@ msgid "Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/pages/users/UserListPage.ts:133
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:164
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:165
 | 
			
		||||
msgid "Reset Password"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -3039,7 +3045,7 @@ msgid "Successfully generated certificate-key pair."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/pages/users/UserListPage.ts:128
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:159
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:160
 | 
			
		||||
msgid "Successfully generated recovery link"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -3170,7 +3176,7 @@ msgstr ""
 | 
			
		||||
msgid "Successfully updated {0} {1}"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:125
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:126
 | 
			
		||||
msgid "Superuser"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -3463,7 +3469,7 @@ msgstr ""
 | 
			
		||||
#: src/pages/user-settings/tokens/UserTokenList.ts:105
 | 
			
		||||
#: src/pages/users/UserActiveForm.ts:66
 | 
			
		||||
#: src/pages/users/UserListPage.ts:68
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:138
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:139
 | 
			
		||||
msgid "Update"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -3539,7 +3545,7 @@ msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/pages/policies/BoundPoliciesList.ts:102
 | 
			
		||||
#: src/pages/users/UserListPage.ts:71
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:141
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:142
 | 
			
		||||
msgid "Update User"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -3580,6 +3586,7 @@ msgid "Use global settings"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/elements/events/ObjectChangelog.ts:39
 | 
			
		||||
#: src/elements/events/UserEvents.ts:36
 | 
			
		||||
#: src/pages/events/EventInfo.ts:83
 | 
			
		||||
#: src/pages/events/EventListPage.ts:44
 | 
			
		||||
#: src/pages/policies/PolicyBindingForm.ts:140
 | 
			
		||||
@ -3593,7 +3600,7 @@ msgstr ""
 | 
			
		||||
msgid "User"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:77
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:78
 | 
			
		||||
msgid "User Info"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -3609,6 +3616,10 @@ msgstr ""
 | 
			
		||||
msgid "User details"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:177
 | 
			
		||||
msgid "User events"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/pages/stages/authenticator_validate/AuthenticatorValidateStageForm.ts:99
 | 
			
		||||
#: src/pages/stages/identification/IdentificationStageForm.ts:74
 | 
			
		||||
msgid "User fields"
 | 
			
		||||
@ -3623,7 +3634,7 @@ msgid "User password writeback"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/pages/policies/BoundPoliciesList.ts:52
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:62
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:63
 | 
			
		||||
msgid "User {0}"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -3651,7 +3662,7 @@ msgstr ""
 | 
			
		||||
#: src/pages/stages/identification/IdentificationStageForm.ts:79
 | 
			
		||||
#: src/pages/user-settings/UserDetailsPage.ts:57
 | 
			
		||||
#: src/pages/users/UserForm.ts:47
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:83
 | 
			
		||||
#: src/pages/users/UserViewPage.ts:84
 | 
			
		||||
msgid "Username"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,7 @@ export class LDAPSyncStatusCard extends AdminStatusCard<Task> {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    renderValue(): TemplateResult {
 | 
			
		||||
        return html`${t`Last sync: ${this.value?.taskFinishTimestamp?.toLocaleTimeString()}`}`;
 | 
			
		||||
        return html`${t`Last sync: ${this.value?.taskFinishTimestamp?.toLocaleTimeString() || "-"}`}`;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    getStatus(value: Task): Promise<AdminStatus> {
 | 
			
		||||
 | 
			
		||||
@ -14,7 +14,6 @@ import PFButton from "@patternfly/patternfly/components/Button/button.css";
 | 
			
		||||
import AKGlobal from "../../authentik.css";
 | 
			
		||||
 | 
			
		||||
import "../../elements/forms/ModalForm";
 | 
			
		||||
import "./UserForm";
 | 
			
		||||
import "../../elements/buttons/ActionButton";
 | 
			
		||||
import "../../elements/buttons/SpinnerButton";
 | 
			
		||||
import "../../elements/CodeMirror";
 | 
			
		||||
@ -25,6 +24,8 @@ import "../../elements/oauth/UserCodeList";
 | 
			
		||||
import "../../elements/oauth/UserRefreshList";
 | 
			
		||||
import "../../elements/charts/UserChart";
 | 
			
		||||
import "../../elements/PageHeader";
 | 
			
		||||
import "../../elements/events/UserEvents";
 | 
			
		||||
import "./UserForm";
 | 
			
		||||
import { CoreApi, User } from "authentik-api";
 | 
			
		||||
import { DEFAULT_CONFIG } from "../../api/Config";
 | 
			
		||||
import { EVENT_REFRESH } from "../../constants";
 | 
			
		||||
@ -75,7 +76,7 @@ export class UserViewPage extends LitElement {
 | 
			
		||||
        return html`<ak-tabs>
 | 
			
		||||
                <section slot="page-overview" data-tab-title="${t`Overview`}" class="pf-c-page__main-section pf-m-no-padding-mobile">
 | 
			
		||||
                    <div class="pf-l-gallery pf-m-gutter">
 | 
			
		||||
                        <div class="pf-c-card pf-l-gallery__item pf-m-4-col">
 | 
			
		||||
                        <div class="pf-c-card pf-l-gallery__item">
 | 
			
		||||
                            <div class="pf-c-card__title">
 | 
			
		||||
                                ${t`User Info`}
 | 
			
		||||
                            </div>
 | 
			
		||||
@ -167,7 +168,7 @@ export class UserViewPage extends LitElement {
 | 
			
		||||
                                </ak-action-button>
 | 
			
		||||
                            </div>
 | 
			
		||||
                        </div>
 | 
			
		||||
                        <div class="pf-c-card pf-l-gallery__item pf-m-4-col" style="grid-column-end: span 4;grid-row-end: span 2;">
 | 
			
		||||
                        <div class="pf-c-card pf-l-gallery__item" style="grid-column-end: span 4;grid-row-end: span 2;">
 | 
			
		||||
                            <div class="pf-c-card__body">
 | 
			
		||||
                                <ak-charts-user userId=${this.user.pk || 0}>
 | 
			
		||||
                                </ak-charts-user>
 | 
			
		||||
@ -175,6 +176,14 @@ export class UserViewPage extends LitElement {
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </div>
 | 
			
		||||
                </section>
 | 
			
		||||
                <section slot="page-events" data-tab-title="${t`User events`}" class="pf-c-page__main-section pf-m-no-padding-mobile">
 | 
			
		||||
                    <div class="pf-c-card">
 | 
			
		||||
                        <div class="pf-c-card__body">
 | 
			
		||||
                            <ak-events-user targetUser=${this.user.username}>
 | 
			
		||||
                            </ak-events-user>
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </div>
 | 
			
		||||
                </section>
 | 
			
		||||
                <section slot="page-changelog" data-tab-title="${t`Changelog`}" class="pf-c-page__main-section pf-m-no-padding-mobile">
 | 
			
		||||
                    <div class="pf-c-card">
 | 
			
		||||
                        <div class="pf-c-card__body">
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user