def login_view(request): if request.method == 'POST': # POST 요청으로 넘겨받은 아이디/패스워드로 토큰을 받아온다. # data = { # 'username': request.POST['username'], # 'password': request.POST['password'] # } # url = 'http://localhost:8000/api/member/token-auth/' # response = requests.post(url, data=data) # response_json = response.json() print('login') login(request) return render(request, 'member/success.html') return render(request, 'member/login.html')
def login(request): """return the django.contrib.auth or the django-allauth login view""" if settings.USE_ALL_AUTH: # noinspection PyPackageRequirements from allauth.account.views import login return login(request) return LoginView.as_view()(request)
def signin(request, *args, **kwargs): next = request.REQUEST.get('next', reverse('edit_profile')) if request.user.is_authenticated(): return http.HttpResponseRedirect(next) kwargs.update({ 'form_class': SigninForm, 'success_url': next }) return login(request, *args, **kwargs)
def signin(request, *args, **kwargs): kwargs.update({ 'form_class': SigninForm, }) if request.user.is_authenticated(): return http.HttpResponseRedirect(home_url()) # override only in case if no 'next' url provided if not 'next' in request.POST: kwargs['success_url'] = home_url() return login(request, *args, **kwargs)
def login(request): """ relays stuff to and from allauth kinda dumb but it works ¯\_(ツ)_/¯ """ if request.method == "GET": user = request.user if user.is_authenticated: return redirect(reverse("index")) template = "results_base.min.html" results = get_login_results() context = { "results": results, } if request.is_ajax(): return render(request, template, context) return render_non_ajax(request, template, context) if request.method == "POST": template = "results_base.min.html" # request sent to allauth is always ajax so the output is json ajax = request.META["HTTP_X_REQUESTED_WITH"] request.META["HTTP_X_REQUESTED_WITH"] = "XMLHttpRequest" response = allauth.login(request) request.META["HTTP_X_REQUESTED_WITH"] = ajax context = {} user = request.user if response.status_code == 200: if user.is_authenticated: results = get_splash_results() context.update({ "results": results, }) return render(request, template, context) context.update( {"message": "You must confirm your email before logging in."}) results = get_login_results() context.update({ "results": results, }) context = get_form_errors(context, response) if request.is_ajax(): return render(request, template, context, status=404) return render_non_ajax(request, template, context) raise Http404()
def kakao_callback(request): print('1단계#########') try: print('2단계#########') app_rest_api_key = '844a2ef702bfa8f3a8f1e3f359924c37' redirect_uri = "http://127.0.0.1:8000/account/login/kakao/callback/" user_token = request.GET.get("code") print('81#########') # post request token_request = requests.get( f"https://kauth.kakao.com/oauth/token?grant_type=authorization_code&client_id={app_rest_api_key}&redirect_uri={redirect_uri}&code={user_token}" ) token_response_json = token_request.json() # print(token_response_json) error = token_response_json.get("error", None) print('90#########') # if there is an error from token_request if error is not None: raise KakaoException() access_token = token_response_json.get("access_token") request.session['access_token'] = access_token print('97#########') # post request profile_request = requests.post( "https://kapi.kakao.com/v2/user/me", headers={"Authorization": f"Bearer {access_token}"}, ) profile_json = profile_request.json() print('106#########') # parsing profile json # kakao_account = profile_json.get("kakao_account") # print(kakao_account) # email = kakao_account.get("email", None) kakao_id = profile_json['id'] # print('#103################') # print(email) if kakao_id is None: raise KakaoException( ) # 이메일은 필수제공 항목이 아니므로 수정 필요 (비즈니스 채널을 연결하면 검수 신청 후 필수 변환 가능) # profile = kakao_account.get("profile") # nickname = profile.get("nickname") # profile_image = profile.get("thumbnail_image_url") # 사이즈 'thumbnail_image_url' < 'profile_image_url' try: # print('4단계#########') # print('109##########') user_in_db = UserInfo.objects.get(user_id=kakao_id) login( request, user_in_db, backend="django.contrib.auth.backends.ModelBackend", ) except UserInfo.DoesNotExist: UserInfo.objects.create(user_id=kakao_id, ) UserInfo.set_unusable_password() UserInfo.save() # after user is saved to db, login the user login( request, UserInfo, backend="django.contrib.auth.backends.ModelBackend", ) return redirect("/home2") # 메인 페이지 except KakaoException: return redirect("/home1")
def custom_login(request, **kwargs): return login(request)
def form_valid(self, form): user = form.save() login(self.request, user) return redirect('home')