mirror of
https://github.com/j93es/oauth-backend.git
synced 2026-06-04 10:21:52 +09:00
[Refactor] 리팩터링
This commit is contained in:
parent
afcfd7de87
commit
062552d3d8
12 changed files with 24 additions and 22 deletions
|
|
@ -1,67 +0,0 @@
|
|||
import os
|
||||
from urllib.parse import urlparse, parse_qs, urlencode, urlunparse
|
||||
from dotenv import load_dotenv
|
||||
|
||||
# .env 파일 로드
|
||||
load_dotenv(override=True)
|
||||
|
||||
class GoogleLoginHint:
|
||||
def __init__(self):
|
||||
self.google_id = os.getenv('GOOGLE_ID', '')
|
||||
if not self.google_id:
|
||||
print("⚠️ Warning: GOOGLE_ID not found in .env file")
|
||||
|
||||
async def request(self, flow):
|
||||
"""Google OAuth 요청을 가로채서 login_hint를 추가하거나 수정"""
|
||||
req = flow.request
|
||||
url = req.pretty_url
|
||||
|
||||
# Google OAuth 인증 URL인지 확인
|
||||
if self._is_google_oauth_url(url):
|
||||
print(f"🔍 Google OAuth URL detected: {url}")
|
||||
|
||||
# URL 파싱
|
||||
parsed_url = urlparse(url)
|
||||
query_params = parse_qs(parsed_url.query)
|
||||
|
||||
# login_hint 추가 또는 수정
|
||||
if self.google_id:
|
||||
query_params['login_hint'] = [self.google_id]
|
||||
print(f"✅ Added/Updated login_hint: {self.google_id}")
|
||||
|
||||
# 새로운 쿼리 스트링 생성
|
||||
new_query = urlencode(query_params, doseq=True)
|
||||
|
||||
# 새로운 URL 생성
|
||||
new_url = urlunparse((
|
||||
parsed_url.scheme,
|
||||
parsed_url.netloc,
|
||||
parsed_url.path,
|
||||
parsed_url.params,
|
||||
new_query,
|
||||
parsed_url.fragment
|
||||
))
|
||||
|
||||
# 요청 URL 수정 - URL과 호스트 모두 업데이트
|
||||
flow.request.url = new_url
|
||||
flow.request.pretty_url = new_url
|
||||
print(f"🔄 Modified URL: {new_url}")
|
||||
def _is_google_oauth_url(self, url):
|
||||
"""Google OAuth URL인지 확인"""
|
||||
google_oauth_domains = [
|
||||
'accounts.google.com',
|
||||
'oauth2.googleapis.com'
|
||||
]
|
||||
|
||||
parsed_url = urlparse(url)
|
||||
domain = parsed_url.netloc.lower()
|
||||
|
||||
# Google OAuth 도메인 확인
|
||||
for google_domain in google_oauth_domains:
|
||||
if google_domain in domain:
|
||||
# OAuth 관련 경로 확인
|
||||
path = parsed_url.path.lower()
|
||||
if any(oauth_path in path for oauth_path in ['/oauth2', '/auth', '/login']):
|
||||
return True
|
||||
|
||||
return False
|
||||
Loading…
Add table
Add a link
Reference in a new issue