Google 계정 연동 관리 개선
This commit is contained in:
@@ -216,7 +216,7 @@
|
||||
- Google OAuth state는 `MEMBER_SESSION_SECRET` 기반 HMAC 서명과 10분 nonce 쿠키로 검증한다. redirect는 `/`로 시작하는 내부 경로만 허용한다.
|
||||
- 일반 회원 Google 로그인은 `google_sub`로 기존 회원을 찾고, 없으면 이메일 중복이 없을 때 새 회원을 생성한다. 이미 같은 이메일로 가입된 계정이 있으면 기존 계정 로그인 후 Google 계정 연결을 요청한다.
|
||||
- 관리자 Google 로그인은 이미 `google_sub`가 연결된 `owner` 또는 `admin` 계정만 허용한다. 관리자 계정은 먼저 기존 비밀번호 로그인으로 들어간 뒤 회원 설정 화면에서 Google 계정을 연결해야 한다.
|
||||
- 회원 설정 화면은 Google 계정 연결 상태를 표시하고 `/api/auth/google/start?mode=link`로 현재 로그인 계정에 Google 식별자를 연결한다. 같은 Google 계정이 다른 회원에 이미 연결되어 있으면 연결하지 않는다.
|
||||
- 회원 설정 화면은 Google 계정 연결 상태를 표시하고, 미연결 상태에서만 `/api/auth/google/start?mode=link`로 현재 로그인 계정에 Google 식별자를 연결한다. 연결 후 회원 본인은 다시 연결하거나 다른 Google 계정으로 교체할 수 없으며 읽기 전용 `연결 됨` 상태만 본다. 같은 Google 계정이 다른 회원에 이미 연결되어 있으면 연결하지 않는다.
|
||||
|
||||
### 레이아웃 파일
|
||||
|
||||
@@ -671,6 +671,7 @@ components/content/
|
||||
- `POST /admin/api/auth/login` - 로그인. 회원 로그인과 분리된 계정·IP 실패 횟수 제한을 적용하며 한도를 넘으면 429를 반환한다.
|
||||
- `POST /admin/api/auth/logout` - 로그아웃
|
||||
- `GET /admin/api/auth/me` - 현재 관리자 세션 조회. `optional=1` 쿼리를 붙이면 비로그인 상태에서 401 대신 `null`을 반환하며, 관리자 라우트 보호용 기본 호출은 401을 유지한다.
|
||||
- `DELETE /admin/api/members/:id/google` - 소유자 권한으로 해당 회원의 Google 로그인 연동을 해제한다. 해제 후 회원 설정 화면에서는 미연결 상태가 되며, 회원이 필요하면 다시 Google 계정을 연결할 수 있다.
|
||||
- `GET /admin/api/analytics/summary?period=weekly&days=56` - 통계 요약(오늘 및 최근 7/30/180/365일 방문, 누적 방문자·누적 조회수·공개 게시물 수, 30일 조회, 현재 접속자, 평균 체류, 50% 스크롤 도달, `collectedSince`, 선택 집계 단위 `trends`). `period`는 `daily`, `weekly`, `monthly`, `yearly`를 사용하며 대시보드는 일일·주간·월간·년간으로 전환한다.
|
||||
- `GET /admin/api/analytics/posts?days=30&limit=5` - 기간 내 인기 게시물(조회·최근 30일 월간 조회·작성일·읽음·평균 체류·스크롤 구간)
|
||||
- `GET /admin/api/analytics/pages?days=30&limit=5` - 기간 내 인기 페이지(조회·방문자·평균 체류·스크롤 구간)
|
||||
|
||||
Reference in New Issue
Block a user