v0.0.29 | 사이트 설정(SiteSettings) 모델 및 API 추가
All checks were successful
Build And Test / build-and-push (push) Successful in 2m1s

- Google 로그인 활성화 여부 관리 기능
- 관리자 전용 설정 수정 API
- 싱글톤 패턴으로 구현

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-18 23:39:23 +09:00
parent 96615e4b94
commit 03f7ad94a9
5 changed files with 138 additions and 2 deletions

View File

@ -5,6 +5,48 @@ from django.conf import settings # ✅ 추가
from cryptography.fernet import Fernet
import base64, hashlib # ✅ SECRET_KEY 암호화 키 생성용
# ============================================
# 사이트 설정 (싱글톤)
# ============================================
class SiteSettings(models.Model):
"""
사이트 전역 설정 (싱글톤 패턴)
- Google 로그인 활성화 여부 등 관리
"""
# 소셜 로그인 설정
google_login_enabled = models.BooleanField(default=True, verbose_name="Google 로그인 활성화")
# 향후 확장 가능한 설정들
# kakao_login_enabled = models.BooleanField(default=False, verbose_name="카카오 로그인 활성화")
# naver_login_enabled = models.BooleanField(default=False, verbose_name="네이버 로그인 활성화")
# registration_enabled = models.BooleanField(default=True, verbose_name="회원가입 허용")
updated_at = models.DateTimeField(auto_now=True)
class Meta:
verbose_name = "사이트 설정"
verbose_name_plural = "사이트 설정"
def save(self, *args, **kwargs):
# 싱글톤 패턴: 항상 id=1로 저장
self.pk = 1
super().save(*args, **kwargs)
def delete(self, *args, **kwargs):
# 삭제 방지
pass
@classmethod
def get_settings(cls):
"""설정 인스턴스 가져오기 (없으면 생성)"""
obj, created = cls.objects.get_or_create(pk=1)
return obj
def __str__(self):
return "사이트 설정"
class CustomUserManager(BaseUserManager):
def create_user(self, email, password=None, **extra_fields):
if not email: