This commit is contained in:
1 parent
24eeb178bd
commit
710229879e
1 file changed
+18
-5
+18
-5
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user