web/admin: migrate provider forms
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
		
							
								
								
									
										180
									
								
								web/src/pages/providers/saml/SAMLProviderViewPage.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										180
									
								
								web/src/pages/providers/saml/SAMLProviderViewPage.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,180 @@ | ||||
| import { gettext } from "django"; | ||||
| import { CSSResult, customElement, html, property, TemplateResult } from "lit-element"; | ||||
| import { until } from "lit-html/directives/until"; | ||||
|  | ||||
| import PFPage from "@patternfly/patternfly/components/Page/page.css"; | ||||
| import PFContent from "@patternfly/patternfly/components/Content/content.css"; | ||||
| import PFGallery from "@patternfly/patternfly/layouts/Gallery/gallery.css"; | ||||
| import PFCard from "@patternfly/patternfly/components/Card/card.css"; | ||||
| import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; | ||||
| import PFSizing from "@patternfly/patternfly/utilities/Sizing/sizing.css"; | ||||
| import PFFlex from "@patternfly/patternfly/utilities/Flex/flex.css"; | ||||
| import PFDisplay from "@patternfly/patternfly/utilities/Display/display.css"; | ||||
| import AKGlobal from "../../../authentik.css"; | ||||
| import PFBase from "@patternfly/patternfly/patternfly-base.css"; | ||||
|  | ||||
| import "../../../elements/buttons/ModalButton"; | ||||
| import "../../../elements/buttons/SpinnerButton"; | ||||
| import "../../../elements/CodeMirror"; | ||||
| import "../../../elements/Tabs"; | ||||
| import "../../../elements/events/ObjectChangelog"; | ||||
| import "../RelatedApplicationButton"; | ||||
| import "./SAMLProviderForm"; | ||||
| import { Page } from "../../../elements/Page"; | ||||
| import { ProvidersApi, SAMLProvider } from "authentik-api"; | ||||
| import { DEFAULT_CONFIG } from "../../../api/Config"; | ||||
| import { AppURLManager } from "../../../api/legacy"; | ||||
| import { EVENT_REFRESH } from "../../../constants"; | ||||
| import { ifDefined } from "lit-html/directives/if-defined"; | ||||
|  | ||||
| @customElement("ak-provider-saml-view") | ||||
| export class SAMLProviderViewPage extends Page { | ||||
|     pageTitle(): string { | ||||
|         return gettext(`SAML Provider ${this.provider?.name || ""}`); | ||||
|     } | ||||
|     pageDescription(): string | undefined { | ||||
|         return; | ||||
|     } | ||||
|     pageIcon(): string { | ||||
|         return "pf-icon pf-icon-integration"; | ||||
|     } | ||||
|  | ||||
|     @property() | ||||
|     set args(value: { [key: string]: number }) { | ||||
|         this.providerID = value.id; | ||||
|     } | ||||
|  | ||||
|     @property({type: Number}) | ||||
|     set providerID(value: number) { | ||||
|         new ProvidersApi(DEFAULT_CONFIG).providersSamlRead({ | ||||
|             id: value, | ||||
|         }).then((prov) => (this.provider = prov)); | ||||
|     } | ||||
|  | ||||
|     @property({ attribute: false }) | ||||
|     provider?: SAMLProvider; | ||||
|  | ||||
|     static get styles(): CSSResult[] { | ||||
|         return [PFBase, PFPage, PFFlex, PFDisplay, PFGallery, PFContent, PFCard, PFDescriptionList, PFSizing, AKGlobal]; | ||||
|     } | ||||
|  | ||||
|     constructor() { | ||||
|         super(); | ||||
|         this.addEventListener(EVENT_REFRESH, () => { | ||||
|             if (!this.provider?.pk) return; | ||||
|             this.providerID = this.provider?.pk; | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     renderContent(): TemplateResult { | ||||
|         if (!this.provider) { | ||||
|             return html``; | ||||
|         } | ||||
|         return html`<ak-tabs> | ||||
|                 <section slot="page-1" data-tab-title="${gettext("Overview")}" class="pf-c-page__main-section pf-m-no-padding-mobile"> | ||||
|                     <div class="pf-u-display-flex pf-u-justify-content-center"> | ||||
|                         <div class="pf-u-w-75"> | ||||
|                             <div class="pf-c-card"> | ||||
|                                 <div class="pf-c-card__body"> | ||||
|                                     <dl class="pf-c-description-list pf-m-3-col-on-lg"> | ||||
|                                         <div class="pf-c-description-list__group"> | ||||
|                                             <dt class="pf-c-description-list__term"> | ||||
|                                                 <span class="pf-c-description-list__text">${gettext("Name")}</span> | ||||
|                                             </dt> | ||||
|                                             <dd class="pf-c-description-list__description"> | ||||
|                                                 <div class="pf-c-description-list__text">${this.provider.name}</div> | ||||
|                                             </dd> | ||||
|                                         </div> | ||||
|                                         <div class="pf-c-description-list__group"> | ||||
|                                             <dt class="pf-c-description-list__term"> | ||||
|                                                 <span class="pf-c-description-list__text">${gettext("Assigned to application")}</span> | ||||
|                                             </dt> | ||||
|                                             <dd class="pf-c-description-list__description"> | ||||
|                                                 <div class="pf-c-description-list__text"> | ||||
|                                                     <ak-provider-related-application .provider=${this.provider}></ak-provider-related-application> | ||||
|                                                 </div> | ||||
|                                             </dd> | ||||
|                                         </div> | ||||
|                                         <div class="pf-c-description-list__group"> | ||||
|                                             <dt class="pf-c-description-list__term"> | ||||
|                                                 <span class="pf-c-description-list__text">${gettext("ACS URL")}</span> | ||||
|                                             </dt> | ||||
|                                             <dd class="pf-c-description-list__description"> | ||||
|                                                 <div class="pf-c-description-list__text">${this.provider.acsUrl}</div> | ||||
|                                             </dd> | ||||
|                                         </div> | ||||
|                                         <div class="pf-c-description-list__group"> | ||||
|                                             <dt class="pf-c-description-list__term"> | ||||
|                                                 <span class="pf-c-description-list__text">${gettext("Audience")}</span> | ||||
|                                             </dt> | ||||
|                                             <dd class="pf-c-description-list__description"> | ||||
|                                                 <div class="pf-c-description-list__text">${this.provider.audience}</div> | ||||
|                                             </dd> | ||||
|                                         </div> | ||||
|                                         <div class="pf-c-description-list__group"> | ||||
|                                             <dt class="pf-c-description-list__term"> | ||||
|                                                 <span class="pf-c-description-list__text">${gettext("Issuer")}</span> | ||||
|                                             </dt> | ||||
|                                             <dd class="pf-c-description-list__description"> | ||||
|                                                 <div class="pf-c-description-list__text">${this.provider.issuer}</div> | ||||
|                                             </dd> | ||||
|                                         </div> | ||||
|                                     </dl> | ||||
|                                 </div> | ||||
|                                 <div class="pf-c-card__footer"> | ||||
|                                     <ak-forms-modal> | ||||
|                                         <span slot="submit"> | ||||
|                                             ${gettext("Update")} | ||||
|                                         </span> | ||||
|                                         <span slot="header"> | ||||
|                                             ${gettext("Update SAML Provider")} | ||||
|                                         </span> | ||||
|                                         <ak-provider-saml-form | ||||
|                                             slot="form" | ||||
|                                             .providerUUID=${this.provider.pk || 0}> | ||||
|                                         </ak-provider-saml-form> | ||||
|                                         <button slot="trigger" class="pf-c-button pf-m-primary"> | ||||
|                                             ${gettext("Edit")} | ||||
|                                         </button> | ||||
|                                     </ak-forms-modal> | ||||
|                                 </div> | ||||
|                             </div> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                 </section> | ||||
|                 <section slot="page-2" data-tab-title="${gettext("Changelog")}" class="pf-c-page__main-section pf-m-no-padding-mobile"> | ||||
|                     <div class="pf-c-card"> | ||||
|                         <div class="pf-c-card__body"> | ||||
|                             <ak-object-changelog | ||||
|                                 targetModelPk=${this.provider.pk || ""} | ||||
|                                 targetModelApp="authentik_providers_saml" | ||||
|                                 targetModelName="samlprovider"> | ||||
|                             </ak-object-changelog> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                 </section> | ||||
|                 <section slot="page-3" data-tab-title="${gettext("Metadata")}" class="pf-c-page__main-section pf-m-no-padding-mobile"> | ||||
|                     <div class="pf-u-display-flex pf-u-justify-content-center"> | ||||
|                         <div class="pf-u-w-75"> | ||||
|                             <div class="pf-c-card"> | ||||
|                                 <div class="pf-c-card__body"> | ||||
|                                     ${until( | ||||
|                                         new ProvidersApi(DEFAULT_CONFIG).providersSamlMetadata({ | ||||
|                                             id: this.provider.pk || 0, | ||||
|                                         }).then(m => { | ||||
|                                             return html`<ak-codemirror mode="xml" ?readOnly=${true} value="${ifDefined(m.metadata)}"></ak-codemirror>`; | ||||
|                                         }) | ||||
|                                     )} | ||||
|                                 </div> | ||||
|                                 <div class="pf-c-card__footer"> | ||||
|                                     <a class="pf-c-button pf-m-primary" target="_blank" href="${AppURLManager.providerSAML(`${this.provider.assignedApplicationSlug}/metadata/`)}"> | ||||
|                                         ${gettext("Download")} | ||||
|                                     </a> | ||||
|                                 </div> | ||||
|                             </div> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                 </section> | ||||
|             </ak-tabs>`; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Jens Langhammer
					Jens Langhammer