|
9 | 9 | from .utils import login_or_kakao_required |
10 | 10 | from moodico.users.models import UserProfile |
11 | 11 | from moodico.products.views import get_liked_products_color_info |
| 12 | +from django.contrib.auth.models import User |
| 13 | +import secrets |
12 | 14 |
|
13 | 15 | # Create your views here. |
14 | 16 | def signup_view(request): |
@@ -68,14 +70,34 @@ def kakao_callback(request: HttpRequest): |
68 | 70 | nickname = profile_data.get("properties", {}).get("nickname") |
69 | 71 | profile_image = profile_data.get("properties", {}).get("profile_image") |
70 | 72 |
|
71 | | - print("DEBUG nickname:", nickname) # 확인용 |
| 73 | + kakao_id = profile_data.get("id") |
| 74 | + email = profile_data.get("kakao_account", {}).get("email") # optional email field |
| 75 | + |
| 76 | + # Django User username must be unique, so prepend something like 'kakao_' |
| 77 | + username = f'kakao_{kakao_id}' |
| 78 | + |
| 79 | + # Get or create Django User |
| 80 | + user, created = User.objects.get_or_create( |
| 81 | + username=username, |
| 82 | + defaults={ |
| 83 | + 'email': email or '', |
| 84 | + 'first_name': nickname or '', |
| 85 | + 'password': secrets.token_urlsafe(12) |
| 86 | + } |
| 87 | + ) |
| 88 | + |
| 89 | + # create or update UserProfile for kakao users |
| 90 | + profile, _ = UserProfile.objects.get_or_create(user=user) |
| 91 | + |
| 92 | + # Log the user in |
| 93 | + login(request, user) |
72 | 94 |
|
73 | | - # 세션에 저장 |
74 | 95 | request.session["access_token"] = access_token |
75 | 96 | request.session["nickname"] = nickname |
76 | 97 | request.session["profile_image"] = profile_image |
77 | 98 |
|
78 | | - return redirect("main") # 로그인 페이지에서 프로필 보여주기 |
| 99 | + return redirect("main") |
| 100 | + |
79 | 101 |
|
80 | 102 |
|
81 | 103 | def kakao_profile(request): |
|
0 commit comments