Initial commit - cleaned repository

This commit is contained in:
jungwoo choi
2025-09-28 20:41:57 +09:00
commit e3c28f796a
188 changed files with 28102 additions and 0 deletions

View File

@ -0,0 +1,142 @@
from motor.motor_asyncio import AsyncIOMotorClient
from beanie import init_beanie
import os
from models import OAuthApplication, AuthorizationCode, AccessToken, OAuthScope, UserConsent
async def init_db():
client = AsyncIOMotorClient(os.getenv("MONGODB_URL", "mongodb://mongodb:27017"))
database = client[os.getenv("OAUTH_DB_NAME", "oauth_db")]
await init_beanie(
database=database,
document_models=[
OAuthApplication,
AuthorizationCode,
AccessToken,
OAuthScope,
UserConsent
]
)
# 기본 스코프 생성
await create_default_scopes()
async def create_default_scopes():
"""기본 OAuth 스코프 생성"""
default_scopes = [
# 기본 인증 스코프
{
"name": "openid",
"display_name": "OpenID Connect",
"description": "기본 사용자 인증 정보",
"is_default": True,
"requires_approval": False
},
{
"name": "profile",
"display_name": "프로필 정보",
"description": "이름, 프로필 이미지, 기본 정보 접근",
"is_default": True,
"requires_approval": True
},
{
"name": "email",
"display_name": "이메일 주소",
"description": "이메일 주소 및 인증 상태 확인",
"is_default": False,
"requires_approval": True
},
{
"name": "picture",
"display_name": "프로필 사진",
"description": "프로필 사진 및 썸네일 접근",
"is_default": False,
"requires_approval": True
},
# 사용자 데이터 접근 스코프
{
"name": "user:read",
"display_name": "사용자 정보 읽기",
"description": "사용자 프로필 및 설정 읽기",
"is_default": False,
"requires_approval": True
},
{
"name": "user:write",
"display_name": "사용자 정보 수정",
"description": "사용자 프로필 및 설정 수정",
"is_default": False,
"requires_approval": True
},
# 애플리케이션 관리 스코프
{
"name": "app:read",
"display_name": "애플리케이션 정보 읽기",
"description": "OAuth 애플리케이션 정보 조회",
"is_default": False,
"requires_approval": True
},
{
"name": "app:write",
"display_name": "애플리케이션 관리",
"description": "OAuth 애플리케이션 생성 및 수정",
"is_default": False,
"requires_approval": True
},
# 조직/팀 관련 스코프
{
"name": "org:read",
"display_name": "조직 정보 읽기",
"description": "소속 조직 및 팀 정보 조회",
"is_default": False,
"requires_approval": True
},
{
"name": "org:write",
"display_name": "조직 관리",
"description": "조직 설정 및 멤버 관리",
"is_default": False,
"requires_approval": True
},
# API 접근 스코프
{
"name": "api:read",
"display_name": "API 데이터 읽기",
"description": "API를 통한 데이터 조회",
"is_default": False,
"requires_approval": True
},
{
"name": "api:write",
"display_name": "API 데이터 쓰기",
"description": "API를 통한 데이터 생성/수정/삭제",
"is_default": False,
"requires_approval": True
},
# 특수 스코프
{
"name": "offline_access",
"display_name": "오프라인 액세스",
"description": "리프레시 토큰 발급 (장기 액세스)",
"is_default": False,
"requires_approval": True
},
{
"name": "admin",
"display_name": "관리자 권한",
"description": "전체 시스템 관리 권한",
"is_default": False,
"requires_approval": True
}
]
for scope_data in default_scopes:
existing = await OAuthScope.find_one(OAuthScope.name == scope_data["name"])
if not existing:
scope = OAuthScope(**scope_data)
await scope.create()