feat add some for users in iam

This commit is contained in:
mahmood
2026-10-08 00:10:10 +03:30
parent 1b02780881
commit dcb74603ad
2 changed files with 39 additions and 5 deletions
+13 -2
View File
@@ -83506,7 +83506,7 @@ var require_iam_service = __commonJS({
body.tenant_slug = tenantSlug;
if (clientIp)
body.client_ip = clientIp;
const returnTo = (0, env_12.envOrNull)("IAM_ADMIN_BROWSER_RETURN_URL") || (0, env_12.envOrNull)("IAM_BROWSER_RETURN_URL");
const returnTo = this.adminBrowserReturnUrl();
if (returnTo)
body.return_to = returnTo;
const timeout = Number((0, env_12.envOr)("IAM_HTTP_TIMEOUT_MS", "8000"));
@@ -83579,7 +83579,7 @@ var require_iam_service = __commonJS({
body.client_ip = clientIp;
if (factorReference)
body.factor_reference = factorReference;
const returnTo = (0, env_12.envOrNull)("IAM_BROWSER_RETURN_URL");
const returnTo = this.customerBrowserReturnUrl();
if (returnTo)
body.return_to = returnTo;
const timeout = Number((0, env_12.envOr)("IAM_HTTP_TIMEOUT_MS", "8000"));
@@ -83620,6 +83620,17 @@ var require_iam_service = __commonJS({
this.logger.warn(`identity service returned ${response.status} for an OTP attestation`);
throw new IamUnavailableError(`identity service returned ${response.status}`);
}
/**
* مقصد بلیت مرورگر. خروج از فهرست گسترده‌تری استفاده می‌کند؛ اگر ورود فقط
* `IAM_BROWSER_RETURN_URL` را ببیند و آن خالی باشد، کوکی مشترک گذاشته نمی‌شود
* و فقط خروج به IAM می‌رود.
*/
customerBrowserReturnUrl() {
return (0, env_12.envOrNull)("IAM_BROWSER_RETURN_URL") || (0, env_12.envOrNull)("IAM_POST_LOGOUT_REDIRECT_URI") || (0, env_12.envList)("IAM_ALLOWED_RETURN_URLS")[0] || null;
}
adminBrowserReturnUrl() {
return (0, env_12.envOrNull)("IAM_ADMIN_BROWSER_RETURN_URL") || (0, env_12.envOrNull)("IAM_ADMIN_POST_LOGOUT_REDIRECT_URI") || (0, env_12.envList)("IAM_ADMIN_ALLOWED_RETURN_URLS")[0] || this.customerBrowserReturnUrl();
}
browserBootstrapUrl(ticket) {
if (!ticket || !this.issuer)
return null;
+26 -3
View File
@@ -1,5 +1,5 @@
import { Injectable, Logger } from '@nestjs/common';
import { envOr, envOrNull } from '../../common/env';
import { envList, envOr, envOrNull } from '../../common/env';
/**
* Credential delegation to the central identity service (Central IAM).
@@ -115,7 +115,7 @@ export class IamService {
if (tenantId) body.tenant_id = tenantId;
else if (tenantSlug) body.tenant_slug = tenantSlug;
if (clientIp) body.client_ip = clientIp;
const returnTo = envOrNull('IAM_ADMIN_BROWSER_RETURN_URL') || envOrNull('IAM_BROWSER_RETURN_URL');
const returnTo = this.adminBrowserReturnUrl();
if (returnTo) body.return_to = returnTo;
const timeout = Number(envOr('IAM_HTTP_TIMEOUT_MS', '8000'));
@@ -203,7 +203,7 @@ export class IamService {
else if (tenantSlug) body.tenant_slug = tenantSlug;
if (clientIp) body.client_ip = clientIp;
if (factorReference) body.factor_reference = factorReference;
const returnTo = envOrNull('IAM_BROWSER_RETURN_URL');
const returnTo = this.customerBrowserReturnUrl();
if (returnTo) body.return_to = returnTo;
const timeout = Number(envOr('IAM_HTTP_TIMEOUT_MS', '8000'));
@@ -254,6 +254,29 @@ export class IamService {
throw new IamUnavailableError(`identity service returned ${response.status}`);
}
/**
* مقصد بلیت مرورگر. خروج از فهرست گسترده‌تری استفاده می‌کند؛ اگر ورود فقط
* `IAM_BROWSER_RETURN_URL` را ببیند و آن خالی باشد، کوکی مشترک گذاشته نمی‌شود
* و فقط خروج به IAM می‌رود.
*/
private customerBrowserReturnUrl(): string | null {
return (
envOrNull('IAM_BROWSER_RETURN_URL') ||
envOrNull('IAM_POST_LOGOUT_REDIRECT_URI') ||
envList('IAM_ALLOWED_RETURN_URLS')[0] ||
null
);
}
private adminBrowserReturnUrl(): string | null {
return (
envOrNull('IAM_ADMIN_BROWSER_RETURN_URL') ||
envOrNull('IAM_ADMIN_POST_LOGOUT_REDIRECT_URI') ||
envList('IAM_ADMIN_ALLOWED_RETURN_URLS')[0] ||
this.customerBrowserReturnUrl()
);
}
browserBootstrapUrl(ticket: string | null | undefined): string | null {
if (!ticket || !this.issuer) return null;
return `${this.issuer}/auth/bootstrap?ticket=${encodeURIComponent(ticket)}`;