m.pregoi.com (admin-web) — Company Profile & footer/cookie cleanup (기획서)
상태: §2 목표 1·2·3·4 및 §3 구현 — admin-web 코드 반영됨 (배포는 별도). §4 접근 경로: 채택 모델 B 직접 URL — 기존과 동일하게 추가 게이트/리다이렉트 없음.
범위: Prego apps/admin-web (m.pregoi.com).
1. 배경 / 문제 (과거) 및 조치
| 이슈 | 원인(과거) | 조치(반영됨) |
|---|---|---|
| 초대 행 Remove | 모바일에서 텍스트 버튼이 레이아웃에 묻혀 잘 안 보임. | 빨간 X 아이콘 버튼 + aria-label (app/page.tsx CompanyInfoStep). |
| 하단 Cookie settings | app/layout.tsx에 LocalizedCookieConsentBanner 마운트. | 배너 미마운트; 미사용 래퍼 파일 삭제. |
| Employee Portal | CompanyInfoStep에 보조 라벨. | 해당 라벨 제거. |
| 저작권 한 줄 | 각 페이지 <Footer /> + Footer.tsx. | Footer.tsx 삭제, 모든 페이지에서 import/JSX 제거. |
접근 경로 (제품·보안 검토 주제): 테넌트 온보딩/관리용 m 진입을 www.pregoi.com 메뉴를 통해서만 허용할지, 직접 URL(북마크·이메일 링크·주소창 입력)도 허용할지에 대한 정책 — §4에서 비교·추천.
2. 목표 (수용 기준)
-
Remove → 빨간 X 아이콘
- 초대 행 삭제 컨트롤을 텍스트 Remove 대신 시각적으로 분명한 빨간색 X 아이콘 버튼으로 교체.
type="button", 접근성:aria-label(예:Remove invite row/Remove this person) 필수. 포커스 링 유지.- 모바일·좁은 너비에서 가려지지 않도록: 아이콘 전용 히트 영역(최소 44×44px 권장),
shrink-0, 행 레이아웃(flex/grid)에서 이메일/이름 필드와 겹침 없이 배치.
-
Cookie settings 문구 제거 (admin-web 전 페이지)
m.pregoi.com에서 사용자에게 보이는 “Cookie settings” (및 동등한 설정 진입 카피가 노출되는 경우) 제거.- 채택: A) admin-web에서 쿠키 배너/설정 UI 미마운트 (§3.2). 대안 B)(최소 동의만 유지)는 미적용.
ConsentAwareAnalytics는NEXT_PUBLIC_GA_MEASUREMENT_ID가 있을 때만 로드됨 — 배너 없음일 때 GA는 동의 쿠키(예: www에서 설정)가 있을 때만 로드되는지 제품·법무와 확인.
-
Employee Portal 라벨 삭제
- 서브도메인 필드 아래
Employee Portal텍스트 노출 제거 (불필요한 제품 힌트 정리).
- 서브도메인 필드 아래
-
저작권 푸터 문구 삭제 (admin-web 전 페이지)
m.pregoi.com모든 라우트에서 하단 © … All rights reserved. 한 줄(및 동일 역할의 푸터 블록) 미노출.- 반영:
Footer컴포넌트 삭제 + 루트 정적*.html에서 전역<footer>제거 (§3.4). - 법무: 마케팅
www등 다른 호스트의 법적 고지와 역할 분담이 유지되는지 확인.
3. 구현 방향 (admin-web에 반영됨 — 아래는 설계·파일 참고)
3.1 초대 행 삭제 컨트롤
- 주요 파일:
apps/admin-web/app/page.tsx—CompanyInfoStep,removeInviteRow와 연결된 버튼. - 패턴: 기존 인라인 SVG 또는 프로젝트에서 이미 쓰는 아이콘 세트(있다면 동일 라이브러리)로 X 아이콘 추가. 색:
text-red-600/ dark 모드 대비. - 검증: iPhone SE 폭, Android Chrome, 초대 행 N개일 때 스크롤·오버플로 없음.
3.2 Cookie settings 제거
- 진입점:
apps/admin-web/app/layout.tsx— 적용됨:<LocalizedCookieConsentBanner />제거.ConsentAwareAnalytics·PREGO_CONSENT_EARLY_SCRIPT유지. - 정리: 미사용 래퍼
components/ui/LocalizedCookieConsentBanner.tsx삭제 (재도입 시@platform/cookie-consent에서 직접 import). - 감사:
grep -r "Cookie settings\\|openPregoCookieSettings\\|PREGO_COOKIE_SETTINGS" apps/admin-web로 잔존 링크 확인. - 대안(미적용): “설정 버튼만 숨김”이면
packages/prego-cookie-consent의CookieConsentBanner에 옵션 prop — 필요 시 별도 기획. - 문서:
apps/admin-web/docs/PLAN-minimal-header-footer.md갱신됨.
3.3 Employee Portal
- 주요 파일: 동일
app/page.tsx— 해당span제거 또는 조건부 렌더링 폐기. - 디자인/카피팀에 대체 설명 불필요함이 확인된 상태에서 삭제.
3.4 저작권 푸터 제거
- 적용됨:
components/layout/Footer.tsx삭제, 모든 페이지에서Footerimport·<Footer />제거. - 정적 데모 HTML (
apps/admin-web/*.html루트): 전역<footer class="footer">블록 제거 (Next 앱과 동일하게 하단 브랜딩 줄 없음). 페이지 내부 링크용signup-footer등은 유지. - 주의: 푸터 제거 후 하단 여백·레이아웃(특히 모바일 safe area)이 깨지지 않는지 확인.
4. m 접근 경로: www 경유 vs 직접 URL (시스템·보안 비교 및 추천)
4.1 방식 정의
| 방식 | 설명 |
|---|---|
| A. www 메뉴 경유 | 사용자가 반드시 www.pregoi.com에서 링크/버튼을 눌러 m.pregoi.com으로 이동하도록 UX·문서를 유도. (HTTP 레벨에서 “www에서만 오게” 강제하는 것은 별도 기술이 필요 — 아래 참고.) |
| B. 직접 URL | 주소창 입력, 북마크, 이메일/슬랙에 심은 딥링크(https://m.pregoi.com/?plan=free®ion=sg 등)로 바로 m 접속 허용. |
4.2 시스템 관점
| 항목 | A (경유 유도) | B (직접 URL) |
|---|---|---|
| 사용자 경험 | 첫 방문 온보딩에는 “설명 있는 랜딩 → 이동”이 자연스러움. 반복 방문 관리자·지원팀은 북마크/딥링크 불가하면 불편. | 북마크·공유·지원 시나리오에 유리. 마케팅 캠페인·쿼리(plan, region)와 잘 맞음. |
| 구현 복잡도 | “유도”만이면 링크/카피 수준. 강제하려면 Referer 검사, 일회용 토큰, www에서만 발급하는 signed query 등 추가 구현·운영 부담. | 별도 게이트 없이 표준 웹과 동일. |
| 딥링크·이메일 | OTP 메일·운영 안내에 m 직링크를 넣기 어려워질 수 있음. | 이메일·문서에 안정적인 진입 URL 유지 가능. |
4.3 보안 관점
| 항목 | A (경유·또는 Referer 기반 “강제”) | B (직접 URL) |
|---|---|---|
| 실질적 보호 | Referer/Origin 체크만으로 “www에서만”을 보장하기 어렵움(클라이언트·프록시·브라우저에 따라 누락·조작 가능). 보안 효과는 낮음이며 오탐·호환성 이슈 가능. | 공격면은 공개 URL이 존재한다는 점에서 A와 동일하게, 결국 인증·세션·테넌트 경계가 방어의 중심. |
| 인증 | OTP·JWT·Zuplo 신뢰 헤더 등은 도메인과 무관하게 설계되는 것이 정상. m이 직접 열려도 비로그인 상태에서는 민감 데이터 없음. | 동일. |
| 피싱·오인 | 사용자 교육(공식 도메인만 사용)은 www/m 모두 필요. | 동일. |
| 스캐닝·봇 | m 호스트를 숨겨도 DNS·인증서·공개 문서에 노출되면 은닉 효과 미미. WAF·레이트 리밋·봇 관리가 효과적. | 동일하게 엣지 정책으로 완화. |
4.4 추천 (요약)
- 직접 URL 접속(B)을 허용하는 것을 기본 추천한다. 이유: 실제 보안은 인증·게이트웨이·테넌트 스코프에 두고, 직접 URL은 UX·운영·딥링크에 필수에 가깝다.
- **www 메뉴(A)**는 “첫 사용자 안내·마케팅 퍼널”로는 유지하되, 접속 경로를 HTTP로 강제하지 않는 것이 일반적으로 낫다.
- 만약 규제·내부 정책으로 추가 완화가 필요하면: (1) 레이트 리밋 / Bot Fight / 지리 정책 등 인프라 통제, (2) 민감 작업만 별도 재인증, (3) 내부 전용이면 IP allowlist/VPN 등 명시적 네트워크 통제를 Referer 기반보다 우선 검토.
5. 검증 체크리스트
- 주요 라우트에서 하단 Cookie settings 미노출.
- GA 사용 시: 스테이징에서 동의 없이 GA가 로드되지 않는지(제품 정책에 따라 수동 확인).
- Company Profile: 초대 행 빨간 X 노출·탭 가능.
- Employee Portal 라벨 없음.
- admin-web 저작권 푸터 없음 (
Footer제거). -
pnpm --filter prego-admin-web run lint·pnpm run build(admin-web).
6. 관련 문서
- m-pregoi-admin-web-ux-implementation
- m onboarding step connector — 상단 스텝 레일 시각
- onboarding-provisioning-logpath-admin-console-plan
apps/admin-web/docs/PLAN-minimal-header-footer.md