fix: SSO 로그인 사용자 정보 연동 개선
Deploy EG-BIM QA Gateway / deploy (push) Successful in 42s

This commit is contained in:
root committed 2026-10-27 17:02:12 +09:00
1 parent e4843e7d1d
commit 1808f14cc6
17 files changed
+711 -23

No files matched your search

+38
View File
@@ -0,0 +1,38 @@
import { spawn } from 'node:child_process';
import { deploymentOrgSettings } from './org-context-settings.mjs';
const worker = 'baron-qa-gateway-test';
const dryRun = process.argv.includes('--dry-run');
function execute(args, input) {
return new Promise((resolve, reject) => {
const child = spawn('npx', ['wrangler', ...args], {
stdio: [input === undefined ? 'ignore' : 'pipe', 'inherit', 'inherit']
});
child.once('error', (error) => {
console.error('Worker command OS error:', error.code);
reject(new Error('Worker deployment command failed'));
});
child.once('exit', (code, signal) => {
if (code === 0) resolve();
else {
console.error('Worker command exit:', signal || code);
reject(new Error('Worker deployment command failed'));
}
});
if (input !== undefined) {
child.stdin.once('error', () => reject(new Error('Worker secret input failed')));
child.stdin.end(input);
}
});
}
try {
const { vars, secrets } = deploymentOrgSettings(process.env);
if (!dryRun && Object.keys(secrets).length) await execute(['secret', 'bulk', '--name', worker], JSON.stringify(secrets));
const args = ['deploy', '--name', worker];
if (dryRun) args.push('--dry-run');
for (const [name, value] of Object.entries(vars)) args.push('--var', name + ':' + value);
await execute(args);
} catch {
console.error('Worker deployment failed. Check configuration and preceding Wrangler diagnostics.');
process.exitCode = 1;
}
+19
View File
@@ -0,0 +1,19 @@
import { orgContextConfig } from '../src/org-context.js';
export function deploymentOrgSettings(env) {
const vars = {
ORG_CONTEXT_ENABLED: env.ORG_CONTEXT_ENABLED || 'false',
ORG_CONTEXT_API_URL: env.ORG_CONTEXT_API_URL || 'https://sadmin.hmac.kr/api/v1/integrations/org-context',
ORG_CONTEXT_SCOPE_MODE: env.ORG_CONTEXT_SCOPE_MODE || 'SCOPED',
ORG_CONTEXT_EXPOSURE: env.ORG_CONTEXT_EXPOSURE || 'identifiers',
ORG_CONTEXT_TENANT_IDS: env.ORG_CONTEXT_TENANT_IDS || '[]',
ORG_CONTEXT_CACHE_TTL_SECONDS: env.ORG_CONTEXT_CACHE_TTL_SECONDS || '300'
};
if (!['true', 'false'].includes(vars.ORG_CONTEXT_ENABLED)) throw new Error('ORG_CONTEXT_ENABLED must be true or false');
const secrets = {
ORG_CONTEXT_KEY_ID: env.ORG_CONTEXT_KEY_ID || '',
ORG_CONTEXT_KEY_SECRET: env.ORG_CONTEXT_KEY_SECRET || ''
};
if (vars.ORG_CONTEXT_ENABLED === 'true') orgContextConfig({ ...vars, ...secrets });
return { vars, secrets: secrets.ORG_CONTEXT_KEY_ID && secrets.ORG_CONTEXT_KEY_SECRET ? secrets : {} };
}
+19
View File
@@ -0,0 +1,19 @@
import { getOrgDirectory } from '../src/org-context.js';
import { deploymentOrgSettings } from './org-context-settings.mjs';
try {
const { vars, secrets } = deploymentOrgSettings(process.env);
if (vars.ORG_CONTEXT_ENABLED !== 'true') {
console.log('Organization integration disabled; existing behavior retained.');
} else {
const directory = await getOrgDirectory({ ...vars, ...secrets });
console.log(JSON.stringify({
status: 'verified', rootCount: JSON.parse(vars.ORG_CONTEXT_TENANT_IDS).length,
tenantCount: directory.tenantCount, userCount: directory.byUser.size,
membershipCount: directory.membershipCount
}));
}
} catch (error) {
console.error(/^org_context_[a-z0-9_]+$/.test(error?.message || '') ? error.message : 'Organization integration configuration or verification failed.');
process.exitCode = 1;
}