DB 기반 관리자 권한으로 전환
- ncue_user에 is_admin 추가 및 can_manage 호환 유지 - /api/auth/sync 및 관리 API를 DB is_admin 기반으로 변경 - index.html 폴백에서 관리자 이메일 하드코딩 제거 - .env로 관리자 부트스트랩(ADMIN_EMAILS) 지원 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
23
README.md
23
README.md
@@ -181,7 +181,8 @@ sudo journalctl -u ncue-flask -n 200 --no-pager
|
||||
> 참고: `flask_app.py`는 DB가 일시적으로 죽어도 앱 임포트 단계에서 바로 죽지 않도록(DB pool lazy 생성) 개선되어,
|
||||
> “백엔드 프로세스가 안 떠서 Apache가 503”인 케이스를 줄였습니다.
|
||||
|
||||
기본적으로 `.env`의 `ADMIN_EMAILS`에 포함된 이메일은 `can_manage=true`로 자동 승격됩니다.
|
||||
관리 권한은 DB 사용자 테이블(`ncue_user`)의 `is_admin=true`로 부여됩니다.
|
||||
(`can_manage`는 호환을 위해 남겨두며, 서버는 `is_admin`을 기준으로 동작합니다.)
|
||||
|
||||
### (선택) 역프록시/분리 배포
|
||||
|
||||
@@ -189,10 +190,24 @@ sudo journalctl -u ncue-flask -n 200 --no-pager
|
||||
- 정적은 별도 호스팅 + API만 Flask: `index.html`의 `window.AUTH_CONFIG.apiBase`에 API 주소를 넣고,
|
||||
Flask에서는 `CORS_ORIGINS`로 허용 도메인을 지정하세요.
|
||||
|
||||
최초 로그인 사용자는 DB에 저장되지만 `can_manage=false`입니다. 관리 권한을 주려면:
|
||||
최초 로그인 사용자는 DB에 저장되며 기본값은 `is_admin=false`입니다. 관리자 승격 방법:
|
||||
|
||||
- (권장) 서버 `.env`에 `ADMIN_EMAILS`를 설정하면, 해당 이메일 사용자가 로그인할 때 `/api/auth/sync`에서 자동으로
|
||||
`is_admin=true`로 승격됩니다. (프론트로 노출되지 않음)
|
||||
|
||||
- API(서버 `.env`에 `CONFIG_TOKEN` 설정 후):
|
||||
|
||||
```bash
|
||||
curl -sS -X POST http://127.0.0.1:8023/api/admin/users/set_admin \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "X-Config-Token: $CONFIG_TOKEN" \
|
||||
-d '{"email":"me@example.com","isAdmin":true}'
|
||||
```
|
||||
|
||||
- 또는 SQL로 직접:
|
||||
|
||||
```sql
|
||||
update ncue_user set can_manage = true where email = 'me@example.com';
|
||||
update ncue_user set is_admin = true, can_manage = true where email = 'me@example.com';
|
||||
```
|
||||
|
||||
## 로그인(관리 기능 잠금)
|
||||
@@ -209,7 +224,7 @@ update ncue_user set can_manage = true where email = 'me@example.com';
|
||||
- `AUTH0_DOMAIN`
|
||||
- `AUTH0_CLIENT_ID`
|
||||
- `AUTH0_GOOGLE_CONNECTION` (예: `google-oauth2`)
|
||||
- `ADMIN_EMAILS` (예: `dosangyoon@gmail.com,dsyoon@ncue.net`)
|
||||
- (선택) `CONFIG_TOKEN` (관리자 승격 API 보호용)
|
||||
3. Auth0 Application 설정에서 아래 URL들을 등록
|
||||
- Allowed Callback URLs: `https://ncue.net/` 와 `https://ncue.net`
|
||||
- Allowed Logout URLs: `https://ncue.net/` 와 `https://ncue.net`
|
||||
|
||||
Reference in New Issue
Block a user