8
8
from dj_rest_auth .utils import jwt_encode
9
9
from dj_rest_auth .views import LoginView
10
10
from django .conf import settings
11
+ from django .contrib .auth import login
11
12
from django .core .cache import cache
12
13
from django .core .files .base import ContentFile
14
+ from django .middleware .csrf import get_token
13
15
from django .utils import timezone
14
16
from drf_spectacular .utils import extend_schema , inline_serializer
15
17
from rest_framework import permissions , serializers , status
@@ -214,7 +216,7 @@ def get_profile(self, access_token: str, provider_info: dict[str, Any]) -> reque
214
216
},
215
217
)
216
218
217
- def login_process_user (self , profile_res_data : dict [str , Any ], provider_info : dict [str , Any ]) -> Response :
219
+ def login_process_user (self , request : Request , profile_res_data : dict [str , Any ], provider_info : dict [str , Any ]) -> Response :
218
220
# 각 provider의 프로필 데이터 처리 로직
219
221
email = profile_res_data .get (provider_info ["email_field" ])
220
222
nickname = profile_res_data .get (provider_info ["nickname_field" ])
@@ -239,6 +241,9 @@ def login_process_user(self, profile_res_data: dict[str, Any], provider_info: di
239
241
except Account .DoesNotExist :
240
242
user = self .create_user (email = email , nickname = nickname , profile_img_url = profile_img_url , provider_info = provider_info ) # type: ignore
241
243
244
+ # 로그인해서 세션획득
245
+ login (request , user )
246
+
242
247
access_token , refresh_token = jwt_encode (user )
243
248
response_data = {
244
249
"access" : str (access_token ),
@@ -248,7 +253,10 @@ def login_process_user(self, profile_res_data: dict[str, Any], provider_info: di
248
253
}
249
254
if user .profile_img :
250
255
response_data ["profile_image" ] = user .profile_img .url
251
- return Response (response_data , status = status .HTTP_200_OK )
256
+ # set_cookie csrftoken
257
+ response = Response (response_data , status = status .HTTP_200_OK )
258
+ response .set_cookie ("csrftoken" , get_token (request ))
259
+ return response
252
260
253
261
def create_user (
254
262
self , email : str , nickname : str , profile_img_url : Optional [str ], provider_info : dict [str , Any ]
0 commit comments