개선관리 요구사항과 Google 로그인을 완료

This commit is contained in:
Yun Chan 2026-08-28 16:07:09 +09:00
parent cc0a15b7c6
commit 2a39636163
112 changed files with 10166 additions and 527 deletions

View file

@ -8,7 +8,7 @@
:
- src/pages/Login.tsx + login/LoginBrand.tsx + login/LoginPanel.tsx
( , , OAuth )
( Google , , OAuth )
- src/pages/Onboarding.tsx (canSubmit · , isValidPhone,
details, source_note)
- src/pages/PendingApproval.tsx ( , )
@ -44,7 +44,7 @@ const READY_AUTH_CONFIG = {
{ provider: "google", configured: true, enabled: true, login_path: "/auth/login?provider=google" },
{ provider: "saml", configured: false, enabled: false, login_path: "/auth/login?provider=saml" },
],
allowed_email_domains: ["hs.ac.kr", "twentyoz.kr"],
allowed_email_domains: [],
redirect_uri: "http://127.0.0.1:8000/auth/callback",
dev_login_enabled: false,
};
@ -156,8 +156,8 @@ async function fillOnboardingTextFields(page: Page, phone = "010-1234-5678") {
}
test.describe("uc auth-onboarding", () => {
// usecase: 처음 방문한 사용자가 로그인 화면에서 서비스 소개·허용 도메인·비치료 고지를 읽는다
test("로그인 화면에서 서비스 성격과 허용 도메인, 비치료 고지를 확인한다", async ({ page }) => {
// usecase: 처음 방문한 사용자가 로그인 화면에서 서비스 소개·Google 계정 정책·비치료 고지를 읽는다
test("로그인 화면에서 서비스 성격과 Google 계정 정책, 비치료 고지를 확인한다", async ({ page }) => {
await routeUnmockedApi(page);
await routeUnauthenticated(page);
await routeAuthConfig(page);
@ -165,13 +165,13 @@ test.describe("uc auth-onboarding", () => {
await page.goto("/login");
await expect(page.getByRole("heading", { name: "로그인" })).toBeVisible();
await expect(page.locator(".lg-lead")).toContainText(
"학교 또는 승인된 Google 계정으로 접속하면 역할과 코호트 권한을 확인합니다.",
"이메일이 확인된 Google 계정이면 도메인이나 사전등록 없이 바로 시작할 수 있습니다.",
);
// 허용 도메인 안내: 브랜드 패널 배지 + 버튼 서브라벨.
await expect(page.locator(".lg-policy")).toContainText("허용 도메인");
await expect(page.locator(".lg-policy b").first()).toHaveText("hs.ac.kr");
await expect(page.locator(".lg-obtn.primary .sub")).toHaveText("@hs.ac.kr");
// 제한 없는 Google 계정 안내: 브랜드 패널 배지 + 버튼 서브라벨.
await expect(page.locator(".lg-policy")).toContainText("Google 로그인");
await expect(page.locator(".lg-policy b")).toHaveText("모든 Google 계정");
await expect(page.locator(".lg-obtn.primary .sub")).toHaveText("모든 Google 계정");
// 비치료 고지: 교육용 도구임을 명시한다.
await expect(page.locator(".lg-note")).toContainText(