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