로그인 설정 UI 제거 및 .env 기반 설정
- 로그인 설정 모달(UI) 제거 - 허용 이메일 라벨을 관리자 이메일로 변경 - Auth0/관리자 이메일을 서버 .env에서 제공하고 클라이언트가 자동 로드 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
68
index.html
68
index.html
@@ -22,8 +22,6 @@
|
||||
// 2) Allowed Callback URLs / Allowed Logout URLs에 현재 사이트 주소를 등록하세요.
|
||||
// 예: https://drive.daewoongai.com/apps/dashboard/
|
||||
window.AUTH_CONFIG = {
|
||||
// end-user가 설정 모달을 사용하는지 여부(기본: false)
|
||||
allowEndUserConfig: false,
|
||||
// (선택) API 서버가 다른 도메인이면 지정. 예: https://api.ncue.net
|
||||
apiBase: "",
|
||||
auth0: {
|
||||
@@ -34,8 +32,8 @@
|
||||
connections: {
|
||||
google: "",
|
||||
},
|
||||
// 관리 허용 이메일(대소문자 무시)
|
||||
allowedEmails: [],
|
||||
// 관리자 이메일(대소문자 무시)
|
||||
adminEmails: [],
|
||||
};
|
||||
</script>
|
||||
<script defer src="./script.js"></script>
|
||||
@@ -194,48 +192,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Auth Config Modal -->
|
||||
<div class="modal" id="authModal" role="dialog" aria-modal="true" aria-labelledby="authModalTitle" hidden>
|
||||
<div class="modal-backdrop" data-auth-close="1"></div>
|
||||
<div class="modal-card" role="document">
|
||||
<div class="modal-head">
|
||||
<div class="modal-title" id="authModalTitle">로그인 설정</div>
|
||||
<button class="icon-btn" type="button" id="btnAuthClose" title="닫기" aria-label="닫기">×</button>
|
||||
</div>
|
||||
|
||||
<form id="authForm" class="modal-body">
|
||||
<label class="field">
|
||||
<span class="field-label">Auth0 Domain</span>
|
||||
<input id="authDomain" class="input" type="text" placeholder="예: your-tenant.us.auth0.com" />
|
||||
<div class="hint">Auth0 테넌트 도메인입니다. (비밀값 아님)</div>
|
||||
</label>
|
||||
|
||||
<label class="field">
|
||||
<span class="field-label">Auth0 Client ID</span>
|
||||
<input id="authClientId" class="input" type="text" placeholder="예: AbCdEf..." />
|
||||
<div class="hint">Auth0 SPA Application의 Client ID입니다. (비밀값 아님)</div>
|
||||
</label>
|
||||
|
||||
<label class="field">
|
||||
<span class="field-label">허용 이메일</span>
|
||||
<input id="authAllowedEmails" class="input" type="text" placeholder="예: me@example.com, admin@example.com" />
|
||||
<div class="hint">쉼표로 구분합니다. 비워두면 “로그인한 모든 계정”이 관리 가능해집니다.</div>
|
||||
</label>
|
||||
|
||||
<label class="field">
|
||||
<span class="field-label">Connection 이름(선택)</span>
|
||||
<input id="authConnGoogle" class="input" type="text" placeholder="Google 예: google-oauth2" />
|
||||
<div class="hint">Auth0에서 설정한 Google connection 이름입니다. (보통 `google-oauth2`)</div>
|
||||
</label>
|
||||
|
||||
<div class="modal-foot">
|
||||
<button class="btn btn-ghost" type="button" id="btnAuthReset">초기화</button>
|
||||
<button class="btn btn-primary" type="submit" id="btnAuthSave">저장</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Hidden file input for import -->
|
||||
<input id="file" type="file" accept="application/json" hidden />
|
||||
|
||||
@@ -713,7 +669,12 @@
|
||||
if (!data || typeof data !== "object") return null;
|
||||
const auth0 = data.auth0 && typeof data.auth0 === "object" ? data.auth0 : {};
|
||||
const connections = data.connections && typeof data.connections === "object" ? data.connections : {};
|
||||
const allowedEmails = Array.isArray(data.allowedEmails) ? data.allowedEmails : [];
|
||||
// legacy: allowedEmails -> adminEmails
|
||||
const adminEmails = Array.isArray(data.adminEmails)
|
||||
? data.adminEmails
|
||||
: Array.isArray(data.allowedEmails)
|
||||
? data.allowedEmails
|
||||
: [];
|
||||
return {
|
||||
auth0: {
|
||||
domain: String(auth0.domain || "").trim(),
|
||||
@@ -724,7 +685,7 @@
|
||||
kakao: String(connections.kakao || "").trim(),
|
||||
naver: String(connections.naver || "").trim(),
|
||||
},
|
||||
allowedEmails: allowedEmails.map((e) => String(e).trim().toLowerCase()).filter(Boolean),
|
||||
adminEmails: adminEmails.map((e) => String(e).trim().toLowerCase()).filter(Boolean),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -732,7 +693,12 @@
|
||||
const cfg = window.AUTH_CONFIG && typeof window.AUTH_CONFIG === "object" ? window.AUTH_CONFIG : {};
|
||||
const auth0 = cfg.auth0 && typeof cfg.auth0 === "object" ? cfg.auth0 : {};
|
||||
const connections = cfg.connections && typeof cfg.connections === "object" ? cfg.connections : {};
|
||||
const allowedEmails = Array.isArray(cfg.allowedEmails) ? cfg.allowedEmails : [];
|
||||
// legacy: allowedEmails -> adminEmails
|
||||
const adminEmails = Array.isArray(cfg.adminEmails)
|
||||
? cfg.adminEmails
|
||||
: Array.isArray(cfg.allowedEmails)
|
||||
? cfg.allowedEmails
|
||||
: [];
|
||||
const base = {
|
||||
auth0: {
|
||||
domain: String(auth0.domain || "").trim(),
|
||||
@@ -743,7 +709,7 @@
|
||||
kakao: String(connections.kakao || "").trim(),
|
||||
naver: String(connections.naver || "").trim(),
|
||||
},
|
||||
allowedEmails: allowedEmails.map((e) => String(e).trim().toLowerCase()).filter(Boolean),
|
||||
adminEmails: adminEmails.map((e) => String(e).trim().toLowerCase()).filter(Boolean),
|
||||
};
|
||||
const over = loadAuthOverride();
|
||||
if (!over) return base;
|
||||
@@ -757,7 +723,7 @@
|
||||
kakao: over.connections.kakao || base.connections.kakao,
|
||||
naver: over.connections.naver || base.connections.naver,
|
||||
},
|
||||
allowedEmails: over.allowedEmails.length ? over.allowedEmails : base.allowedEmails,
|
||||
adminEmails: over.adminEmails.length ? over.adminEmails : base.adminEmails,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user