@acorex-platform/extension-sso-client 0.0.32 → 0.0.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-extension-sso-client-azure-ad-logo.component-Bt55e572.mjs","sources":["../../../../libs/extensions/sso/client/src/lib/brand/azure-ad-logo.component.ts"],"sourcesContent":["import type { AXPLogoAppearance } from '@acorex-platform/framework-client/core';\nimport { Component, input, ChangeDetectionStrategy } from '@angular/core';\n\n//#region ---- Azure AD logo (owned by SSO extension) ----\n\n@Component({\n selector: 'axe-sso-azure-ad-logo',\n host: { class: 'inline-flex items-center justify-center' },\n changeDetection: ChangeDetectionStrategy.Eager,\n template: `\n <svg [attr.width]=\"size()\" [attr.height]=\"size()\" viewBox=\"0 0 23 23\" aria-hidden=\"true\">\n <path fill=\"#F35325\" d=\"M1 1h10v10H1z\" />\n <path fill=\"#81BC06\" d=\"M12 1h10v10H12z\" />\n <path fill=\"#05A6F0\" d=\"M1 12h10v10H1z\" />\n <path fill=\"#FFBA08\" d=\"M12 12h10v10H12z\" />\n </svg>\n `,\n})\nexport class AXESSOAzureAdLogoComponent {\n appearance = input<AXPLogoAppearance>('colored');\n size = input(20);\n}\n\n//#endregion\n"],"names":[],"mappings":";;;AAGA;MAea,0BAA0B,CAAA;AAbvC,IAAA,WAAA,GAAA;QAcE,IAAA,CAAA,UAAU,GAAG,KAAK,CAAoB,SAAS;uFAAC;QAChD,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,EAAE;iFAAC;AACjB,IAAA;8GAHY,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAT3B;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,KAAA,EAAA,CAAA,CAAA;;2FAEU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAbtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,yCAAyC,EAAE;oBAC1D,eAAe,EAAE,uBAAuB,CAAC,KAAK;AAC9C,oBAAA,QAAQ,EAAE;;;;;;;AAOT,EAAA,CAAA;AACF,iBAAA;;;;;"}
1
+ {"version":3,"file":"acorex-platform-extension-sso-client-azure-ad-logo.component-Bt55e572.mjs","sources":["../../../../libs/extensions/sso/client/src/lib/brand/azure-ad-logo.component.ts"],"sourcesContent":["import type { AXPLogoAppearance } from '@acorex-platform/framework-client/core';\nimport { Component, input, ChangeDetectionStrategy } from '@angular/core';\n\n//#region ---- Azure AD logo (owned by SSO extension) ----\n\n@Component({\n selector: 'axe-sso-azure-ad-logo',\n host: { class: 'inline-flex items-center justify-center' },\n changeDetection: ChangeDetectionStrategy.Eager,\n template: `\n <svg [attr.width]=\"size()\" [attr.height]=\"size()\" viewBox=\"0 0 23 23\" aria-hidden=\"true\">\n <path fill=\"#F35325\" d=\"M1 1h10v10H1z\" />\n <path fill=\"#81BC06\" d=\"M12 1h10v10H12z\" />\n <path fill=\"#05A6F0\" d=\"M1 12h10v10H1z\" />\n <path fill=\"#FFBA08\" d=\"M12 12h10v10H12z\" />\n </svg>\n `,\n})\nexport class AXESSOAzureAdLogoComponent {\n appearance = input<AXPLogoAppearance>('colored');\n size = input(20);\n}\n\n//#endregion\n"],"names":[],"mappings":";;;AAGA;MAea,0BAA0B,CAAA;AAbvC,IAAA,WAAA,GAAA;QAcE,IAAA,CAAA,UAAU,GAAG,KAAK,CAAoB,SAAS;uFAAC;QAChD,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,EAAE;iFAAC;AACjB,IAAA;8GAHY,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAT3B;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,KAAA,EAAA,CAAA,CAAA;;2FAEU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAbtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,yCAAyC,EAAE;oBAC1D,eAAe,EAAE,uBAAuB,CAAC,KAAK;AAC9C,oBAAA,QAAQ,EAAE;;;;;;;AAOT,EAAA,CAAA;AACF,iBAAA;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-extension-sso-client-contracts.mjs","sources":["../../../../libs/extensions/sso/contracts/src/root-config.ts","../../../../libs/extensions/sso/contracts/src/sso-provider.types.ts","../../../../libs/extensions/sso/contracts/src/acorex-platform-extension-sso-client-contracts.ts"],"sourcesContent":["//#region ---- Module Config ----\n\nconst config = {\n i18n: 'extensions-sso',\n module: 'sso-extension',\n};\n\nexport const RootConfig = {\n config,\n module: {\n name: config.module,\n icon: 'fa-solid fa-building-shield',\n },\n};\n\n//#endregion\n","//#region ---- SSO provider definition ----\n\nexport type AXESSOProviderProtocol = 'oidc' | 'saml';\n\n/** Enterprise IdP definition for SSO platform login (client + server). */\nexport interface AXESSOProviderDefinition {\n id: string;\n title: string;\n /** Optional Font Awesome icon class (client may override with extension-owned logo). */\n icon?: string;\n protocol: AXESSOProviderProtocol;\n /** Platform authorize path or full URL — extension resolves against API baseUrl. */\n authorizationPath?: string;\n /** Passed to platform OAuth as acr_values, e.g. 'okta-hr'. */\n acrValues: string;\n enabled?: boolean;\n /** Slot ordering (lower = higher on page). */\n priority?: number;\n}\n\n/** Runtime enablement entry returned by GET /v1/auth/providers. */\nexport interface AXESSOProviderStatus extends Pick<\n AXESSOProviderDefinition,\n 'id' | 'title' | 'icon' | 'protocol' | 'acrValues'\n> {\n enabled: boolean;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;AAEA,MAAM,MAAM,GAAG;AACb,IAAA,IAAI,EAAE,gBAAgB;AACtB,IAAA,MAAM,EAAE,eAAe;CACxB;AAEM,MAAM,UAAU,GAAG;IACxB,MAAM;AACN,IAAA,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC,MAAM;AACnB,QAAA,IAAI,EAAE,6BAA6B;AACpC,KAAA;;AAGH;;ACfA;AA4BA;;AC5BA;;AAEG;;;;"}
1
+ {"version":3,"file":"acorex-platform-extension-sso-client-contracts.mjs","sources":["../../../../libs/extensions/sso/contracts/src/root-config.ts","../../../../libs/extensions/sso/contracts/src/sso-provider.types.ts","../../../../libs/extensions/sso/contracts/src/acorex-platform-extension-sso-client-contracts.ts"],"sourcesContent":["//#region ---- Module Config ----\n\nconst config = {\n i18n: 'extensions-sso',\n module: 'sso-extension',\n};\n\nexport const RootConfig = {\n config,\n module: {\n name: config.module,\n icon: 'fa-solid fa-building-shield',\n },\n};\n\n//#endregion\n","//#region ---- SSO provider definition ----\n\nexport type AXESSOProviderProtocol = 'oidc' | 'saml';\n\n/** Enterprise IdP definition for SSO platform login (client + server). */\nexport interface AXESSOProviderDefinition {\n id: string;\n title: string;\n /** Optional Font Awesome icon class (client may override with extension-owned logo). */\n icon?: string;\n protocol: AXESSOProviderProtocol;\n /** Platform authorize path or full URL — extension resolves against API baseUrl. */\n authorizationPath?: string;\n /** Passed to platform OAuth as acr_values, e.g. 'okta-hr'. */\n acrValues: string;\n enabled?: boolean;\n /** Slot ordering (lower = higher on page). */\n priority?: number;\n}\n\n/** Runtime enablement entry returned by GET /v1/auth/providers. */\nexport interface AXESSOProviderStatus extends Pick<\n AXESSOProviderDefinition,\n 'id' | 'title' | 'icon' | 'protocol' | 'acrValues'\n> {\n enabled: boolean;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;AAEA,MAAM,MAAM,GAAG;AACb,IAAA,IAAI,EAAE,gBAAgB;AACtB,IAAA,MAAM,EAAE,eAAe;CACxB;AAEM,MAAM,UAAU,GAAG;IACxB,MAAM;AACN,IAAA,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC,MAAM;AACnB,QAAA,IAAI,EAAE,6BAA6B;AACpC,KAAA;;AAGH;;ACfA;AA4BA;;AC5BA;;AAEG;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-extension-sso-client-okta-hr-logo.component-SI3O0UNU.mjs","sources":["../../../../libs/extensions/sso/client/src/lib/brand/okta-hr-logo.component.ts"],"sourcesContent":["import type { AXPLogoAppearance } from '@acorex-platform/framework-client/core';\nimport { Component, input, ChangeDetectionStrategy } from '@angular/core';\n\n//#region ---- Okta HR logo (owned by SSO extension) ----\n\n@Component({\n selector: 'axe-sso-okta-hr-logo',\n host: { class: 'inline-flex items-center justify-center' },\n changeDetection: ChangeDetectionStrategy.Eager,\n template: `\n <svg\n [attr.width]=\"size()\"\n [attr.height]=\"size()\"\n viewBox=\"0 0 24 24\"\n [attr.fill]=\"appearance() === 'onDark' ? '#ffffff' : '#007DC1'\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M3 21V3h8.5a4.5 4.5 0 0 1 0 9H6v9H3zm3-12h5.5a1.5 1.5 0 0 0 0-3H6v3zm13.2 9.6-1.8-3.1a4.8 4.8 0 0 0 1.9-3.8V6h-3v5.7a1.8 1.8 0 0 1-3.1 1.3l-4.7 8.1 2.6 1.5 3.3-5.7 3.3 5.7 2.6-1.5z\"\n />\n </svg>\n `,\n})\nexport class AXESSOOktaHrLogoComponent {\n appearance = input<AXPLogoAppearance>('colored');\n size = input(20);\n}\n\n//#endregion\n"],"names":[],"mappings":";;;AAGA;MAoBa,yBAAyB,CAAA;AAlBtC,IAAA,WAAA,GAAA;QAmBE,IAAA,CAAA,UAAU,GAAG,KAAK,CAAoB,SAAS;uFAAC;QAChD,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,EAAE;iFAAC;AACjB,IAAA;8GAHY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAd1B;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,KAAA,EAAA,CAAA,CAAA;;2FAEU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAlBrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,yCAAyC,EAAE;oBAC1D,eAAe,EAAE,uBAAuB,CAAC,KAAK;AAC9C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;;;"}
1
+ {"version":3,"file":"acorex-platform-extension-sso-client-okta-hr-logo.component-SI3O0UNU.mjs","sources":["../../../../libs/extensions/sso/client/src/lib/brand/okta-hr-logo.component.ts"],"sourcesContent":["import type { AXPLogoAppearance } from '@acorex-platform/framework-client/core';\nimport { Component, input, ChangeDetectionStrategy } from '@angular/core';\n\n//#region ---- Okta HR logo (owned by SSO extension) ----\n\n@Component({\n selector: 'axe-sso-okta-hr-logo',\n host: { class: 'inline-flex items-center justify-center' },\n changeDetection: ChangeDetectionStrategy.Eager,\n template: `\n <svg\n [attr.width]=\"size()\"\n [attr.height]=\"size()\"\n viewBox=\"0 0 24 24\"\n [attr.fill]=\"appearance() === 'onDark' ? '#ffffff' : '#007DC1'\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M3 21V3h8.5a4.5 4.5 0 0 1 0 9H6v9H3zm3-12h5.5a1.5 1.5 0 0 0 0-3H6v3zm13.2 9.6-1.8-3.1a4.8 4.8 0 0 0 1.9-3.8V6h-3v5.7a1.8 1.8 0 0 1-3.1 1.3l-4.7 8.1 2.6 1.5 3.3-5.7 3.3 5.7 2.6-1.5z\"\n />\n </svg>\n `,\n})\nexport class AXESSOOktaHrLogoComponent {\n appearance = input<AXPLogoAppearance>('colored');\n size = input(20);\n}\n\n//#endregion\n"],"names":[],"mappings":";;;AAGA;MAoBa,yBAAyB,CAAA;AAlBtC,IAAA,WAAA,GAAA;QAmBE,IAAA,CAAA,UAAU,GAAG,KAAK,CAAoB,SAAS;uFAAC;QAChD,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,EAAE;iFAAC;AACjB,IAAA;8GAHY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAd1B;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,KAAA,EAAA,CAAA,CAAA;;2FAEU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAlBrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,yCAAyC,EAAE;oBAC1D,eAAe,EAAE,uBAAuB,CAAC,KAAK;AAC9C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;"}
@@ -78,7 +78,7 @@ class AXESSOLoginSlotComponent {
78
78
  }
79
79
  }
80
80
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXESSOLoginSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
81
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXESSOLoginSlotComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "@if (isCatalogLoading()) {\n <!-- ----- Skeleton placeholders while Auth:ListProviders loads ----- -->\n <div class=\"w-full flex flex-col gap-2 mt-2\">\n @for (item of skeletonItems; track item) {\n <ax-skeleton [animated]=\"true\" class=\"w-full h-10 rounded-md\"></ax-skeleton>\n }\n </div>\n}\n<!-- ----- Server-enabled SSO IdP buttons ----- -->\n@else {\n @for (provider of providers(); track provider.id) {\n <ax-button\n class=\"w-full mt-2\"\n [text]=\"provider.title\"\n [color]=\"'default'\"\n [id]=\"'sso-' + provider.id\"\n (onClick)=\"handleSsoSignIn(provider)\"\n [disabled]=\"loadingProviderId() !== null\"\n >\n <ax-prefix>\n <axp-logo [logoKey]=\"logoKey(provider.id)\" appearance=\"colored\" [size]=\"20\" />\n </ax-prefix>\n @if (isLoading(provider.id)) {\n <!-- ----- Spinner while this IdP sign-in is in progress ----- -->\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i3.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i4.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["logoKey", "appearance", "size", "format"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
81
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXESSOLoginSlotComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "@if (isCatalogLoading()) {\n <!-- ----- Skeleton placeholders while Auth:ListProviders loads ----- -->\n <div class=\"w-full flex flex-col gap-2 mt-2\">\n @for (item of skeletonItems; track item) {\n <ax-skeleton [animated]=\"true\" class=\"w-full h-10 rounded-md\"></ax-skeleton>\n }\n </div>\n}\n<!-- ----- Server-enabled SSO IdP buttons ----- -->\n@else {\n @for (provider of providers(); track provider.id) {\n <ax-button\n class=\"w-full mt-2\"\n [text]=\"provider.title\"\n [color]=\"'default'\"\n [id]=\"'sso-' + provider.id\"\n (onClick)=\"handleSsoSignIn(provider)\"\n [disabled]=\"loadingProviderId() !== null\"\n >\n <ax-prefix>\n <axp-logo [logoKey]=\"logoKey(provider.id)\" appearance=\"colored\" [size]=\"20\" />\n </ax-prefix>\n @if (isLoading(provider.id)) {\n <!-- ----- Spinner while this IdP sign-in is in progress ----- -->\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i3.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i4.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["logoKey", "appearance", "size", "format"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
82
82
  }
83
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXESSOLoginSlotComponent, decorators: [{
84
84
  type: Component,
@@ -93,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
93
93
  }] });
94
94
 
95
95
  export { AXESSOLoginSlotComponent };
96
- //# sourceMappingURL=acorex-platform-extension-sso-client-sso-login-slot.component-D5Ad7GHw.mjs.map
96
+ //# sourceMappingURL=acorex-platform-extension-sso-client-sso-login-slot.component-B1sRYf0Q.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-extension-sso-client-sso-login-slot.component-D5Ad7GHw.mjs","sources":["../../../../libs/extensions/sso/client/src/lib/platform-auth/sso-login-slot.component.ts","../../../../libs/extensions/sso/client/src/lib/platform-auth/sso-login-slot.component.html"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXESSOProviderStatus } from '@acorex-platform/extension-sso-client/contracts';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPLogoComponent, AXPLogoRegistryService, axpSsoLogoKey } from '@acorex-platform/framework-client/core';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n inject,\n signal,\n} from '@angular/core';\nimport { axpCreateSsoLogoProvider } from '../brand/sso-logo-resolver';\nimport { AXESSOPlatformLoginAvailabilityService } from './sso-platform-login-availability.service';\n\n//#region ---- SSO platform login slot (server-driven list) ----\n\n@Component({\n templateUrl: './sso-login-slot.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXSkeletonModule,\n AXPLogoComponent,\n ],\n})\nexport class AXESSOLoginSlotComponent implements OnInit {\n //#region ----- Services & Dependencies -----\n\n private readonly sessionService = inject(AXPSessionService);\n private readonly toastService = inject(AXToastService);\n private readonly ssoAvailability = inject(AXESSOPlatformLoginAvailabilityService);\n private readonly logoRegistry = inject(AXPLogoRegistryService);\n\n //#endregion\n\n //#region ----- Constants -----\n\n protected readonly skeletonItems = [1, 2];\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly isCatalogLoading = signal(true);\n protected readonly providers = signal<AXESSOProviderStatus[]>([]);\n protected readonly loadingProviderId = signal<string | null>(null);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n async ngOnInit(): Promise<void> {\n try {\n const enabled = await this.ssoAvailability.getEnabledProviders();\n for (const provider of enabled) {\n this.logoRegistry.register(axpCreateSsoLogoProvider(provider));\n }\n this.providers.set(enabled);\n } finally {\n this.isCatalogLoading.set(false);\n }\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected logoKey(providerId: string): string {\n return axpSsoLogoKey(providerId);\n }\n\n protected isLoading(providerId: string): boolean {\n return this.loadingProviderId() === providerId;\n }\n\n protected async handleSsoSignIn(provider: AXESSOProviderStatus): Promise<void> {\n this.loadingProviderId.set(provider.id);\n try {\n this.sessionService.setStrategy('sso');\n await this.sessionService.signin({\n strategy: 'sso',\n acrValues: provider.acrValues,\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : `${provider.title} sign-in failed.`;\n this.toastService.show({\n color: 'danger',\n content: message,\n timeOut: 6000,\n });\n } finally {\n this.loadingProviderId.set(null);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","@if (isCatalogLoading()) {\n <!-- ----- Skeleton placeholders while Auth:ListProviders loads ----- -->\n <div class=\"w-full flex flex-col gap-2 mt-2\">\n @for (item of skeletonItems; track item) {\n <ax-skeleton [animated]=\"true\" class=\"w-full h-10 rounded-md\"></ax-skeleton>\n }\n </div>\n}\n<!-- ----- Server-enabled SSO IdP buttons ----- -->\n@else {\n @for (provider of providers(); track provider.id) {\n <ax-button\n class=\"w-full mt-2\"\n [text]=\"provider.title\"\n [color]=\"'default'\"\n [id]=\"'sso-' + provider.id\"\n (onClick)=\"handleSsoSignIn(provider)\"\n [disabled]=\"loadingProviderId() !== null\"\n >\n <ax-prefix>\n <axp-logo [logoKey]=\"logoKey(provider.id)\" appearance=\"colored\" [size]=\"20\" />\n </ax-prefix>\n @if (isLoading(provider.id)) {\n <!-- ----- Spinner while this IdP sign-in is in progress ----- -->\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-extension-sso-client-sso-login-slot.component-B1sRYf0Q.mjs","sources":["../../../../libs/extensions/sso/client/src/lib/platform-auth/sso-login-slot.component.ts","../../../../libs/extensions/sso/client/src/lib/platform-auth/sso-login-slot.component.html"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXESSOProviderStatus } from '@acorex-platform/extension-sso-client/contracts';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPLogoComponent, AXPLogoRegistryService, axpSsoLogoKey } from '@acorex-platform/framework-client/core';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n inject,\n signal,\n} from '@angular/core';\nimport { axpCreateSsoLogoProvider } from '../brand/sso-logo-resolver';\nimport { AXESSOPlatformLoginAvailabilityService } from './sso-platform-login-availability.service';\n\n//#region ---- SSO platform login slot (server-driven list) ----\n\n@Component({\n templateUrl: './sso-login-slot.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXSkeletonModule,\n AXPLogoComponent,\n ],\n})\nexport class AXESSOLoginSlotComponent implements OnInit {\n //#region ----- Services & Dependencies -----\n\n private readonly sessionService = inject(AXPSessionService);\n private readonly toastService = inject(AXToastService);\n private readonly ssoAvailability = inject(AXESSOPlatformLoginAvailabilityService);\n private readonly logoRegistry = inject(AXPLogoRegistryService);\n\n //#endregion\n\n //#region ----- Constants -----\n\n protected readonly skeletonItems = [1, 2];\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly isCatalogLoading = signal(true);\n protected readonly providers = signal<AXESSOProviderStatus[]>([]);\n protected readonly loadingProviderId = signal<string | null>(null);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n async ngOnInit(): Promise<void> {\n try {\n const enabled = await this.ssoAvailability.getEnabledProviders();\n for (const provider of enabled) {\n this.logoRegistry.register(axpCreateSsoLogoProvider(provider));\n }\n this.providers.set(enabled);\n } finally {\n this.isCatalogLoading.set(false);\n }\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected logoKey(providerId: string): string {\n return axpSsoLogoKey(providerId);\n }\n\n protected isLoading(providerId: string): boolean {\n return this.loadingProviderId() === providerId;\n }\n\n protected async handleSsoSignIn(provider: AXESSOProviderStatus): Promise<void> {\n this.loadingProviderId.set(provider.id);\n try {\n this.sessionService.setStrategy('sso');\n await this.sessionService.signin({\n strategy: 'sso',\n acrValues: provider.acrValues,\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : `${provider.title} sign-in failed.`;\n this.toastService.show({\n color: 'danger',\n content: message,\n timeOut: 6000,\n });\n } finally {\n this.loadingProviderId.set(null);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","@if (isCatalogLoading()) {\n <!-- ----- Skeleton placeholders while Auth:ListProviders loads ----- -->\n <div class=\"w-full flex flex-col gap-2 mt-2\">\n @for (item of skeletonItems; track item) {\n <ax-skeleton [animated]=\"true\" class=\"w-full h-10 rounded-md\"></ax-skeleton>\n }\n </div>\n}\n<!-- ----- Server-enabled SSO IdP buttons ----- -->\n@else {\n @for (provider of providers(); track provider.id) {\n <ax-button\n class=\"w-full mt-2\"\n [text]=\"provider.title\"\n [color]=\"'default'\"\n [id]=\"'sso-' + provider.id\"\n (onClick)=\"handleSsoSignIn(provider)\"\n [disabled]=\"loadingProviderId() !== null\"\n >\n <ax-prefix>\n <axp-logo [logoKey]=\"logoKey(provider.id)\" appearance=\"colored\" [size]=\"20\" />\n </ax-prefix>\n @if (isLoading(provider.id)) {\n <!-- ----- Spinner while this IdP sign-in is in progress ----- -->\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i2 from '@acorex-platform/framework-client/auth';
2
- import { AXPAuthStrategy, AXPSessionService, AXPPlatformAuthRuntimeService, resolvePlatformOAuthIssuer, resolvePlatformOAuthClientConfig, PkceUtil, toPlatformOAuthSignInResult, shouldPlatformOAuthBindSession, platformOAuthSessionUpdateParams, resolvePlatformOAuthTokenEndpoint, JwtUtil, TimeUtil, resolvePlatformOAuthAuthorizeEndpoint, AXPAuthModule } from '@acorex-platform/framework-client/auth';
2
+ import { AXPAuthStrategy, AXPSessionService, AXPPlatformAuthRuntimeService, resolvePlatformOAuthIssuer, resolvePlatformOAuthClientConfig, initPlatformOAuthAuthorization, toPlatformOAuthSignInResult, shouldPlatformOAuthBindSession, platformOAuthSessionUpdateParams, exchangePlatformOAuthAuthorizationCode, JwtUtil, TimeUtil, AXPAuthModule } from '@acorex-platform/framework-client/auth';
3
3
  import * as i1 from '@acorex-platform/framework-client/core';
4
4
  import { axpSsoLogoKey } from '@acorex-platform/framework-client/core';
5
5
  import { AXM_AUTH_CONFIG_TOKEN, AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT } from '@acorex-platform/module-auth-client';
@@ -25,7 +25,8 @@ class AXESSOPlatformAuthStrategy extends AXPAuthStrategy {
25
25
  return resolvePlatformOAuthClientConfig(this.authConfigs.authConfig);
26
26
  }
27
27
  resolveAcrValues(credentials) {
28
- const fromCredentials = credentials?.['acrValues']?.trim();
28
+ const rawAcr = credentials?.['acrValues'];
29
+ const fromCredentials = typeof rawAcr === 'string' ? rawAcr.trim() : '';
29
30
  if (fromCredentials) {
30
31
  localStorage.setItem(SSO_ACR_VALUES_STORAGE_KEY, fromCredentials);
31
32
  return fromCredentials;
@@ -43,25 +44,18 @@ class AXESSOPlatformAuthStrategy extends AXPAuthStrategy {
43
44
  async redirectToSsoPlatformAuthorize(acrValues) {
44
45
  const issuer = this.resolveIssuer();
45
46
  const { clientId, redirectUri, scope } = this.resolveClientConfig();
46
- const codeVerifier = PkceUtil.generateRandomString(128);
47
- localStorage.setItem('pkce_code_verifier', codeVerifier);
48
- const codeChallenge = await PkceUtil.generateCodeChallenge(codeVerifier);
49
47
  this.sessionService.setStrategy('sso');
50
- const params = new URLSearchParams({
51
- response_type: 'code',
52
- client_id: clientId,
53
- redirect_uri: redirectUri,
48
+ const { authorizeUrl } = await initPlatformOAuthAuthorization({
49
+ issuer,
50
+ clientId,
51
+ redirectUri,
54
52
  scope,
55
- code_challenge: codeChallenge,
56
- code_challenge_method: 'S256',
57
- prompt: 'login',
58
- acr_values: acrValues,
53
+ provider: acrValues,
59
54
  });
60
- window.location.assign(`${issuer}/connect/authorize?${params.toString()}`);
55
+ window.location.assign(authorizeUrl);
61
56
  await this.waitForOAuthRedirect();
62
57
  }
63
58
  async signout() {
64
- localStorage.removeItem('pkce_code_verifier');
65
59
  localStorage.removeItem('oauth_provider');
66
60
  localStorage.removeItem(SSO_ACR_VALUES_STORAGE_KEY);
67
61
  await this.platformAuthRuntime.logout();
@@ -113,31 +107,14 @@ class AXESSOPlatformAuthStrategy extends AXPAuthStrategy {
113
107
  const { clientId, redirectUri } = this.resolveClientConfig();
114
108
  const resolvedRedirectUri = params['redirectUri'] || redirectUri;
115
109
  const resolvedClientId = params['clientId'] || clientId;
116
- const tokenEndpoint = resolvePlatformOAuthTokenEndpoint(issuer);
117
- const codeVerifier = localStorage.getItem('pkce_code_verifier');
118
- if (!codeVerifier) {
119
- throw new Error('Code verifier not found. Please try signing in again.');
120
- }
121
- const body = new URLSearchParams({
122
- grant_type: 'authorization_code',
123
- client_id: resolvedClientId,
124
- code_verifier: codeVerifier,
110
+ const tokenData = await exchangePlatformOAuthAuthorizationCode({
111
+ issuer,
112
+ clientId: resolvedClientId,
113
+ redirectUri: resolvedRedirectUri,
125
114
  code,
126
- redirect_uri: resolvedRedirectUri,
127
- });
128
- const response = await fetch(tokenEndpoint, {
129
- method: 'POST',
130
- credentials: 'include',
131
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
132
- body: body.toString(),
133
115
  });
134
- if (!response.ok) {
135
- const detail = await response.text().catch(() => '');
136
- throw new Error(`Token exchange failed: ${response.status} ${response.statusText}${detail ? ` — ${detail}` : ''}`);
137
- }
138
- localStorage.removeItem('pkce_code_verifier');
139
- const tokenData = await response.json();
140
- const payload = JwtUtil.parseJwt(tokenData.id_token);
116
+ const idToken = tokenData['id_token'] ?? null;
117
+ const payload = idToken ? JwtUtil.parseJwt(idToken) : null;
141
118
  if (!payload) {
142
119
  throw new Error('Payload not found');
143
120
  }
@@ -150,10 +127,10 @@ class AXESSOPlatformAuthStrategy extends AXPAuthStrategy {
150
127
  return {
151
128
  succeed: true,
152
129
  data: {
153
- accessToken: tokenData.access_token ?? tokenData.accessToken,
154
- refreshToken: tokenData.refresh_token ?? tokenData.refreshToken,
155
- idToken: tokenData.id_token ?? null,
156
- expiresIn: TimeUtil.calculateExpireInDate(tokenData.expires_in || 0),
130
+ accessToken: tokenData['access_token'] ?? '',
131
+ refreshToken: tokenData['refresh_token'] ?? '',
132
+ idToken,
133
+ expiresIn: TimeUtil.calculateExpireInDate(Number(tokenData['expires_in'] ?? 0)),
157
134
  user,
158
135
  tenant: null,
159
136
  application: null,
@@ -163,31 +140,17 @@ class AXESSOPlatformAuthStrategy extends AXPAuthStrategy {
163
140
  async beginAuthorizationCodeFlow(params) {
164
141
  const issuer = this.resolveIssuer();
165
142
  const acrValues = this.resolveAcrValues();
166
- const tenantId = params['tenantId'] ?? params['tenant']?.id ?? null;
167
- const applicationId = params['applicationId'] ?? params['application']?.id ?? null;
168
143
  const { clientId, redirectUri, scope } = this.resolveClientConfig();
169
144
  const resolvedRedirectUri = params['redirectUri'] || redirectUri;
170
145
  const resolvedScope = params['scope'] || scope;
171
- const codeVerifier = PkceUtil.generateRandomString(128);
172
- localStorage.setItem('pkce_code_verifier', codeVerifier);
173
- const codeChallenge = await PkceUtil.generateCodeChallenge(codeVerifier);
174
- const authorizeEndpoint = resolvePlatformOAuthAuthorizeEndpoint(issuer);
175
- const state = Math.random().toString(36).substring(2);
176
- const queryParams = [
177
- `response_type=code`,
178
- `client_id=${encodeURIComponent(clientId)}`,
179
- `redirect_uri=${encodeURIComponent(resolvedRedirectUri)}`,
180
- `scope=${encodeURIComponent(resolvedScope)}`,
181
- `state=${encodeURIComponent(state)}`,
182
- tenantId ? `tenant_id=${encodeURIComponent(tenantId)}` : null,
183
- applicationId ? `application_id=${encodeURIComponent(applicationId)}` : null,
184
- `code_challenge=${encodeURIComponent(codeChallenge)}`,
185
- `code_challenge_method=S256`,
186
- `acr_values=${encodeURIComponent(acrValues)}`,
187
- ]
188
- .filter(Boolean)
189
- .join('&');
190
- window.location.href = `${authorizeEndpoint}?${queryParams}`;
146
+ const { authorizeUrl } = await initPlatformOAuthAuthorization({
147
+ issuer,
148
+ clientId,
149
+ redirectUri: resolvedRedirectUri,
150
+ scope: resolvedScope,
151
+ provider: acrValues,
152
+ });
153
+ window.location.href = authorizeUrl;
191
154
  await this.waitForOAuthRedirect();
192
155
  return undefined;
193
156
  }
@@ -285,7 +248,7 @@ class AXESSOExtensionModule {
285
248
  registry.register(AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT, {
286
249
  name: 'sso-platform-login',
287
250
  priority: 20,
288
- loadComponent: () => import('./acorex-platform-extension-sso-client-sso-login-slot.component-D5Ad7GHw.mjs').then((component) => component.AXESSOLoginSlotComponent),
251
+ loadComponent: () => import('./acorex-platform-extension-sso-client-sso-login-slot.component-B1sRYf0Q.mjs').then((component) => component.AXESSOLoginSlotComponent),
289
252
  });
290
253
  }
291
254
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXESSOExtensionModule, deps: [{ token: i1.AXPComponentSlotRegistryService }], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-extension-sso-client.mjs","sources":["../../../../libs/extensions/sso/client/src/lib/platform-auth/sso-platform-auth.strategy.ts","../../../../libs/extensions/sso/client/src/lib/platform-auth/sso-platform-login-availability.service.ts","../../../../libs/extensions/sso/client/src/lib/sso-extension.module.ts","../../../../libs/extensions/sso/client/src/lib/brand/sso-logo-resolver.ts","../../../../libs/extensions/sso/client/src/acorex-platform-extension-sso-client.ts"],"sourcesContent":["import { AXM_AUTH_CONFIG_TOKEN, AXMAuthConfigs } from '@acorex-platform/module-auth-client';\nimport {\n AXPAuthStrategy,\n AXPBaseCredentials,\n AXPPlatformAuthRuntimeService,\n AXPSessionContext,\n AXPSessionData,\n AXPSessionService,\n AXPSignInResult,\n AXPUser,\n JwtUtil,\n PkceUtil,\n platformOAuthSessionUpdateParams,\n resolvePlatformOAuthAuthorizeEndpoint,\n resolvePlatformOAuthClientConfig,\n resolvePlatformOAuthIssuer,\n resolvePlatformOAuthTokenEndpoint,\n shouldPlatformOAuthBindSession,\n TimeUtil,\n toPlatformOAuthSignInResult,\n} from '@acorex-platform/framework-client/auth';\nimport { inject, Injectable } from '@angular/core';\n\n//#region ---- SSO platform auth strategy ----\n\nconst SSO_ACR_VALUES_STORAGE_KEY = 'sso_acr_values';\n\n@Injectable()\nexport class AXESSOPlatformAuthStrategy extends AXPAuthStrategy {\n private readonly authConfigs: AXMAuthConfigs = inject(AXM_AUTH_CONFIG_TOKEN);\n private readonly sessionService = inject(AXPSessionService);\n private readonly platformAuthRuntime = inject(AXPPlatformAuthRuntimeService);\n\n get name(): string {\n return 'sso';\n }\n\n private resolveIssuer(): string {\n return resolvePlatformOAuthIssuer(this.authConfigs.baseUrl);\n }\n\n private resolveClientConfig() {\n return resolvePlatformOAuthClientConfig(this.authConfigs.authConfig);\n }\n\n private resolveAcrValues(credentials?: AXPBaseCredentials): string {\n const fromCredentials = credentials?.['acrValues']?.trim();\n if (fromCredentials) {\n localStorage.setItem(SSO_ACR_VALUES_STORAGE_KEY, fromCredentials);\n return fromCredentials;\n }\n\n const stored = localStorage.getItem(SSO_ACR_VALUES_STORAGE_KEY)?.trim();\n if (stored) {\n return stored;\n }\n\n throw new Error('SSO provider (acr_values) is not specified');\n }\n\n override async signin(credentials: AXPBaseCredentials): Promise<void> {\n const acrValues = this.resolveAcrValues(credentials);\n await this.redirectToSsoPlatformAuthorize(acrValues);\n }\n\n private async redirectToSsoPlatformAuthorize(acrValues: string): Promise<void> {\n const issuer = this.resolveIssuer();\n const { clientId, redirectUri, scope } = this.resolveClientConfig();\n\n const codeVerifier = PkceUtil.generateRandomString(128);\n localStorage.setItem('pkce_code_verifier', codeVerifier);\n const codeChallenge = await PkceUtil.generateCodeChallenge(codeVerifier);\n\n this.sessionService.setStrategy('sso');\n\n const params = new URLSearchParams({\n response_type: 'code',\n client_id: clientId,\n redirect_uri: redirectUri,\n scope,\n code_challenge: codeChallenge,\n code_challenge_method: 'S256',\n prompt: 'login',\n acr_values: acrValues,\n });\n\n window.location.assign(`${issuer}/connect/authorize?${params.toString()}`);\n await this.waitForOAuthRedirect();\n }\n\n async signout(): Promise<void> {\n localStorage.removeItem('pkce_code_verifier');\n localStorage.removeItem('oauth_provider');\n localStorage.removeItem(SSO_ACR_VALUES_STORAGE_KEY);\n await this.platformAuthRuntime.logout();\n }\n\n async refreshToken(_context: AXPSessionContext): Promise<AXPSignInResult> {\n try {\n const authData = this.loadAuthData();\n const tokenData = await this.platformAuthRuntime.refresh();\n return toPlatformOAuthSignInResult(tokenData, {\n user: tokenData.user,\n tenant: authData?.tenant ?? null,\n application: authData?.application ?? null,\n });\n } catch (error) {\n console.error('Error refreshing token', error);\n return { succeed: false };\n }\n }\n\n override async updateToken(params: { [key: string]: any }): Promise<AXPSignInResult | undefined> {\n try {\n if (params['code']) {\n return this.exchangeAuthorizationCode(params);\n }\n\n if (shouldPlatformOAuthBindSession(this.sessionService.hasSessionCredentials(), params)) {\n const { tenant, application, tenantId, applicationId } = platformOAuthSessionUpdateParams(params);\n const result = await this.platformAuthRuntime.updateSession({\n tenantId,\n applicationId,\n tenant,\n application,\n });\n return toPlatformOAuthSignInResult(result, {\n user: (params['user'] as AXPUser) ?? null,\n tenant: tenant ?? null,\n application: application ?? null,\n });\n }\n\n return this.beginAuthorizationCodeFlow(params);\n } catch (error) {\n console.error('Error in updateToken:', error);\n throw error;\n }\n }\n\n private async exchangeAuthorizationCode(params: { [key: string]: any }): Promise<AXPSignInResult> {\n const code = params['code'];\n const issuer = this.resolveIssuer();\n const { clientId, redirectUri } = this.resolveClientConfig();\n const resolvedRedirectUri = params['redirectUri'] || redirectUri;\n const resolvedClientId = params['clientId'] || clientId;\n const tokenEndpoint = resolvePlatformOAuthTokenEndpoint(issuer);\n\n const codeVerifier = localStorage.getItem('pkce_code_verifier');\n if (!codeVerifier) {\n throw new Error('Code verifier not found. Please try signing in again.');\n }\n\n const body = new URLSearchParams({\n grant_type: 'authorization_code',\n client_id: resolvedClientId,\n code_verifier: codeVerifier,\n code,\n redirect_uri: resolvedRedirectUri,\n });\n\n const response = await fetch(tokenEndpoint, {\n method: 'POST',\n credentials: 'include',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: body.toString(),\n });\n\n if (!response.ok) {\n const detail = await response.text().catch(() => '');\n throw new Error(\n `Token exchange failed: ${response.status} ${response.statusText}${detail ? ` — ${detail}` : ''}`,\n );\n }\n\n localStorage.removeItem('pkce_code_verifier');\n\n const tokenData = await response.json();\n const payload = JwtUtil.parseJwt(tokenData.id_token);\n if (!payload) {\n throw new Error('Payload not found');\n }\n\n const user = {\n id: payload['sub'] || '',\n title: payload['name'] || payload['email'] || '',\n name: payload['name'] || payload['email'] || '',\n avatar: payload['picture'] || '',\n } as AXPUser;\n\n return {\n succeed: true,\n data: {\n accessToken: tokenData.access_token ?? tokenData.accessToken,\n refreshToken: tokenData.refresh_token ?? tokenData.refreshToken,\n idToken: tokenData.id_token ?? null,\n expiresIn: TimeUtil.calculateExpireInDate(tokenData.expires_in || 0),\n user,\n tenant: null,\n application: null,\n },\n };\n }\n\n private async beginAuthorizationCodeFlow(params: { [key: string]: any }): Promise<undefined> {\n const issuer = this.resolveIssuer();\n const acrValues = this.resolveAcrValues();\n const tenantId = params['tenantId'] ?? params['tenant']?.id ?? null;\n const applicationId = params['applicationId'] ?? params['application']?.id ?? null;\n const { clientId, redirectUri, scope } = this.resolveClientConfig();\n const resolvedRedirectUri = params['redirectUri'] || redirectUri;\n const resolvedScope = params['scope'] || scope;\n\n const codeVerifier = PkceUtil.generateRandomString(128);\n localStorage.setItem('pkce_code_verifier', codeVerifier);\n const codeChallenge = await PkceUtil.generateCodeChallenge(codeVerifier);\n\n const authorizeEndpoint = resolvePlatformOAuthAuthorizeEndpoint(issuer);\n const state = Math.random().toString(36).substring(2);\n\n const queryParams = [\n `response_type=code`,\n `client_id=${encodeURIComponent(clientId)}`,\n `redirect_uri=${encodeURIComponent(resolvedRedirectUri)}`,\n `scope=${encodeURIComponent(resolvedScope)}`,\n `state=${encodeURIComponent(state)}`,\n tenantId ? `tenant_id=${encodeURIComponent(tenantId)}` : null,\n applicationId ? `application_id=${encodeURIComponent(applicationId)}` : null,\n `code_challenge=${encodeURIComponent(codeChallenge)}`,\n `code_challenge_method=S256`,\n `acr_values=${encodeURIComponent(acrValues)}`,\n ]\n .filter(Boolean)\n .join('&');\n\n window.location.href = `${authorizeEndpoint}?${queryParams}`;\n await this.waitForOAuthRedirect();\n\n return undefined;\n }\n\n private waitForOAuthRedirect(): Promise<void> {\n return new Promise<void>(() => {});\n }\n\n private loadAuthData(): AXPSessionData | undefined {\n return this.sessionService.getSessionData() || undefined;\n }\n}\n\n//#endregion\n","import { AXPPlatformAuthRuntimeService } from '@acorex-platform/framework-client/auth';\nimport { AXESSOProviderStatus } from '@acorex-platform/extension-sso-client/contracts';\nimport { Injectable, inject } from '@angular/core';\n\n//#region ---- Constants ----\n\n/** Built-in broker keys rendered by dedicated Google/Microsoft login slots. */\nconst BUILTIN_PLATFORM_IDP_KEYS = new Set(['google', 'microsoft']);\n\n//#endregion\n\n//#region ---- SSO platform login availability ----\n\n/**\n * Loads enterprise SSO IdPs from Auth:ListProviders (`identityProviders`).\n * Excludes Google/Microsoft keys (those have dedicated login slots).\n * `id` is passed through as OAuth `acr_values`.\n */\n@Injectable()\nexport class AXESSOPlatformLoginAvailabilityService {\n private readonly platformAuthRuntime = inject(AXPPlatformAuthRuntimeService);\n private cachedProviders: AXESSOProviderStatus[] | null = null;\n private loadInFlight: Promise<AXESSOProviderStatus[]> | null = null;\n\n /** True when at least one server-enabled SSO IdP exists. */\n async hasAnyEnabled(): Promise<boolean> {\n const providers = await this.getEnabledProviders();\n return providers.length > 0;\n }\n\n async isEnabled(providerId: string): Promise<boolean> {\n const providers = await this.getEnabledProviders();\n return providers.some((provider) => provider.id === providerId);\n }\n\n /** Enabled SSO IdPs from the server (stable order from Auth:ListProviders). */\n async getEnabledProviders(): Promise<AXESSOProviderStatus[]> {\n const all = await this.loadServerProviders();\n return all.filter((provider) => provider.enabled === true);\n }\n\n private async loadServerProviders(): Promise<AXESSOProviderStatus[]> {\n if (this.cachedProviders !== null) {\n return this.cachedProviders;\n }\n if (this.loadInFlight) {\n return this.loadInFlight;\n }\n\n this.loadInFlight = this.fetchProviders().finally(() => {\n this.loadInFlight = null;\n });\n return this.loadInFlight;\n }\n\n private async fetchProviders(): Promise<AXESSOProviderStatus[]> {\n try {\n const payload = await this.platformAuthRuntime.listProviders();\n this.cachedProviders = payload.identityProviders\n .filter((p) => !BUILTIN_PLATFORM_IDP_KEYS.has(p.id))\n .map((p) => ({\n id: p.id,\n title: p.title,\n icon: p.icon,\n protocol: 'oidc' as const,\n acrValues: p.id,\n enabled: true,\n }));\n return this.cachedProviders;\n } catch {\n this.cachedProviders = [];\n return [];\n }\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPAuthModule } from '@acorex-platform/framework-client/auth';\nimport { AXPComponentSlotRegistryService } from '@acorex-platform/framework-client/core';\nimport { AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT } from '@acorex-platform/module-auth-client';\nimport { NgModule } from '@angular/core';\nimport { AXESSOPlatformAuthStrategy } from './platform-auth/sso-platform-auth.strategy';\nimport { AXESSOPlatformLoginAvailabilityService } from './platform-auth/sso-platform-login-availability.service';\n\n//#endregion\n\n//#region ---- Module ----\n\n/**\n * Enterprise SSO platform login — one slot host; IdP buttons come from Auth:ListProviders.\n * Slot always mounts so the host can show a skeleton during the providers fetch.\n */\n@NgModule({\n imports: [AXPAuthModule.forChild({ strategies: [AXESSOPlatformAuthStrategy] })],\n providers: [AXESSOPlatformLoginAvailabilityService],\n})\nexport class AXESSOExtensionModule {\n constructor(registry: AXPComponentSlotRegistryService) {\n registry.register(AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT, {\n name: 'sso-platform-login',\n priority: 20,\n loadComponent: () =>\n import('./platform-auth/sso-login-slot.component').then((component) => component.AXESSOLoginSlotComponent),\n });\n }\n}\n\n//#endregion\n","import type { AXESSOProviderStatus } from '@acorex-platform/extension-sso-client/contracts';\nimport type { Type } from '@angular/core';\nimport {\n axpSsoLogoKey,\n type AXPLogoRequest,\n type AXPLogoView,\n} from '@acorex-platform/framework-client/core';\n\n//#region ---- SSO logo resolution (convention + server icon fallback) ----\n\nconst SSO_LOGO_COMPONENT_LOADERS: Record<string, () => Promise<Type<unknown>>> = {\n 'okta-hr': () => import('./okta-hr-logo.component').then((module) => module.AXESSOOktaHrLogoComponent),\n 'azure-ad-corp': () =>\n import('./azure-ad-logo.component').then((module) => module.AXESSOAzureAdLogoComponent),\n};\n\nexport async function axpResolveSsoLogo(\n provider: Pick<AXESSOProviderStatus, 'id' | 'icon'>,\n request: AXPLogoRequest,\n): Promise<AXPLogoView> {\n const loader = SSO_LOGO_COMPONENT_LOADERS[provider.id];\n if (loader) {\n return {\n kind: 'component',\n load: loader,\n inputs: {\n appearance: request.appearance,\n size: request.size,\n },\n };\n }\n\n if (provider.icon) {\n return {\n kind: 'icon',\n icon: provider.icon,\n color: 'neutral-600',\n };\n }\n\n return {\n kind: 'icon',\n icon: 'fa-solid fa-building',\n color: 'neutral-500',\n };\n}\n\nexport function axpCreateSsoLogoProvider(provider: Pick<AXESSOProviderStatus, 'id' | 'icon'>) {\n return {\n key: axpSsoLogoKey(provider.id),\n resolve: (request: AXPLogoRequest) => axpResolveSsoLogo(provider, request),\n };\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-extension-sso-client.mjs","sources":["../../../../libs/extensions/sso/client/src/lib/platform-auth/sso-platform-auth.strategy.ts","../../../../libs/extensions/sso/client/src/lib/platform-auth/sso-platform-login-availability.service.ts","../../../../libs/extensions/sso/client/src/lib/sso-extension.module.ts","../../../../libs/extensions/sso/client/src/lib/brand/sso-logo-resolver.ts","../../../../libs/extensions/sso/client/src/acorex-platform-extension-sso-client.ts"],"sourcesContent":["import { AXM_AUTH_CONFIG_TOKEN, AXMAuthConfigs } from '@acorex-platform/module-auth-client';\nimport {\n AXPAuthStrategy,\n AXPBaseCredentials,\n AXPPlatformAuthRuntimeService,\n AXPSessionContext,\n AXPSessionData,\n AXPSessionService,\n AXPSignInResult,\n AXPUser,\n JwtUtil,\n exchangePlatformOAuthAuthorizationCode,\n initPlatformOAuthAuthorization,\n platformOAuthSessionUpdateParams,\n resolvePlatformOAuthClientConfig,\n resolvePlatformOAuthIssuer,\n shouldPlatformOAuthBindSession,\n TimeUtil,\n toPlatformOAuthSignInResult,\n} from '@acorex-platform/framework-client/auth';\nimport { inject, Injectable } from '@angular/core';\n\n//#region ---- SSO platform auth strategy ----\n\nconst SSO_ACR_VALUES_STORAGE_KEY = 'sso_acr_values';\n\n@Injectable()\nexport class AXESSOPlatformAuthStrategy extends AXPAuthStrategy {\n private readonly authConfigs: AXMAuthConfigs = inject(AXM_AUTH_CONFIG_TOKEN);\n private readonly sessionService = inject(AXPSessionService);\n private readonly platformAuthRuntime = inject(AXPPlatformAuthRuntimeService);\n\n get name(): string {\n return 'sso';\n }\n\n private resolveIssuer(): string {\n return resolvePlatformOAuthIssuer(this.authConfigs.baseUrl);\n }\n\n private resolveClientConfig() {\n return resolvePlatformOAuthClientConfig(this.authConfigs.authConfig);\n }\n\n private resolveAcrValues(credentials?: AXPBaseCredentials): string {\n const rawAcr = credentials?.['acrValues'];\n const fromCredentials = typeof rawAcr === 'string' ? rawAcr.trim() : '';\n if (fromCredentials) {\n localStorage.setItem(SSO_ACR_VALUES_STORAGE_KEY, fromCredentials);\n return fromCredentials;\n }\n\n const stored = localStorage.getItem(SSO_ACR_VALUES_STORAGE_KEY)?.trim();\n if (stored) {\n return stored;\n }\n\n throw new Error('SSO provider (acr_values) is not specified');\n }\n\n override async signin(credentials: AXPBaseCredentials): Promise<void> {\n const acrValues = this.resolveAcrValues(credentials);\n await this.redirectToSsoPlatformAuthorize(acrValues);\n }\n\n private async redirectToSsoPlatformAuthorize(acrValues: string): Promise<void> {\n const issuer = this.resolveIssuer();\n const { clientId, redirectUri, scope } = this.resolveClientConfig();\n\n this.sessionService.setStrategy('sso');\n\n const { authorizeUrl } = await initPlatformOAuthAuthorization({\n issuer,\n clientId,\n redirectUri,\n scope,\n provider: acrValues,\n });\n\n window.location.assign(authorizeUrl);\n await this.waitForOAuthRedirect();\n }\n\n async signout(): Promise<void> {\n localStorage.removeItem('oauth_provider');\n localStorage.removeItem(SSO_ACR_VALUES_STORAGE_KEY);\n await this.platformAuthRuntime.logout();\n }\n\n async refreshToken(_context: AXPSessionContext): Promise<AXPSignInResult> {\n try {\n const authData = this.loadAuthData();\n const tokenData = await this.platformAuthRuntime.refresh();\n return toPlatformOAuthSignInResult(tokenData, {\n user: tokenData.user,\n tenant: authData?.tenant ?? null,\n application: authData?.application ?? null,\n });\n } catch (error) {\n console.error('Error refreshing token', error);\n return { succeed: false };\n }\n }\n\n override async updateToken(params: { [key: string]: any }): Promise<AXPSignInResult | undefined> {\n try {\n if (params['code']) {\n return this.exchangeAuthorizationCode(params);\n }\n\n if (shouldPlatformOAuthBindSession(this.sessionService.hasSessionCredentials(), params)) {\n const { tenant, application, tenantId, applicationId } = platformOAuthSessionUpdateParams(params);\n const result = await this.platformAuthRuntime.updateSession({\n tenantId,\n applicationId,\n tenant,\n application,\n });\n return toPlatformOAuthSignInResult(result, {\n user: (params['user'] as AXPUser) ?? null,\n tenant: tenant ?? null,\n application: application ?? null,\n });\n }\n\n return this.beginAuthorizationCodeFlow(params);\n } catch (error) {\n console.error('Error in updateToken:', error);\n throw error;\n }\n }\n\n private async exchangeAuthorizationCode(params: { [key: string]: any }): Promise<AXPSignInResult> {\n const code = params['code'];\n const issuer = this.resolveIssuer();\n const { clientId, redirectUri } = this.resolveClientConfig();\n const resolvedRedirectUri = params['redirectUri'] || redirectUri;\n const resolvedClientId = params['clientId'] || clientId;\n\n const tokenData = await exchangePlatformOAuthAuthorizationCode({\n issuer,\n clientId: resolvedClientId,\n redirectUri: resolvedRedirectUri,\n code,\n });\n\n const idToken = (tokenData['id_token'] as string | undefined) ?? null;\n const payload = idToken ? JwtUtil.parseJwt(idToken) : null;\n if (!payload) {\n throw new Error('Payload not found');\n }\n\n const user = {\n id: payload['sub'] || '',\n title: payload['name'] || payload['email'] || '',\n name: payload['name'] || payload['email'] || '',\n avatar: payload['picture'] || '',\n } as AXPUser;\n\n return {\n succeed: true,\n data: {\n accessToken: (tokenData['access_token'] as string | undefined) ?? '',\n refreshToken: (tokenData['refresh_token'] as string | undefined) ?? '',\n idToken,\n expiresIn: TimeUtil.calculateExpireInDate(Number(tokenData['expires_in'] ?? 0)),\n user,\n tenant: null,\n application: null,\n },\n };\n }\n\n private async beginAuthorizationCodeFlow(params: { [key: string]: any }): Promise<undefined> {\n const issuer = this.resolveIssuer();\n const acrValues = this.resolveAcrValues();\n const { clientId, redirectUri, scope } = this.resolveClientConfig();\n const resolvedRedirectUri = params['redirectUri'] || redirectUri;\n const resolvedScope = params['scope'] || scope;\n\n const { authorizeUrl } = await initPlatformOAuthAuthorization({\n issuer,\n clientId,\n redirectUri: resolvedRedirectUri,\n scope: resolvedScope,\n provider: acrValues,\n });\n\n window.location.href = authorizeUrl;\n await this.waitForOAuthRedirect();\n\n return undefined;\n }\n\n private waitForOAuthRedirect(): Promise<void> {\n return new Promise<void>(() => {});\n }\n\n private loadAuthData(): AXPSessionData | undefined {\n return this.sessionService.getSessionData() || undefined;\n }\n}\n\n//#endregion\n","import { AXPPlatformAuthRuntimeService } from '@acorex-platform/framework-client/auth';\nimport { AXESSOProviderStatus } from '@acorex-platform/extension-sso-client/contracts';\nimport { Injectable, inject } from '@angular/core';\n\n//#region ---- Constants ----\n\n/** Built-in broker keys rendered by dedicated Google/Microsoft login slots. */\nconst BUILTIN_PLATFORM_IDP_KEYS = new Set(['google', 'microsoft']);\n\n//#endregion\n\n//#region ---- SSO platform login availability ----\n\n/**\n * Loads enterprise SSO IdPs from Auth:ListProviders (`identityProviders`).\n * Excludes Google/Microsoft keys (those have dedicated login slots).\n * `id` is passed through as OAuth `acr_values`.\n */\n@Injectable()\nexport class AXESSOPlatformLoginAvailabilityService {\n private readonly platformAuthRuntime = inject(AXPPlatformAuthRuntimeService);\n private cachedProviders: AXESSOProviderStatus[] | null = null;\n private loadInFlight: Promise<AXESSOProviderStatus[]> | null = null;\n\n /** True when at least one server-enabled SSO IdP exists. */\n async hasAnyEnabled(): Promise<boolean> {\n const providers = await this.getEnabledProviders();\n return providers.length > 0;\n }\n\n async isEnabled(providerId: string): Promise<boolean> {\n const providers = await this.getEnabledProviders();\n return providers.some((provider) => provider.id === providerId);\n }\n\n /** Enabled SSO IdPs from the server (stable order from Auth:ListProviders). */\n async getEnabledProviders(): Promise<AXESSOProviderStatus[]> {\n const all = await this.loadServerProviders();\n return all.filter((provider) => provider.enabled === true);\n }\n\n private async loadServerProviders(): Promise<AXESSOProviderStatus[]> {\n if (this.cachedProviders !== null) {\n return this.cachedProviders;\n }\n if (this.loadInFlight) {\n return this.loadInFlight;\n }\n\n this.loadInFlight = this.fetchProviders().finally(() => {\n this.loadInFlight = null;\n });\n return this.loadInFlight;\n }\n\n private async fetchProviders(): Promise<AXESSOProviderStatus[]> {\n try {\n const payload = await this.platformAuthRuntime.listProviders();\n this.cachedProviders = payload.identityProviders\n .filter((p) => !BUILTIN_PLATFORM_IDP_KEYS.has(p.id))\n .map((p) => ({\n id: p.id,\n title: p.title,\n icon: p.icon,\n protocol: 'oidc' as const,\n acrValues: p.id,\n enabled: true,\n }));\n return this.cachedProviders;\n } catch {\n this.cachedProviders = [];\n return [];\n }\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPAuthModule } from '@acorex-platform/framework-client/auth';\nimport { AXPComponentSlotRegistryService } from '@acorex-platform/framework-client/core';\nimport { AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT } from '@acorex-platform/module-auth-client';\nimport { NgModule } from '@angular/core';\nimport { AXESSOPlatformAuthStrategy } from './platform-auth/sso-platform-auth.strategy';\nimport { AXESSOPlatformLoginAvailabilityService } from './platform-auth/sso-platform-login-availability.service';\n\n//#endregion\n\n//#region ---- Module ----\n\n/**\n * Enterprise SSO platform login — one slot host; IdP buttons come from Auth:ListProviders.\n * Slot always mounts so the host can show a skeleton during the providers fetch.\n */\n@NgModule({\n imports: [AXPAuthModule.forChild({ strategies: [AXESSOPlatformAuthStrategy] })],\n providers: [AXESSOPlatformLoginAvailabilityService],\n})\nexport class AXESSOExtensionModule {\n constructor(registry: AXPComponentSlotRegistryService) {\n registry.register(AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT, {\n name: 'sso-platform-login',\n priority: 20,\n loadComponent: () =>\n import('./platform-auth/sso-login-slot.component').then((component) => component.AXESSOLoginSlotComponent),\n });\n }\n}\n\n//#endregion\n","import type { AXESSOProviderStatus } from '@acorex-platform/extension-sso-client/contracts';\nimport type { Type } from '@angular/core';\nimport {\n axpSsoLogoKey,\n type AXPLogoRequest,\n type AXPLogoView,\n} from '@acorex-platform/framework-client/core';\n\n//#region ---- SSO logo resolution (convention + server icon fallback) ----\n\nconst SSO_LOGO_COMPONENT_LOADERS: Record<string, () => Promise<Type<unknown>>> = {\n 'okta-hr': () => import('./okta-hr-logo.component').then((module) => module.AXESSOOktaHrLogoComponent),\n 'azure-ad-corp': () =>\n import('./azure-ad-logo.component').then((module) => module.AXESSOAzureAdLogoComponent),\n};\n\nexport async function axpResolveSsoLogo(\n provider: Pick<AXESSOProviderStatus, 'id' | 'icon'>,\n request: AXPLogoRequest,\n): Promise<AXPLogoView> {\n const loader = SSO_LOGO_COMPONENT_LOADERS[provider.id];\n if (loader) {\n return {\n kind: 'component',\n load: loader,\n inputs: {\n appearance: request.appearance,\n size: request.size,\n },\n };\n }\n\n if (provider.icon) {\n return {\n kind: 'icon',\n icon: provider.icon,\n color: 'neutral-600',\n };\n }\n\n return {\n kind: 'icon',\n icon: 'fa-solid fa-building',\n color: 'neutral-500',\n };\n}\n\nexport function axpCreateSsoLogoProvider(provider: Pick<AXESSOProviderStatus, 'id' | 'icon'>) {\n return {\n key: axpSsoLogoKey(provider.id),\n resolve: (request: AXPLogoRequest) => axpResolveSsoLogo(provider, request),\n };\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex-platform/extension-sso-client",
3
- "version": "0.0.32",
3
+ "version": "0.0.37",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0 || ^22.0.0",