Flask 백엔드 추가(8023) 및 문서 업데이트
- Flask로 /api/* 및 정적 파일 서빙 - Postgres(ncue_user/ncue_app_config) 연동 및 Auth0 ID 토큰 검증 - README/requirements/.gitignore 업데이트 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
39
README.md
39
README.md
@@ -18,12 +18,17 @@ python3 -m http.server 8000
|
||||
|
||||
## 서버(Node) + PostgreSQL 사용자 저장
|
||||
|
||||
로그인 후 사용자 정보를 `ncue_user`에 저장하고(Upsert), `can_manage`로 관리 권한을 DB에서 제어하려면 Node 서버로 실행하세요.
|
||||
로그인 후 사용자 정보를 `ncue_user`에 저장하고(Upsert), 로그인/로그아웃 시간을 기록하며,
|
||||
`/api/config/auth`로 Auth0 설정을 공유하려면 백엔드 서버가 필요합니다.
|
||||
|
||||
1) 의존성 설치
|
||||
현재 백엔드는 **Python Flask(기본 포트 8023)** 로 제공합니다. (정적 HTML/JS는 그대로 사용 가능)
|
||||
|
||||
1) 의존성 설치(Python)
|
||||
|
||||
```bash
|
||||
npm install
|
||||
python3 -m venv .venv
|
||||
source .venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
2) 테이블 생성
|
||||
@@ -35,10 +40,16 @@ psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -f db/schema.sql
|
||||
3) 서버 실행
|
||||
|
||||
```bash
|
||||
npm start
|
||||
python flask_app.py
|
||||
```
|
||||
|
||||
### 권한 부여
|
||||
기본적으로 `.env`의 `ADMIN_EMAILS`에 포함된 이메일은 `can_manage=true`로 자동 승격됩니다.
|
||||
|
||||
### (선택) 역프록시/분리 배포
|
||||
|
||||
- Flask가 정적까지 함께 서빙: `http://ncue.net:8023`로 접속 (same-origin)
|
||||
- 정적은 별도 호스팅 + API만 Flask: `index.html`의 `window.AUTH_CONFIG.apiBase`에 API 주소를 넣고,
|
||||
Flask에서는 `CORS_ORIGINS`로 허용 도메인을 지정하세요.
|
||||
|
||||
최초 로그인 사용자는 DB에 저장되지만 `can_manage=false`입니다. 관리 권한을 주려면:
|
||||
|
||||
@@ -48,26 +59,22 @@ update ncue_user set can_manage = true where email = 'me@example.com';
|
||||
|
||||
## 로그인(관리 기능 잠금)
|
||||
|
||||
이 프로젝트는 **정적 사이트**에서 동작하도록, 관리 기능(추가/편집/삭제/가져오기)을 **로그인 후(허용 이메일)** 에만 활성화할 수 있습니다.
|
||||
이 프로젝트는 **정적 사이트**에서 동작하도록, 관리 기능(추가/편집/삭제/가져오기)을 **로그인 후(관리자 이메일)** 에만 활성화할 수 있습니다.
|
||||
|
||||
- **지원 방식**: Auth0 SPA SDK + Auth0 Universal Login
|
||||
- **구글/카카오/네이버**: Auth0 대시보드에서 Social/Custom OAuth 연결로 구성합니다.
|
||||
|
||||
설정 방법:
|
||||
설정 방법(.env):
|
||||
|
||||
1. Auth0에서 **Single Page Application** 생성
|
||||
2. `index.html`의 `window.AUTH_CONFIG`에 `domain`, `clientId` 입력
|
||||
2. `.env`에 아래 값을 설정
|
||||
- `AUTH0_DOMAIN`
|
||||
- `AUTH0_CLIENT_ID`
|
||||
- `AUTH0_GOOGLE_CONNECTION` (예: `google-oauth2`)
|
||||
- `ADMIN_EMAILS` (예: `dosangyoon@gmail.com,dsyoon@ncue.net`)
|
||||
3. Auth0 Application 설정에서 아래 URL들을 등록
|
||||
- Allowed Callback URLs: 사이트 주소 (예: `https://example.com/`)
|
||||
- Allowed Logout URLs: 사이트 주소 (예: `https://example.com/`)
|
||||
4. `allowedEmails`에 관리 허용 이메일 목록을 입력
|
||||
|
||||
팁:
|
||||
|
||||
- 서버에 바로 반영하기 전 테스트가 필요하면, 페이지 상단의 **로그인**을 누르면 뜨는 **로그인 설정 모달**에서
|
||||
`domain/clientId/allowedEmails`를 입력하면 브라우저에 저장되어 즉시 테스트할 수 있습니다.
|
||||
- Auth0에서 각 소셜 로그인 연결(connection)을 만들었다면, 모달의 connection 이름(예: `google-oauth2`, `kakao`, `naver`)을 입력하면
|
||||
상단에 **구글/카카오/네이버** 간편 로그인 버튼이 표시됩니다.
|
||||
|
||||
## 데이터 저장
|
||||
|
||||
|
||||
Reference in New Issue
Block a user