Use SSO session for own post filter
Deploy EG-BIM QA Gateway / deploy (push) Successful in 1m51s

This commit is contained in:
root committed 2026-10-23 17:17:28 +09:00
1 parent 24eeb178bd
commit 710229879e
1 file changed
+18 -5
+18 -5
View File
@@ -19,6 +19,7 @@
ON_HOLD: "보류"
};
let authReady;
let resolvedAuthUser = null;
function qs(selector, root) { return (root || document).querySelector(selector); }
function qsa(selector, root) { return Array.prototype.slice.call((root || document).querySelectorAll(selector)); }
@@ -163,8 +164,9 @@
function isPostOwner(post, user) {
if (!post || !user) return false;
const postIds = [post.requesterId, post.requesterUuid].filter(Boolean);
const userIds = [user.requesterId, user.ssoSubject, user.userUuid].filter(Boolean);
const normalizeId = function (id) { return String(id || '').trim().toLowerCase(); };
const postIds = [post.requesterId, post.requesterUuid].map(normalizeId).filter(Boolean);
const userIds = [user.requesterId, user.ssoSubject, user.userUuid].map(normalizeId).filter(Boolean);
if (postIds.length && userIds.length) return postIds.some(function (id) { return userIds.indexOf(id) > -1; });
return Boolean(post.author && [user.name, user.loginId, user.email].filter(Boolean).indexOf(post.author) > -1);
}
@@ -326,6 +328,7 @@
}
function getAuthUser() {
if (resolvedAuthUser) return resolvedAuthUser;
const sessionUser = normalizeAuthUser({
loginId: sessionStorage.getItem('loginId') || '',
userId: sessionStorage.getItem('descopeUserId') || '',
@@ -348,17 +351,27 @@
async function loadAuthUser() {
const localUser = getAuthUser();
if (localUser && localUser.tenantId) return localUser;
if (!config.ssoSessionEndpoint) return localUser;
if (localUser && localUser.tenantId) {
resolvedAuthUser = localUser;
return localUser;
}
if (!config.ssoSessionEndpoint) {
resolvedAuthUser = localUser;
return localUser;
}
try {
const response = await fetch(config.ssoSessionEndpoint, { credentials: 'include', headers: { Accept: 'application/json' } });
if (!response.ok) throw new Error('SSO 세션 확인에 실패했습니다.');
const body = await response.json();
const remoteUser = normalizeAuthUser(body.user || body, body.claims || body.scope || {});
if (remoteUser.loginId || remoteUser.ssoSubject) return remoteUser;
if (remoteUser.loginId || remoteUser.ssoSubject) {
resolvedAuthUser = remoteUser;
return remoteUser;
}
} catch (error) {
console.warn('[QA] SSO session bridge unavailable:', error.message);
}
resolvedAuthUser = localUser;
return localUser;
}