Example #1
0
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')
Example #2
0
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)
Example #3
0
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)
Example #4
0
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)
Example #5
0
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)
Example #6
0
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()
Example #7
0
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")
Example #8
0
def custom_login(request, **kwargs):
    return login(request)
Example #9
0
 def form_valid(self, form):
     user = form.save()
     login(self.request, user)
     return redirect('home')