web/admin: show ldap sync status on overview page
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
		| @ -21,6 +21,9 @@ export class AggregateCard extends LitElement { | ||||
|             .pf-c-card.pf-c-card-aggregate { | ||||
|                 height: 100%; | ||||
|             } | ||||
|             .pf-c-card__header { | ||||
|                 flex-wrap: nowrap; | ||||
|             } | ||||
|             .center-value { | ||||
|                 font-size: var(--pf-global--icon--FontSize--lg); | ||||
|                 text-align: center; | ||||
|  | ||||
| @ -168,7 +168,7 @@ msgstr "Application's display Name." | ||||
| msgid "Applications" | ||||
| msgstr "Applications" | ||||
|  | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:39 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:40 | ||||
| msgid "Apps with most usage" | ||||
| msgstr "Apps with most usage" | ||||
|  | ||||
| @ -356,11 +356,11 @@ msgstr "Build hash: {0}" | ||||
| msgid "CA which the endpoint's Certificate is verified against. Can be left empty for no validation." | ||||
| msgstr "CA which the endpoint's Certificate is verified against. Can be left empty for no validation." | ||||
|  | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:54 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:55 | ||||
| msgid "Cached Flows" | ||||
| msgstr "Cached Flows" | ||||
|  | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:52 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:53 | ||||
| msgid "Cached Policies" | ||||
| msgstr "Cached Policies" | ||||
|  | ||||
| @ -1539,6 +1539,10 @@ msgstr "Kubeconfig" | ||||
| msgid "LDAP Source {0}" | ||||
| msgstr "LDAP Source {0}" | ||||
|  | ||||
| #: src/pages/admin-overview/cards/LDAPSyncStatusCardContainer.ts:24 | ||||
| msgid "LDAP Sync status {0}" | ||||
| msgstr "LDAP Sync status {0}" | ||||
|  | ||||
| #: src/pages/stages/prompt/PromptForm.ts:90 | ||||
| #: src/pages/stages/prompt/PromptListPage.ts:47 | ||||
| msgid "Label" | ||||
| @ -1661,7 +1665,7 @@ msgstr "Login to continue to {0}." | ||||
| msgid "Logins" | ||||
| msgstr "Logins" | ||||
|  | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:36 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:37 | ||||
| #: src/pages/applications/ApplicationViewPage.ts:71 | ||||
| msgid "Logins over the last 24 hours" | ||||
| msgstr "Logins over the last 24 hours" | ||||
| @ -1922,6 +1926,10 @@ msgstr "Not found" | ||||
| msgid "Not synced in the last hour, check System tasks." | ||||
| msgstr "Not synced in the last hour, check System tasks." | ||||
|  | ||||
| #: src/pages/admin-overview/cards/LDAPSyncStatusCard.ts:28 | ||||
| msgid "Not synced." | ||||
| msgstr "Not synced." | ||||
|  | ||||
| #: src/flows/stages/authenticator_static/AuthenticatorStaticStage.ts:58 | ||||
| #: src/flows/stages/authenticator_totp/AuthenticatorTOTPStage.ts:48 | ||||
| #: src/flows/stages/authenticator_validate/AuthenticatorValidateStageCode.ts:45 | ||||
| @ -2142,7 +2150,7 @@ msgid "Please enter your password" | ||||
| msgstr "Please enter your password" | ||||
|  | ||||
| #: src/interfaces/AdminInterface.ts:26 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:44 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:45 | ||||
| #: src/pages/flows/FlowListPage.ts:50 | ||||
| #: src/pages/policies/PolicyListPage.ts:38 | ||||
| msgid "Policies" | ||||
| @ -2292,7 +2300,7 @@ msgid "Provider type" | ||||
| msgstr "Provider type" | ||||
|  | ||||
| #: src/interfaces/AdminInterface.ts:20 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:42 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:43 | ||||
| #: src/pages/outposts/OutpostForm.ts:82 | ||||
| #: src/pages/outposts/OutpostListPage.ts:50 | ||||
| msgid "Providers" | ||||
| @ -3073,7 +3081,11 @@ msgstr "Sync users" | ||||
| msgid "Sync users' passwords" | ||||
| msgstr "Sync users' passwords" | ||||
|  | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:31 | ||||
| #: src/pages/admin-overview/cards/LDAPSyncStatusCard.ts:34 | ||||
| msgid "Synced {0}:{1}:{2}" | ||||
| msgstr "Synced {0}:{1}:{2}" | ||||
|  | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:32 | ||||
| msgid "System Overview" | ||||
| msgstr "System Overview" | ||||
|  | ||||
| @ -3513,7 +3525,7 @@ msgid "Username: Same as Text input, but checks for and prevents duplicate usern | ||||
| msgstr "Username: Same as Text input, but checks for and prevents duplicate usernames." | ||||
|  | ||||
| #: src/interfaces/AdminInterface.ts:32 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:46 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:47 | ||||
| #: src/pages/users/UserListPage.ts:31 | ||||
| msgid "Users" | ||||
| msgstr "Users" | ||||
| @ -3546,7 +3558,7 @@ msgstr "Validity days" | ||||
| msgid "Verification Certificate" | ||||
| msgstr "Verification Certificate" | ||||
|  | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:48 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:49 | ||||
| msgid "Version" | ||||
| msgstr "Version" | ||||
|  | ||||
| @ -3646,7 +3658,7 @@ msgstr "Whoops!" | ||||
| msgid "Windows" | ||||
| msgstr "Windows" | ||||
|  | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:50 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:51 | ||||
| msgid "Workers" | ||||
| msgstr "Workers" | ||||
|  | ||||
|  | ||||
| @ -168,7 +168,7 @@ msgstr "" | ||||
| msgid "Applications" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:39 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:40 | ||||
| msgid "Apps with most usage" | ||||
| msgstr "" | ||||
|  | ||||
| @ -352,11 +352,11 @@ msgstr "" | ||||
| msgid "CA which the endpoint's Certificate is verified against. Can be left empty for no validation." | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:54 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:55 | ||||
| msgid "Cached Flows" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:52 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:53 | ||||
| msgid "Cached Policies" | ||||
| msgstr "" | ||||
|  | ||||
| @ -1535,6 +1535,10 @@ msgstr "" | ||||
| msgid "LDAP Source {0}" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pages/admin-overview/cards/LDAPSyncStatusCardContainer.ts:24 | ||||
| msgid "LDAP Sync status {0}" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pages/stages/prompt/PromptForm.ts:90 | ||||
| #: src/pages/stages/prompt/PromptListPage.ts:47 | ||||
| msgid "Label" | ||||
| @ -1657,7 +1661,7 @@ msgstr "" | ||||
| msgid "Logins" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:36 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:37 | ||||
| #: src/pages/applications/ApplicationViewPage.ts:71 | ||||
| msgid "Logins over the last 24 hours" | ||||
| msgstr "" | ||||
| @ -1918,6 +1922,10 @@ msgstr "" | ||||
| msgid "Not synced in the last hour, check System tasks." | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pages/admin-overview/cards/LDAPSyncStatusCard.ts:28 | ||||
| msgid "Not synced." | ||||
| msgstr "" | ||||
|  | ||||
| #: src/flows/stages/authenticator_static/AuthenticatorStaticStage.ts:58 | ||||
| #: src/flows/stages/authenticator_totp/AuthenticatorTOTPStage.ts:48 | ||||
| #: src/flows/stages/authenticator_validate/AuthenticatorValidateStageCode.ts:45 | ||||
| @ -2138,7 +2146,7 @@ msgid "Please enter your password" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/interfaces/AdminInterface.ts:26 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:44 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:45 | ||||
| #: src/pages/flows/FlowListPage.ts:50 | ||||
| #: src/pages/policies/PolicyListPage.ts:38 | ||||
| msgid "Policies" | ||||
| @ -2288,7 +2296,7 @@ msgid "Provider type" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/interfaces/AdminInterface.ts:20 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:42 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:43 | ||||
| #: src/pages/outposts/OutpostForm.ts:82 | ||||
| #: src/pages/outposts/OutpostListPage.ts:50 | ||||
| msgid "Providers" | ||||
| @ -3069,7 +3077,11 @@ msgstr "" | ||||
| msgid "Sync users' passwords" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:31 | ||||
| #: src/pages/admin-overview/cards/LDAPSyncStatusCard.ts:34 | ||||
| msgid "Synced {0}:{1}:{2}" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:32 | ||||
| msgid "System Overview" | ||||
| msgstr "" | ||||
|  | ||||
| @ -3507,7 +3519,7 @@ msgid "Username: Same as Text input, but checks for and prevents duplicate usern | ||||
| msgstr "" | ||||
|  | ||||
| #: src/interfaces/AdminInterface.ts:32 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:46 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:47 | ||||
| #: src/pages/users/UserListPage.ts:31 | ||||
| msgid "Users" | ||||
| msgstr "" | ||||
| @ -3540,7 +3552,7 @@ msgstr "" | ||||
| msgid "Verification Certificate" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:48 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:49 | ||||
| msgid "Version" | ||||
| msgstr "" | ||||
|  | ||||
| @ -3640,7 +3652,7 @@ msgstr "" | ||||
| msgid "Windows" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:50 | ||||
| #: src/pages/admin-overview/AdminOverviewPage.ts:51 | ||||
| msgid "Workers" | ||||
| msgstr "" | ||||
|  | ||||
|  | ||||
| @ -4,8 +4,10 @@ import { CSSResult, customElement, html, LitElement, TemplateResult } from "lit- | ||||
| import "../../elements/charts/AdminLoginsChart"; | ||||
| import "../../elements/cards/AggregatePromiseCard"; | ||||
| import "./TopApplicationsTable"; | ||||
|  | ||||
| import "./cards/AdminStatusCard"; | ||||
| import "./cards/FlowCacheStatusCard"; | ||||
| import "./cards/LDAPSyncStatusCardContainer"; | ||||
| import "./cards/PolicyCacheStatusCard"; | ||||
| import "./cards/PolicyUnboundStatusCard"; | ||||
| import "./cards/ProviderStatusCard"; | ||||
| @ -53,6 +55,8 @@ export class AdminOverviewPage extends LitElement { | ||||
|                 </ak-admin-status-card-policy-cache> | ||||
|                 <ak-admin-status-card-flow-cache class="pf-l-gallery__item pf-m-4-col" icon="pf-icon pf-icon-server" header=${t`Cached Flows`}> | ||||
|                 </ak-admin-status-card-flow-cache> | ||||
|                 <ak-admin-status-card-ldap-sync-container > | ||||
|                 </ak-admin-status-card-ldap-sync-container> | ||||
|             </div> | ||||
|         </section>`; | ||||
|     } | ||||
|  | ||||
							
								
								
									
										48
									
								
								web/src/pages/admin-overview/cards/LDAPSyncStatusCard.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								web/src/pages/admin-overview/cards/LDAPSyncStatusCard.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,48 @@ | ||||
| import { t } from "@lingui/macro"; | ||||
| import { customElement, html, property, TemplateResult } from "lit-element"; | ||||
| import { AdminStatus, AdminStatusCard } from "./AdminStatusCard"; | ||||
| import { SourcesApi } from "authentik-api"; | ||||
| import { DEFAULT_CONFIG } from "../../../api/Config"; | ||||
| import "../../../elements/forms/ConfirmationForm"; | ||||
|  | ||||
| @customElement("ak-admin-status-card-ldap-sync") | ||||
| export class LDAPSyncStatusCard extends AdminStatusCard<Date | undefined> { | ||||
|  | ||||
|     @property() | ||||
|     slug!: string; | ||||
|  | ||||
|     getPrimaryValue(): Promise<Date | undefined> { | ||||
|         return new SourcesApi(DEFAULT_CONFIG).sourcesLdapSyncStatus({ | ||||
|             slug: this.slug | ||||
|         }).then((value) => { | ||||
|             return value.lastSync; | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     renderValue(): TemplateResult { | ||||
|         return html`${t`Last sync: ${this.value?.toLocaleTimeString()}`}`; | ||||
|     } | ||||
|  | ||||
|     getStatus(value: Date | undefined): Promise<AdminStatus> { | ||||
|         const now = new Date().getTime(); | ||||
|         const maxDelta = 3600000; // 1 hour | ||||
|         if (!value || (now - value.getTime()) > maxDelta) { | ||||
|             // No sync or last sync was over maxDelta ago | ||||
|             return Promise.resolve<AdminStatus>({ | ||||
|                 icon: "fa fa-exclamation-triangle pf-m-warning", | ||||
|                 message: t`Not synced.`, | ||||
|             }); | ||||
|         } else { | ||||
|             return Promise.resolve<AdminStatus>({ | ||||
|                 icon: "fa fa-check-circle pf-m-success", | ||||
|             }); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     renderHeaderLink(): TemplateResult { | ||||
|         return html`<a href="#/core/sources/${this.slug}"> | ||||
|                 <i class="fa fa-external-link-alt"> </i> | ||||
|             </a>`; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @ -0,0 +1,30 @@ | ||||
| import { SourcesApi } from "authentik-api"; | ||||
| import { customElement, html, LitElement, TemplateResult } from "lit-element"; | ||||
| import { until } from "lit-html/directives/until"; | ||||
| import "./LDAPSyncStatusCard"; | ||||
| import { t } from "@lingui/macro"; | ||||
| import { DEFAULT_CONFIG } from "../../../api/Config"; | ||||
|  | ||||
| @customElement("ak-admin-status-card-ldap-sync-container") | ||||
| export class LDAPSyncStatusCardContainer extends LitElement { | ||||
|  | ||||
|     createRenderRoot(): Element | ShadowRoot { | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     render(): TemplateResult { | ||||
|         return html` | ||||
|             ${until(new SourcesApi(DEFAULT_CONFIG).sourcesLdapList({}).then(sources => { | ||||
|                 return sources.results.map(source => { | ||||
|                     return html`<ak-admin-status-card-ldap-sync | ||||
|                         class="pf-l-gallery__item pf-m-4-col" | ||||
|                         icon="fa fa-sync-alt" | ||||
|                         header=${t`LDAP Sync status ${source.name}`} | ||||
|                         slug=${source.slug}> | ||||
|                     </ak-admin-status-card-ldap-sync>`; | ||||
|                 }); | ||||
|             }))} | ||||
|         `; | ||||
|     } | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Jens Langhammer
					Jens Langhammer