def _login_social_account(request, account):
    user = account.user
    perform_login(request, user)
    if not user.is_active:
        ret = render_to_response("socialaccount/account_inactive.html", {}, context_instance=RequestContext(request))
    else:
        if request.is_ajax():
            ret = HttpResponse(
                simplejson.dumps({"status": "ok", "redirect": get_login_redirect_url(request)}),
                mimetype="application/json",
            )
        else:
            ret = HttpResponseRedirect(get_login_redirect_url(request))
    return ret
Exemple #2
0
def signup(request, **kwargs):
    if request.user.is_authenticated():
        return HttpResponseRedirect(reverse(connections))
    signup = request.session.get('socialaccount_signup')
    if not signup:
        return HttpResponseRedirect(reverse(login))
    form_class = kwargs.pop("form_class", SignupForm)
    template_name = kwargs.pop("template_name", 
                               'socialaccount/signup.html')
    data = signup['data']
    if request.method == "POST":
        form = form_class(request.POST)
        if form.is_valid():
            user = form.save(request=request)
            user.last_name = data.get('last_name', '')
            user.first_name = data.get('first_name', '')
            user.save()
            account = signup['account']
            account.user = user
            account.save()
            return complete_signup(request, user, 
                                   get_login_redirect_url(request))
    else:
        form = form_class(initial=data)
    dictionary = dict(site=Site.objects.get_current(),
                      account=signup['account'],
                      form=form)
    return render_to_response(template_name, 
                              dictionary, 
                              RequestContext(request))
 def dispatch(self, request):
     callback_url = reverse(self.adapter.provider_id + "_callback")
     client = self._get_client(request, callback_url)
     request.session['next'] = get_login_redirect_url(request)
     try:
         return client.get_redirect()
     except OAuthError:
         return render_authentication_error(request)
Exemple #4
0
def _login_social_account(request, account):
    user = account.user
    perform_login(request, user)
    if not user.is_active:
        ret = render_to_response("socialaccount/account_inactive.html", {}, context_instance=RequestContext(request))
    else:
        ret = HttpResponseRedirect(get_login_redirect_url(request))
    return ret
Exemple #5
0
 def dispatch(self, request):
     callback_url = reverse(self.adapter.provider_id + "_callback")
     client = self._get_client(request, callback_url)
     request.session['next'] = get_login_redirect_url(request)
     try:
         return client.get_redirect()
     except OAuthError:
         return render_authentication_error(request)
Exemple #6
0
def _login_social_account(request, account):
    user = account.user
    perform_login(request, user)
    if not user.is_active:
        ret = render_to_response('socialaccount/account_inactive.html', {},
                                 context_instance=RequestContext(request))
    else:
        ret = HttpResponseRedirect(get_login_redirect_url(request))
    return ret
Exemple #7
0
 def dispatch(self, request):
     app = self.adapter.get_app(self.request)
     client = self.get_client(request, app)
     # TODO: next can be passed along to callback url, session not required
     request.session['next'] = get_login_redirect_url(request)
     try:
         return HttpResponseRedirect(client.get_redirect_url())
     except OAuth2Error:
         return render_authentication_error(request)
Exemple #8
0
 def state_from_request(cls, request):
     state = dict(request.GET.iteritems())
     next = get_login_redirect_url(request, fallback=None)
     if next:
         state['next'] = next
     distinct_id = request.GET.get('distinct_id', None)
     if distinct_id:
         state['distinct_id'] = distinct_id
     return state
 def dispatch(self, request):
     app = self.adapter.get_app(self.request)
     client = self.get_client(request, app)
     # TODO: next can be passed along to callback url, session not required
     request.session['next'] = get_login_redirect_url(request)
     try:
         return HttpResponseRedirect(client.get_redirect_url())
     except OAuth2Error:
         return render_authentication_error(request)
Exemple #10
0
def oauth_redirect(request, consumer_key=None, secret_key=None,
    request_token_url=None, access_token_url=None, authorization_url=None,
    callback_url=None, parameters=None):
    """
    View to handle the OAuth based authentication redirect to the service provider
    """
    request.session['next'] = get_login_redirect_url(request)
    client = OAuthClient(request, consumer_key, secret_key,
        request_token_url, access_token_url, authorization_url, callback_url, parameters)
    return client.get_redirect()
Exemple #11
0
def _login_social_account(request, account):
    user = account.user
    perform_login(request, user)
    engine.check_achievement(user=request.user, key="facebook_login")
    if not user.is_active:
        ret = render_to_response(
            'socialaccount/account_inactive.html',
            {},
            context_instance=RequestContext(request))
    else:
        ret = HttpResponseRedirect(get_login_redirect_url(request))
    return ret
Exemple #12
0
def oauth_redirect(request, consumer_key=None, secret_key=None,
    request_token_url=None, access_token_url=None, authorization_url=None,
    callback_url=None, parameters=None):
    """
    View to handle the OAuth based authentication redirect to the service provider
    """
    request.session['next'] = get_login_redirect_url(request)
    client = OAuthClient(request, consumer_key, secret_key,
        request_token_url, access_token_url, authorization_url, callback_url, parameters)
    try:
        return client.get_redirect()
    except OAuthError, e:
        return render_authentication_error(request)
Exemple #13
0
def _process_signup(request, data, account):
    # If email is specified, check for duplicate and if so, no auto signup.
    auto_signup = app_settings.AUTO_SIGNUP
    email = data.get("email")
    if auto_signup:
        # Let's check if auto_signup is really possible...
        if email:
            if account_settings.UNIQUE_EMAIL:
                email_address = get_email_address(email)
                if email_address:
                    # Oops, another user already has this address.  We
                    # cannot simply connect this social account to the
                    # existing user. Reason is that the email adress may
                    # not be verified, meaning, the user may be a hacker
                    # that has added your email address to his account in
                    # the hope that you fall in his trap.  We cannot check
                    # on 'email_address.verified' either, because
                    # 'email_address' is not guaranteed to be verified.
                    auto_signup = False
                    # FIXME: We redirect to signup form -- user will
                    # see email address conflict only after posting
                    # whereas we detected it here already.
        elif account_settings.EMAIL_REQUIRED:
            # Nope, email is required and we don't have it yet...
            auto_signup = False
    if not auto_signup:
        request.session["socialaccount_signup"] = dict(data=data, account=account)
        ret = HttpResponseRedirect(reverse("socialaccount_signup"))
    else:
        # FIXME: There is some duplication of logic inhere
        # (create user, send email, in active etc..)
        username = generate_unique_username(data.get("username", email or "user"))
        u = User(
            username=username,
            email=email or "",
            last_name=data.get("last_name", ""),
            first_name=data.get("first_name", ""),
        )
        u.set_unusable_password()
        u.is_active = not account_settings.EMAIL_VERIFICATION
        u.save()
        account.user = u
        account.save()
        send_email_confirmation(u, request=request)
        ret = complete_signup(request, u, get_login_redirect_url(request))
    return ret
Exemple #14
0
 def state_from_request(cls, request):
     state = {}
     next = get_login_redirect_url(request, fallback=None)
     if next:
         state['next'] = next
     return state
Exemple #15
0
def complete_social_signup(request, user, account):
    success_url = get_login_redirect_url(request)
    if app_settings.AVATAR_SUPPORT:
        _copy_avatar(request, user, account)
    return complete_signup(request, user, success_url)
Exemple #16
0
 def state_from_request(cls, request):
     state = {}
     next = get_login_redirect_url(request, fallback=None)
     if next:
         state['next'] = next
     return state
Exemple #17
0
def complete_social_signup(request, user, account):
    success_url = get_login_redirect_url(request)
    if app_settings.AVATAR_SUPPORT:
        _copy_avatar(request, user, account)
    return complete_signup(request, user, success_url)