@acorex-platform/extension-ldap-client 0.0.37 → 0.0.46
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.
|
@@ -223,6 +223,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
223
223
|
/**
|
|
224
224
|
* LDAP / Active Directory platform login extension.
|
|
225
225
|
* Uses server-side directory bind via `LdapExtension:SignIn` (does not alter `Auth:SignIn` / user-pass).
|
|
226
|
+
* Directory connection is configured on SecurityManagement.IdentityProvider (`protocol: directory`).
|
|
226
227
|
*/
|
|
227
228
|
class AXELdapExtensionModule {
|
|
228
229
|
constructor(registry, ldapLogin) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-extension-ldap-client.mjs","sources":["../../../../libs/extensions/ldap/client/src/lib/platform-auth/ldap-platform-auth.strategy.ts","../../../../libs/extensions/ldap/client/src/lib/platform-auth/ldap-platform-login-availability.service.ts","../../../../libs/extensions/ldap/client/src/lib/ldap-extension.module.ts","../../../../libs/extensions/ldap/client/src/acorex-platform-extension-ldap-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport {\n runtimeCommandPayloadData,\n type AXPMultiLanguageString,\n} from '@acorex-platform/framework-shared/core';\nimport {\n AXPApplication,\n AXPAuthStrategy,\n AXPBaseCredentials,\n AXPSessionContext,\n AXPSessionService,\n AXPSignInResult,\n AXPTenant,\n AXPUser,\n TimeUtil,\n} from '@acorex-platform/framework-client/auth';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { commandMessageTextForError } from '@acorex-platform/framework-client/common';\nimport {\n AUTH_LOGOUT_DEFAULT,\n AUTH_REFRESH_DEFAULT,\n AUTH_UPDATE_SESSION_DEFAULT,\n} from '@acorex-platform/framework-shared/runtime';\nimport { AXELdapCommandKeys } from '@acorex-platform/extension-ldap-client/contracts';\nimport { Injectable, inject } from '@angular/core';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXELdapCredentials extends AXPBaseCredentials {\n username: string;\n password: string;\n rememberMe?: boolean;\n}\n\ninterface AuthTokenResponseDto {\n accessToken: string;\n refreshToken: string;\n expiresIn?: string;\n user: AXPUser;\n tenant?: { id: string; name?: string; title?: AXPMultiLanguageString } | null;\n application?: { id: string; name?: string; title?: AXPMultiLanguageString } | null;\n}\n\nexport class AXELdapAuthApiError extends Error {\n constructor(\n message: string,\n readonly apiError?: Record<string, unknown>,\n readonly status?: number,\n ) {\n super(message);\n this.name = 'AXELdapAuthApiError';\n }\n}\n\n//#endregion\n\n//#region ---- LDAP platform auth strategy ----\n\n@Injectable()\nexport class AXELdapPlatformAuthStrategy extends AXPAuthStrategy {\n private readonly commandService = inject(AXPCommandService);\n private readonly sessionService = inject(AXPSessionService);\n\n get name(): string {\n return 'ldap';\n }\n\n async signin(credentials: AXELdapCredentials): Promise<AXPSignInResult> {\n const result = await this.executeAuthCommand<AuthTokenResponseDto>(AXELdapCommandKeys.SignIn, {\n username: credentials.username,\n password: credentials.password,\n ...(credentials.rememberMe === true ? { rememberMe: true } : { rememberMe: false }),\n });\n\n return this.toSignInResult(result);\n }\n\n async signout(): Promise<void> {\n try {\n await this.commandService.execute(AUTH_LOGOUT_DEFAULT, {});\n } catch {\n // Ignore logout network errors; client session is cleared regardless.\n }\n }\n\n async refreshToken(context: AXPSessionContext): Promise<AXPSignInResult> {\n const result = await this.executeAuthCommand<AuthTokenResponseDto>(AUTH_REFRESH_DEFAULT, {});\n return this.toSignInResult(result, context);\n }\n\n override async updateToken(params: { [key: string]: unknown }): Promise<AXPSignInResult> {\n if (!this.sessionService.hasSessionCredentials()) {\n throw new Error('Access session not found');\n }\n\n const tenant = params['tenant'] as AXPTenant | undefined;\n const application = params['application'] as AXPApplication | undefined;\n\n const result = await this.executeAuthCommand<AuthTokenResponseDto>(AUTH_UPDATE_SESSION_DEFAULT, {\n tenantId: params['tenantId'] ?? tenant?.id,\n applicationId: params['applicationId'] ?? application?.id,\n tenant,\n application,\n });\n\n return this.toSignInResult(result, {\n user: (params['user'] as AXPUser) ?? this.sessionService.user,\n tenant: tenant ?? null,\n application: application ?? null,\n });\n }\n\n private async executeAuthCommand<T>(key: string, input: unknown): Promise<T> {\n const result = await this.commandService.execute<unknown, T>(key, input);\n const data = runtimeCommandPayloadData(result);\n if (data == null) {\n const message = commandMessageTextForError(result?.message?.text) || 'LDAP authentication failed';\n const details =\n result?.message?.details &&\n typeof result.message.details === 'object' &&\n !Array.isArray(result.message.details)\n ? (result.message.details as Record<string, unknown>)\n : {};\n throw new AXELdapAuthApiError(\n message,\n {\n message,\n ...(typeof result?.message?.code === 'string'\n ? { code: result.message.code, error: result.message.code }\n : {}),\n ...details,\n },\n typeof (details as { status?: unknown }).status === 'number'\n ? (details as { status: number }).status\n : undefined,\n );\n }\n\n return data;\n }\n\n private toSignInResult(result: AuthTokenResponseDto, context?: Partial<AXPSessionContext>): AXPSignInResult {\n return {\n succeed: true,\n data: {\n accessToken: result.accessToken,\n refreshToken: result.refreshToken,\n expiresIn: this.parseExpiresIn(result.expiresIn),\n user: result.user,\n tenant: this.mergeTenant(this.mapTenant(result.tenant), context?.tenant ?? null),\n application: this.mergeApplication(this.mapApplication(result.application), context?.application ?? null),\n },\n };\n }\n\n private mergeTenant(mapped: AXPTenant | null, contextTenant: AXPTenant | null): AXPTenant | null {\n if (!mapped && !contextTenant) {\n return null;\n }\n if (!mapped) {\n return contextTenant;\n }\n if (!contextTenant) {\n return mapped;\n }\n return {\n ...contextTenant,\n ...mapped,\n title: mapped.title && mapped.title !== mapped.id ? mapped.title : contextTenant.title || mapped.title,\n name: mapped.name && mapped.name !== mapped.id ? mapped.name : contextTenant.name || mapped.name,\n };\n }\n\n private mergeApplication(\n mapped: AXPApplication | null,\n contextApplication: AXPApplication | null,\n ): AXPApplication | null {\n if (!mapped && !contextApplication) {\n return null;\n }\n if (!mapped) {\n return contextApplication;\n }\n if (!contextApplication) {\n return mapped;\n }\n return {\n ...contextApplication,\n ...mapped,\n edition: mapped.edition ?? contextApplication.edition,\n version: mapped.version ?? contextApplication.version,\n logoUrl: mapped.logoUrl ?? contextApplication.logoUrl,\n description: mapped.description ?? contextApplication.description,\n };\n }\n\n private mapTenant(\n tenant?: { id: string; name?: string; title?: AXPMultiLanguageString } | null,\n ): AXPTenant | null {\n if (!tenant?.id) {\n return null;\n }\n return {\n id: tenant.id,\n name: tenant.name ?? tenant.id,\n title: tenant.title ?? tenant.name ?? tenant.id,\n };\n }\n\n private mapApplication(\n application?: { id: string; name?: string; title?: AXPMultiLanguageString } | null,\n ): AXPApplication | null {\n if (!application?.id) {\n return null;\n }\n return {\n id: application.id,\n name: application.name ?? application.id,\n title: application.title ?? application.name,\n };\n }\n\n private parseExpiresIn(expiresIn?: string): string | null {\n if (!expiresIn) {\n return null;\n }\n const match = /^(\\d+)([smhd])$/i.exec(expiresIn.trim());\n if (!match) {\n return null;\n }\n const value = Number(match[1]);\n const unit = match[2].toLowerCase();\n const multipliers: Record<string, number> = { s: 1, m: 60, h: 3600, d: 86400 };\n return TimeUtil.calculateExpireInDate(value * multipliers[unit]);\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { runtimeQueryPayloadData } from '@acorex-platform/framework-shared/core';\nimport { AXPQueryService } from '@acorex-platform/framework-client/runtime';\nimport {\n AXELdapQueryKeys,\n type AXELdapLoginAvailabilityDto,\n} from '@acorex-platform/extension-ldap-client/contracts';\nimport { Injectable, inject } from '@angular/core';\n\n//#endregion\n\n//#region ---- LDAP login availability ----\n\n@Injectable()\nexport class AXELdapPlatformLoginAvailabilityService {\n private readonly queryService = inject(AXPQueryService);\n private cached: AXELdapLoginAvailabilityDto | null = null;\n\n async isEnabled(): Promise<boolean> {\n const availability = await this.loadAvailability();\n return availability.enabled;\n }\n\n async getTitle(): Promise<string | null> {\n const availability = await this.loadAvailability();\n return availability.title ?? null;\n }\n\n private async loadAvailability(): Promise<AXELdapLoginAvailabilityDto> {\n if (this.cached) {\n return this.cached;\n }\n\n try {\n const result = await this.queryService.fetch<void, AXELdapLoginAvailabilityDto>(\n AXELdapQueryKeys.GetLoginAvailability,\n undefined,\n );\n const data = runtimeQueryPayloadData(result);\n this.cached = data ?? { enabled: false };\n return this.cached;\n } catch {\n this.cached = { enabled: false };\n return this.cached;\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 { AXELdapPlatformAuthStrategy } from './platform-auth/ldap-platform-auth.strategy';\nimport { AXELdapPlatformLoginAvailabilityService } from './platform-auth/ldap-platform-login-availability.service';\n\n//#endregion\n\n//#region ---- Module ----\n\n/**\n * LDAP / Active Directory platform login extension.\n * Uses server-side directory bind via `LdapExtension:SignIn` (does not alter `Auth:SignIn` / user-pass).\n */\n@NgModule({\n imports: [AXPAuthModule.forChild({ strategies: [AXELdapPlatformAuthStrategy] })],\n providers: [AXELdapPlatformLoginAvailabilityService],\n})\nexport class AXELdapExtensionModule {\n constructor(\n registry: AXPComponentSlotRegistryService,\n ldapLogin: AXELdapPlatformLoginAvailabilityService,\n ) {\n registry.register(AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT, {\n name: 'ldap-platform-login',\n priority: 5,\n loadComponent: () =>\n import('./platform-auth/ldap-platform-login-slot.component').then(\n (component) => component.AXELdapPlatformLoginSlotComponent,\n ),\n condition: () => ldapLogin.isEnabled(),\n });\n }\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.AXELdapPlatformLoginAvailabilityService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-extension-ldap-client.mjs","sources":["../../../../libs/extensions/ldap/client/src/lib/platform-auth/ldap-platform-auth.strategy.ts","../../../../libs/extensions/ldap/client/src/lib/platform-auth/ldap-platform-login-availability.service.ts","../../../../libs/extensions/ldap/client/src/lib/ldap-extension.module.ts","../../../../libs/extensions/ldap/client/src/acorex-platform-extension-ldap-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport {\n runtimeCommandPayloadData,\n type AXPMultiLanguageString,\n} from '@acorex-platform/framework-shared/core';\nimport {\n AXPApplication,\n AXPAuthStrategy,\n AXPBaseCredentials,\n AXPSessionContext,\n AXPSessionService,\n AXPSignInResult,\n AXPTenant,\n AXPUser,\n TimeUtil,\n} from '@acorex-platform/framework-client/auth';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { commandMessageTextForError } from '@acorex-platform/framework-client/common';\nimport {\n AUTH_LOGOUT_DEFAULT,\n AUTH_REFRESH_DEFAULT,\n AUTH_UPDATE_SESSION_DEFAULT,\n} from '@acorex-platform/framework-shared/runtime';\nimport { AXELdapCommandKeys } from '@acorex-platform/extension-ldap-client/contracts';\nimport { Injectable, inject } from '@angular/core';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXELdapCredentials extends AXPBaseCredentials {\n username: string;\n password: string;\n rememberMe?: boolean;\n}\n\ninterface AuthTokenResponseDto {\n accessToken: string;\n refreshToken: string;\n expiresIn?: string;\n user: AXPUser;\n tenant?: { id: string; name?: string; title?: AXPMultiLanguageString } | null;\n application?: { id: string; name?: string; title?: AXPMultiLanguageString } | null;\n}\n\nexport class AXELdapAuthApiError extends Error {\n constructor(\n message: string,\n readonly apiError?: Record<string, unknown>,\n readonly status?: number,\n ) {\n super(message);\n this.name = 'AXELdapAuthApiError';\n }\n}\n\n//#endregion\n\n//#region ---- LDAP platform auth strategy ----\n\n@Injectable()\nexport class AXELdapPlatformAuthStrategy extends AXPAuthStrategy {\n private readonly commandService = inject(AXPCommandService);\n private readonly sessionService = inject(AXPSessionService);\n\n get name(): string {\n return 'ldap';\n }\n\n async signin(credentials: AXELdapCredentials): Promise<AXPSignInResult> {\n const result = await this.executeAuthCommand<AuthTokenResponseDto>(AXELdapCommandKeys.SignIn, {\n username: credentials.username,\n password: credentials.password,\n ...(credentials.rememberMe === true ? { rememberMe: true } : { rememberMe: false }),\n });\n\n return this.toSignInResult(result);\n }\n\n async signout(): Promise<void> {\n try {\n await this.commandService.execute(AUTH_LOGOUT_DEFAULT, {});\n } catch {\n // Ignore logout network errors; client session is cleared regardless.\n }\n }\n\n async refreshToken(context: AXPSessionContext): Promise<AXPSignInResult> {\n const result = await this.executeAuthCommand<AuthTokenResponseDto>(AUTH_REFRESH_DEFAULT, {});\n return this.toSignInResult(result, context);\n }\n\n override async updateToken(params: { [key: string]: unknown }): Promise<AXPSignInResult> {\n if (!this.sessionService.hasSessionCredentials()) {\n throw new Error('Access session not found');\n }\n\n const tenant = params['tenant'] as AXPTenant | undefined;\n const application = params['application'] as AXPApplication | undefined;\n\n const result = await this.executeAuthCommand<AuthTokenResponseDto>(AUTH_UPDATE_SESSION_DEFAULT, {\n tenantId: params['tenantId'] ?? tenant?.id,\n applicationId: params['applicationId'] ?? application?.id,\n tenant,\n application,\n });\n\n return this.toSignInResult(result, {\n user: (params['user'] as AXPUser) ?? this.sessionService.user,\n tenant: tenant ?? null,\n application: application ?? null,\n });\n }\n\n private async executeAuthCommand<T>(key: string, input: unknown): Promise<T> {\n const result = await this.commandService.execute<unknown, T>(key, input);\n const data = runtimeCommandPayloadData(result);\n if (data == null) {\n const message = commandMessageTextForError(result?.message?.text) || 'LDAP authentication failed';\n const details =\n result?.message?.details &&\n typeof result.message.details === 'object' &&\n !Array.isArray(result.message.details)\n ? (result.message.details as Record<string, unknown>)\n : {};\n throw new AXELdapAuthApiError(\n message,\n {\n message,\n ...(typeof result?.message?.code === 'string'\n ? { code: result.message.code, error: result.message.code }\n : {}),\n ...details,\n },\n typeof (details as { status?: unknown }).status === 'number'\n ? (details as { status: number }).status\n : undefined,\n );\n }\n\n return data;\n }\n\n private toSignInResult(result: AuthTokenResponseDto, context?: Partial<AXPSessionContext>): AXPSignInResult {\n return {\n succeed: true,\n data: {\n accessToken: result.accessToken,\n refreshToken: result.refreshToken,\n expiresIn: this.parseExpiresIn(result.expiresIn),\n user: result.user,\n tenant: this.mergeTenant(this.mapTenant(result.tenant), context?.tenant ?? null),\n application: this.mergeApplication(this.mapApplication(result.application), context?.application ?? null),\n },\n };\n }\n\n private mergeTenant(mapped: AXPTenant | null, contextTenant: AXPTenant | null): AXPTenant | null {\n if (!mapped && !contextTenant) {\n return null;\n }\n if (!mapped) {\n return contextTenant;\n }\n if (!contextTenant) {\n return mapped;\n }\n return {\n ...contextTenant,\n ...mapped,\n title: mapped.title && mapped.title !== mapped.id ? mapped.title : contextTenant.title || mapped.title,\n name: mapped.name && mapped.name !== mapped.id ? mapped.name : contextTenant.name || mapped.name,\n };\n }\n\n private mergeApplication(\n mapped: AXPApplication | null,\n contextApplication: AXPApplication | null,\n ): AXPApplication | null {\n if (!mapped && !contextApplication) {\n return null;\n }\n if (!mapped) {\n return contextApplication;\n }\n if (!contextApplication) {\n return mapped;\n }\n return {\n ...contextApplication,\n ...mapped,\n edition: mapped.edition ?? contextApplication.edition,\n version: mapped.version ?? contextApplication.version,\n logoUrl: mapped.logoUrl ?? contextApplication.logoUrl,\n description: mapped.description ?? contextApplication.description,\n };\n }\n\n private mapTenant(\n tenant?: { id: string; name?: string; title?: AXPMultiLanguageString } | null,\n ): AXPTenant | null {\n if (!tenant?.id) {\n return null;\n }\n return {\n id: tenant.id,\n name: tenant.name ?? tenant.id,\n title: tenant.title ?? tenant.name ?? tenant.id,\n };\n }\n\n private mapApplication(\n application?: { id: string; name?: string; title?: AXPMultiLanguageString } | null,\n ): AXPApplication | null {\n if (!application?.id) {\n return null;\n }\n return {\n id: application.id,\n name: application.name ?? application.id,\n title: application.title ?? application.name,\n };\n }\n\n private parseExpiresIn(expiresIn?: string): string | null {\n if (!expiresIn) {\n return null;\n }\n const match = /^(\\d+)([smhd])$/i.exec(expiresIn.trim());\n if (!match) {\n return null;\n }\n const value = Number(match[1]);\n const unit = match[2].toLowerCase();\n const multipliers: Record<string, number> = { s: 1, m: 60, h: 3600, d: 86400 };\n return TimeUtil.calculateExpireInDate(value * multipliers[unit]);\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { runtimeQueryPayloadData } from '@acorex-platform/framework-shared/core';\nimport { AXPQueryService } from '@acorex-platform/framework-client/runtime';\nimport {\n AXELdapQueryKeys,\n type AXELdapLoginAvailabilityDto,\n} from '@acorex-platform/extension-ldap-client/contracts';\nimport { Injectable, inject } from '@angular/core';\n\n//#endregion\n\n//#region ---- LDAP login availability ----\n\n@Injectable()\nexport class AXELdapPlatformLoginAvailabilityService {\n private readonly queryService = inject(AXPQueryService);\n private cached: AXELdapLoginAvailabilityDto | null = null;\n\n async isEnabled(): Promise<boolean> {\n const availability = await this.loadAvailability();\n return availability.enabled;\n }\n\n async getTitle(): Promise<string | null> {\n const availability = await this.loadAvailability();\n return availability.title ?? null;\n }\n\n private async loadAvailability(): Promise<AXELdapLoginAvailabilityDto> {\n if (this.cached) {\n return this.cached;\n }\n\n try {\n const result = await this.queryService.fetch<void, AXELdapLoginAvailabilityDto>(\n AXELdapQueryKeys.GetLoginAvailability,\n undefined,\n );\n const data = runtimeQueryPayloadData(result);\n this.cached = data ?? { enabled: false };\n return this.cached;\n } catch {\n this.cached = { enabled: false };\n return this.cached;\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 { AXELdapPlatformAuthStrategy } from './platform-auth/ldap-platform-auth.strategy';\nimport { AXELdapPlatformLoginAvailabilityService } from './platform-auth/ldap-platform-login-availability.service';\n\n//#endregion\n\n//#region ---- Module ----\n\n/**\n * LDAP / Active Directory platform login extension.\n * Uses server-side directory bind via `LdapExtension:SignIn` (does not alter `Auth:SignIn` / user-pass).\n * Directory connection is configured on SecurityManagement.IdentityProvider (`protocol: directory`).\n */\n@NgModule({\n imports: [AXPAuthModule.forChild({ strategies: [AXELdapPlatformAuthStrategy] })],\n providers: [AXELdapPlatformLoginAvailabilityService],\n})\nexport class AXELdapExtensionModule {\n constructor(\n registry: AXPComponentSlotRegistryService,\n ldapLogin: AXELdapPlatformLoginAvailabilityService,\n ) {\n registry.register(AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT, {\n name: 'ldap-platform-login',\n priority: 5,\n loadComponent: () =>\n import('./platform-auth/ldap-platform-login-slot.component').then(\n (component) => component.AXELdapPlatformLoginSlotComponent,\n ),\n condition: () => ldapLogin.isEnabled(),\n });\n }\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.AXELdapPlatformLoginAvailabilityService"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -16,6 +16,7 @@ declare class AXELdapPlatformLoginAvailabilityService {
|
|
|
16
16
|
/**
|
|
17
17
|
* LDAP / Active Directory platform login extension.
|
|
18
18
|
* Uses server-side directory bind via `LdapExtension:SignIn` (does not alter `Auth:SignIn` / user-pass).
|
|
19
|
+
* Directory connection is configured on SecurityManagement.IdentityProvider (`protocol: directory`).
|
|
19
20
|
*/
|
|
20
21
|
declare class AXELdapExtensionModule {
|
|
21
22
|
constructor(registry: AXPComponentSlotRegistryService, ldapLogin: AXELdapPlatformLoginAvailabilityService);
|