예제 #1
0
파일: views.py 프로젝트: pwash1021/PMONEY
def openid_callback(request,
                    template='socialregistration/openid.html',
                    extra_context=dict()):
    """
    Catches the user when he's redirected back from the provider to our site
    """
    client = OpenID(
        request, 'http://%s%s' %
        (Site.objects.get_current().domain, reverse('openid_callback')),
        request.session.get('openid_provider'))

    if client.is_valid():
        user = authenticate(identity=request.GET.get('openid.claimed_id'))
        if user is None:
            request.session['socialregistration_user'] = User()
            request.session['socialregistration_profile'] = OpenIDProfile(
                identity=request.GET.get('openid.claimed_id'))
            return HttpResponseRedirect(reverse('socialregistration_setup'))
        else:
            login(request, user)
            return HttpResponseRedirect(_get_next(request))

    return render_to_response(template,
                              dict(),
                              context_instance=RequestContext(request))
예제 #2
0
def openid_callback(request, template='socialregistration/openid.html',
    extra_context=dict(), account_inactive_template='socialregistration/account_inactive.html',
    client_class = None):
    """
    Catches the user when he's redirected back from the provider to our site
    """
    client = client_class(
        request,
        'http%s://%s%s' % (
            _https(),
            Site.objects.get_current().domain,
            reverse('openid_callback')
        ),
        request.session.get('openid_provider')
    )

    if client.is_valid():
        identity = client.result.identity_url
        if request.user.is_authenticated():
            # Handling already logged in users just connecting their accounts
            try:
                profile = OpenIDProfile.objects.get(identity=identity)
            except OpenIDProfile.DoesNotExist: # There can only be one profile with the same identity
                profile = OpenIDProfile.objects.create(user=request.user,
                    identity=identity)
                _connect(user, profile, client)

            return HttpResponseRedirect(_get_next(request))

        user = authenticate(identity=identity)
        if user is None:
            request.session['socialregistration_user'] = User()
            request.session['socialregistration_profile'] = OpenIDProfile(
                identity=identity
            )
            # Client is not pickleable with the request on it
            client.request = None
            request.session['socialregistration_client'] = client
            return HttpResponseRedirect(reverse('socialregistration_setup'))

        if not user.is_active:
            return render_to_response(
                account_inactive_template,
                extra_context,
                context_instance=RequestContext(request)
            )

        _login(request, user, OpenIDProfile.objects.get(user = user), client)
        return HttpResponseRedirect(_get_next(request))

    return render_to_response(
        template,
        dict(),
        context_instance=RequestContext(request)
    )
예제 #3
0
    def authenticate(self, identity=None):
        try:
            openid_profile = OpenIDProfile.all()
            openid_profile.filter('identity = ', identity)
            #openid_profile.filter('site = ',Site.objects.get_current())
            openid_profile = openid_profile.fetch(1)
            auth_user = openid_profile[0].user
            return auth_user

            #OpenIDProfile.objects.get(
            #    identity=identity,
            #site=Site.objects.get_current()
            #).user
        except:
            return None
    def authenticate(self, identity=None):
        try:
            openid_profile = OpenIDProfile.all()
            openid_profile.filter('identity = ',identity)
            #openid_profile.filter('site = ',Site.objects.get_current())
            openid_profile = openid_profile.fetch(1)
            auth_user = openid_profile[0].user
            return auth_user

            #OpenIDProfile.objects.get(
            #    identity=identity,
                #site=Site.objects.get_current()
            #).user
        except:
            return None
        pass

    if client.is_valid():
        identity = client.result.identity_url
        if request.user.is_authenticated():
            # Handling already logged in users just connecting their accounts
            try:
                profile = OpenIDProfile.objects.get(identity=identity)
            except OpenIDProfile.DoesNotExist:  # There can only be one profile with the same identity
                profile = OpenIDProfile.objects.create(user=request.user,
                                                       identity=identity)

            return HttpResponseRedirect(_get_next(request))

        user = authenticate(identity=identity)
        if user is None:
            request.session['socialregistration_user'] = User()
            request.session['socialregistration_profile'] = OpenIDProfile(
                identity=identity)
            return HttpResponseRedirect(reverse('socialregistration_setup'))

        if not user.is_active:
            return render_to_response(account_inactive_template,
                                      extra_context,
                                      context_instance=RequestContext(request))

        login(request, user)
        return HttpResponseRedirect(_get_next(request))

    return HttpResponseRedirect(reverse('login'))
예제 #6
0
 def authenticate(self, identity=None):
     return OpenIDProfile.all().filter('identity =', identity).get()
def openid_callback(request, template='socialregistration/openid.html', extra_context=dict(), account_inactive_template='socialregistration/account_inactive.html'):
    """
    Catches the user when he's redirected back from the provider to our site
    """
    client = OpenID(
        request,
        'http%s://%s%s' % (
            _https(),
            Site.objects.get_current().domain,
            reverse('openid_callback')
        ),
        request.session.get('openid_provider')
    )
#    print 'hi'
#    print request.GET
    if client.is_valid():
        if request.user.is_authenticated():
            # Handling already logged in users just connecting their accounts
            try:
                profile = OpenIDProfile.all().filter('identity=',request.GET.get('openid.claimed_id')).fetch(1)[0]
            except IndexError: # There can only be one profile with the same identity
                profile = OpenIDProfile(
                    user = request.user,
                    identity=request.GET.get('openid.claimed_id'),
                    real_name=request.GET.get('openid.ax.value.fullname'),
                    username=request.GET.get('openid.ax.value.nickname'),
                    email=request.GET.get('openid.ax.value.email'),
                    pic_url=request.GET.get('openid.ax.value.image'),
                )
                profile.save()

            return HttpResponseRedirect(_get_next(request))

        user = authenticate(identity=request.GET.get('openid.claimed_id'))
        if user is None:
            user = User(username='******')
            request.session['social_suggested_username'] = request.GET.get('openid.ax.value.nickname')
            request.session['socialregistration_user'] = user
            if request.GET.get('openid.ext2.value.email'):
                request.session['social_suggested_username'] = request.GET.get('openid.ext2.value.email').split('@')[0]
                request.session['socialregistration_profile'] = OpenIDProfile(
                    identity=request.GET.get('openid.claimed_id'),
                    internal_username=request.session['social_suggested_username'],
                    email=request.GET.get('openid.ext2.value.email'),
                    pic_url= "http://www.gravatar.com/avatar/" + md5.md5(request.GET.get('openid.ext2.value.email')).hexdigest() ,
                )
            elif request.GET.get('openid.sreg.email'):
                request.session['social_suggested_username'] = request.GET.get('openid.sreg.nickname')
                request.session['socialregistration_profile'] = OpenIDProfile(
                    identity=request.GET.get('openid.claimed_id'),
                    real_name=request.GET.get('openid.sreg.fullname'),
                    internal_username=request.GET.get('openid.sreg.nickname'),
                    email=request.GET.get('openid.sreg.email'),
                    pic_url="http://www.gravatar.com/avatar/" + md5.md5(request.GET.get('openid.sreg.email')).hexdigest(),
                )
            elif request.GET.get('openid.ext1.value.email'):
                request.session['social_suggested_username'] = request.GET.get('openid.ext1.value.email').split('@')[0]
                request.session['socialregistration_profile'] = OpenIDProfile(
                    identity=request.GET.get('openid.claimed_id'),
                    internal_username=request.session['social_suggested_username'],
                    email=request.GET.get('openid.ext1.value.email'),
                    pic_url= "http://www.gravatar.com/avatar/" + md5.md5(request.GET.get('openid.ext1.value.email')).hexdigest() ,
                )
            else:
                request.session['socialregistration_profile'] = OpenIDProfile(
                    identity=request.GET.get('openid.claimed_id'),
                    real_name=request.GET.get('openid.ax.value.fullname'),
                    internal_username=request.GET.get('openid.ax.value.nickname'),
                    email=request.GET.get('openid.ax.value.email'),
                    pic_url=request.GET.get('openid.ax.value.image'),
                )
            for key, value in getattr(client, 'registration_data', {}).items():
                request.session['social_suggested_%s' % key] = value

            return HttpResponseRedirect(reverse('socialregistration_setup'))
        else:
            login(request, user)
            return HttpResponseRedirect(_get_next(request))

        if not user.is_active:
            return render_to_response(
                account_inactive_template,
                extra_context,
                context_instance=RequestContext(request)
            )

        login(request, user)
        return HttpResponseRedirect(_get_next(request))            
    
    return render_to_response(
        template,
        dict(),
        context_instance=RequestContext(request)
    )
def openid_callback(
        request,
        template='socialregistration/openid.html',
        extra_context=dict(),
        account_inactive_template='socialregistration/account_inactive.html'):
    """
    Catches the user when he's redirected back from the provider to our site
    """
    client = OpenID(
        request,
        'http%s://%s%s' % (_https(), Site.objects.get_current().domain,
                           reverse('openid_callback')),
        request.session.get('openid_provider'))

    if client.is_valid():
        identity = client.result.identity_url

        if 'socialregistration_connect_object' in request.session and request.session[
                'socialregistration_connect_object'] != None:
            # this exists so that social credentials can be attached to any arbitrary object using the same callbacks.
            # Under normal circumstances it will not be used. Put an object in request.session named 'socialregistration_connect_object' and it will be used instead.
            # After the connection is made it will redirect to request.session value 'socialregistration_connect_redirect' or settings.LOGIN_REDIRECT_URL or /
            try:
                # get the profile for this facebook UID and type of connected object
                profile = OpenIDProfile.objects.get(
                    identity=identity,
                    content_type=ContentType.objects.get_for_model(
                        request.session['socialregistration_connect_object'].
                        __class__),
                    object_id=request.
                    session['socialregistration_connect_object'].pk)
            except OpenIDProfile.DoesNotExist:
                OpenIDProfile.objects.create(
                    content_object=request.
                    session['socialregistration_connect_object'],
                    identity=identity)

            del request.session['socialregistration_connect_object']
        else:
            if request.user.is_authenticated():
                # Handling already logged in users just connecting their accounts
                try:
                    profile = OpenIDProfile.objects.get(
                        identity=identity,
                        content_type=ContentType.objects.get_for_model(User))
                except OpenIDProfile.DoesNotExist:  # There can only be one profile with the same identity
                    profile = OpenIDProfile.objects.create(
                        content_object=request.user, identity=identity)

                return HttpResponseRedirect(_get_next(request))

            user = authenticate(identity=identity)
            if user is None:
                request.session['socialregistration_user'] = User()
                request.session['socialregistration_profile'] = OpenIDProfile(
                    identity=identity)
                return HttpResponseRedirect(
                    reverse('socialregistration_setup'))

            if not user.is_active:
                return render_to_response(
                    account_inactive_template,
                    extra_context,
                    context_instance=RequestContext(request))

            login(request, user)
        return HttpResponseRedirect(_get_next(request))

    return render_to_response(template,
                              dict(),
                              context_instance=RequestContext(request))