Esempio n. 1
0
    def authenticate(self, openid_key, request, provider, email=None):
        try:
            assoc = UserAssociation.objects.get(openid_key=openid_key)
            user = User.objects.get(pk=assoc.user.pk)
            if user.is_active:
                return user
            else:
                return
        except (UserAssociation.DoesNotExist, User.DoesNotExist):
            #fetch if openid provider provides any simple registration fields
            nickname = None
            if request.openid and request.openid.sreg:
                if email is None:
                    email = request.openid.sreg.get('email')
                nickname = request.openid.sreg.get('nickname')
            elif request.openid and request.openid.ax:
                if email is None:
                    email = request.openid.ax.get('email')
                nickname = request.openid.ax.get('nickname')
            if nickname is None:
                nickname = ''.join([
                    random.choice('abcdefghijklmnopqrstuvwxyz')
                    for i in xrange(10)
                ])
            if email is None:
                valid_username = False
                email = '%s@%s.%s.com' % (nickname, provider,
                                          settings.SITE_NAME)
            else:
                valid_username = True
            existing_users = User.objects.filter(username=nickname).count()
            if existing_users > 0:
                index = 0
                username = '******' % (nickname, index)
                while existing_users > 0:
                    username = '******' % (nickname, index)
                    existing_users = User.objects.filter(
                        username=username).count()
                    index += 1
                user = User.objects.create_user(username, email)
            else:
                user = User.objects.create_user(nickname, email)
            user.save()

            #create openid association
            assoc = UserAssociation()
            assoc.openid_key = openid_key
            assoc.user = user
            if email:
                assoc.email = email
            if nickname:
                assoc.nickname = nickname
            if valid_username:
                assoc.is_username_valid = True
            assoc.save()

            #Create AuthMeta
            auth_meta = AuthMeta(user=user, provider=provider)
            auth_meta.save()
            return user
Esempio n. 2
0
    def authenticate(self, openid_key, request, provider):
        try:
            assoc = UserAssociation.objects.get(openid_key=openid_key)
            if assoc.user.is_active:
                return assoc.user
            else:
                return
        except UserAssociation.DoesNotExist:
            #fetch if openid provider provides any simple registration fields
            nickname = None
            email = None
            if request.openid and request.openid.sreg:
                email = request.openid.sreg.get('email')
                nickname = request.openid.sreg.get('nickname')
            elif request.openid and request.openid.ax:
                if provider in ('Google', 'Yahoo'):
                    email = request.openid.ax.get('http://axschema.org/contact/email')
                    email = email.pop()
                else:
                    email = request.openid.ax.get('email')                      
                    nickname = request.openid.ax.get('nickname')

            if nickname is None :
                if email:
                    nickname = email.split('@')[0]
                else:
                    nickname =  ''.join([random.choice('abcdefghijklmnopqrstuvwxyz') for i in xrange(10)])
            if email is None :
                valid_username = False
                email =  None #'*****@*****.**'%(nickname)
            else:
                valid_username = True
            name_count = User.objects.filter(username__startswith = nickname).count()

            if name_count:
                username = '******'%(nickname, name_count + 1)
                user = User.objects.create_user(username,email or '')
            else:
                user = User.objects.create_user(nickname,email or '')
            user.save()

            #create openid association
            assoc = UserAssociation()
            assoc.openid_key = openid_key
            assoc.user = user#AuthUser.objects.get(pk=user.pk)
            if email:
                assoc.email = email
            if nickname:
                assoc.nickname = nickname
            if valid_username:
                assoc.is_username_valid = True
            assoc.save()

            #Create AuthMeta
            auth_meta = AuthMeta(user = user, provider = provider)
            auth_meta.save()
            return user
Esempio n. 3
0
    def authenticate(self, openid_key, request, provider, user=None):
        try:
            assoc = UserAssociation.objects.get(openid_key = openid_key)
            return assoc.user
        except UserAssociation.DoesNotExist:
            #fetch if openid provider provides any simple registration fields
            nickname = None
            email = None
            if request.openid and request.openid.sreg:
                email = request.openid.sreg.get('email')
                nickname = request.openid.sreg.get('nickname')
            elif request.openid and request.openid.ax:
                email = request.openid.ax.get('http://axschema.org/contact/email')[0]
                try:
                      nickname = request.openid.ax.get('nickname')#should be replaced by correct schema
                except:
                      pass
            if nickname is None :
                nickname =  ''.join([random.choice('abcdefghijklmnopqrstuvwxyz') for i in xrange(10)])
            
            name_count = User.objects.filter(username__startswith = nickname).count()
            if name_count:
                username = '******'.format(nickname, name_count + 1)
            else:
                username = '******'.format(nickname)
                
            if email is None :
                valid_username = False
                email =  "{0}@socialauth".format(username)
            else:
                valid_username = True

            if not user:
                user = User.objects.create_user(username, email or '')
                user.save()
    
            #create openid association
            assoc = UserAssociation()
            assoc.openid_key = openid_key
            assoc.user = user
            if email:
                assoc.email = email
            if nickname:
                assoc.nickname = nickname
            if valid_username:
                assoc.is_username_valid = True
            assoc.save()
            
            #Create AuthMeta
            auth_meta = AuthMeta(user=user, provider=provider, provider_model='OpenidProfile', provider_id=assoc.pk)
            auth_meta.save()
            return user
Esempio n. 4
0
    def authenticate(self, openid_key, request, provider):
        try:
            assoc = UserAssociation.objects.get(openid_key=openid_key)
            return assoc.user
        except UserAssociation.DoesNotExist:
            #fetch if openid provider provides any simple registration fields
            nickname = None
            email = None
            print "dfsdfsdfsdfsfsdfsdf"
            if request.openid and request.openid.sreg:
                email = request.openid.sreg.get('email')
                nickname = request.openid.sreg.get('nickname')
            elif request.openid and request.openid.ax:
                email = request.openid.ax.__dict__.get('data').values()[0][0]
                nickname = email.split('@')[
                    0]  #request.openid.ax.get('nickname')
            if nickname is None:
                nickname = ''.join([
                    random.choice('abcdefghijklmnopqrstuvwxyz')
                    for i in xrange(10)
                ])
            if email is None:
                valid_username = False
                email = '%s@%s.%s.com' % (nickname, provider,
                                          settings.SITE_NAME)
            else:
                valid_username = True
            name_count = User.objects.filter(
                username__startswith=nickname).count()
            if name_count:
                username = '******' % (nickname, name_count + 1)
                user = User.objects.create_user(username, email)
            else:
                user = User.objects.create_user(nickname, email)
            user.save()

            #create openid association
            assoc = UserAssociation()
            assoc.openid_key = openid_key
            assoc.user = user
            if email:
                assoc.email = email
            if nickname:
                assoc.nickname = nickname
            if valid_username:
                assoc.is_username_valid = True
            assoc.save()

            #Create AuthMeta
            auth_meta = AuthMeta(user=user, provider=provider)
            auth_meta.save()
            return user
Esempio n. 5
0
    def authenticate(self, openid_key, request, provider):
        try:
            assoc = UserAssociation.objects.get(openid_key=openid_key)
            return assoc.user
        except UserAssociation.DoesNotExist:
            # fetch if openid provider provides any simple registration fields
            nickname = None
            email = None
            if request.openid and request.openid.sreg:
                email = request.openid.sreg.get("email")
                nickname = request.openid.sreg.get("nickname")
            elif request.openid and request.openid.ax:
                email = request.openid.ax.get("http://axschema.org/contact/email")[0]
                try:
                    nickname = request.openid.ax.get("nickname")  # should be replaced by correct schema
                except:
                    pass
            if nickname is None:
                nickname = "".join([random.choice("abcdefghijklmnopqrstuvwxyz") for i in xrange(10)])
            if email is None:
                valid_username = False
                email = None  #'*****@*****.**'%(nickname)
            else:
                valid_username = True
            name_count = User.objects.filter(username__startswith=nickname).count()
            if name_count:
                username = "******" % (nickname, name_count + 1)
            try:
                user = User.objects.get(email=email)
            except:
                user = User.objects.create_user(nickname, email or "")
                user.save()

            # create openid association
            assoc = UserAssociation()
            assoc.openid_key = openid_key
            assoc.user = user
            if email:
                assoc.email = email
            if nickname:
                assoc.nickname = nickname
            if valid_username:
                assoc.is_username_valid = True
            assoc.save()

            # Create AuthMeta
            auth_meta = AuthMeta(user=user, provider=provider)
            auth_meta.save()
            return user
Esempio n. 6
0
 def authenticate(self, openid_key, request, provider):
     try:
         assoc = UserAssociation.objects.get(openid_key = openid_key)
         return assoc.user
     except UserAssociation.DoesNotExist:
         #fetch if openid provider provides any simple registration fields
         nickname = None
         email = None
         print "dfsdfsdfsdfsfsdfsdf"
         if request.openid and request.openid.sreg:
             email = request.openid.sreg.get('email')
             nickname = request.openid.sreg.get('nickname')
         elif request.openid and request.openid.ax:
             email = request.openid.ax.__dict__.get('data').values()[0][0]
             nickname = email.split('@')[0] #request.openid.ax.get('nickname')
         if nickname is None :
             nickname =  ''.join([random.choice('abcdefghijklmnopqrstuvwxyz') for i in xrange(10)])
         if email is None :
             valid_username = False
             email =  '%s@%s.%s.com'%(nickname, provider, settings.SITE_NAME)
         else:
             valid_username = True
         name_count = User.objects.filter(username__startswith = nickname).count()
         if name_count:
             username = '******'%(nickname, name_count + 1)
             user = User.objects.create_user(username,email)
         else:
             user = User.objects.create_user(nickname,email)
         user.save()
 
         #create openid association
         assoc = UserAssociation()
         assoc.openid_key = openid_key
         assoc.user = user
         if email:
             assoc.email = email
         if nickname:
             assoc.nickname = nickname
         if valid_username:
             assoc.is_username_valid = True
         assoc.save()
         
         #Create AuthMeta
         auth_meta = AuthMeta(user = user, provider = provider)
         auth_meta.save()
         return user
 def authenticate(self, openid_key, request, provider):
     try:
         assoc = UserAssociation.objects.get(openid_key = openid_key)
         return assoc.user
     except UserAssociation.DoesNotExist:
         #fetch if openid provider provides any simple registration fields
         nickname = None
         email = None
         # print 'request.openid: %s' % request.openid
         # print 'request.openid.sreg: %s' % request.openid.sreg
         if request.openid and request.openid.sreg:
             email = request.openid.sreg.get('email')
             nickname = request.openid.sreg.get('nickname')
         if nickname is None :
             nickname =  ''.join([random.choice('abcdefghijklmnopqrstuvwxyz') for i in xrange(10)])
         if email is None :
             email =  '%s@%s.%s.com'%(nickname, provider, settings.SITE_NAME)
         name_count = User.objects.filter(username__startswith = nickname).count()
         # print 'nickname: %s, email: %s, name_count: %s' % (nickname, email, name_count)
         if name_count:
             username = '******'%(nickname, name_count + 1)
             user = User.objects.create_user(username,email)
         else:
             user = User.objects.create_user(nickname,email)
         user.save()
 
         #create openid association
         assoc = UserAssociation()
         assoc.openid_key = openid_key
         assoc.user = user
         if email:
             assoc.email = email
         if nickname:
             assoc.nickname = nickname
         assoc.save()
         
         #Create AuthMeta
         auth_meta = AuthMeta(user = user, provider = provider)
         auth_meta.save()
         
         return user
    def authenticate(self, openid_key, request, provider, user=None):
        try:
            assoc = UserAssociation.objects.get(openid_key=openid_key)
            return assoc.user
        except UserAssociation.DoesNotExist:
            # fetch if openid provider provides any simple registration fields
            nickname = None
            email = None
            first_name = None
            last_name = None
            if request.openid and request.openid.sreg:
                email = request.openid.sreg.get("email")
                nickname = request.openid.sreg.get("nickname")
                first_name, last_name = request.openid.sreg.get("fullname", "").split(" ", 1)
            elif request.openid and request.openid.ax:
                email = request.openid.ax.get("http://axschema.org/contact/email")[0]
                try:
                    nickname = request.openid.ax.get("nickname")  # should be replaced by correct schema
                except:
                    pass
                try:
                    first_name = request.openid.ax.get("http://axschema.org/namePerson/first").pop()
                except:
                    pass
                try:
                    last_name = request.openid.ax.get("http://axschema.org/namePerson/last").pop()
                except:
                    pass
            if nickname is None:
                nickname = "".join([random.choice("abcdefghijklmnopqrstuvwxyz") for i in xrange(10)])

            name_count = User.objects.filter(username__startswith=nickname).count()
            if name_count:
                username = "******" % (nickname, name_count + 1)
            else:
                username = "******" % (nickname)

            if email is None:
                valid_username = False
                email = "%s@socialauth" % (username)
            else:
                valid_username = True

            if not user:
                user = User.objects.create_user(username, email or "")
                if first_name is not None:
                    user.first_name = first_name
                if last_name is not None:
                    user.last_name = last_name
                user.save()

            # create openid association
            assoc = UserAssociation()
            assoc.openid_key = openid_key
            assoc.user = user
            if email:
                assoc.email = email
            if nickname:
                assoc.nickname = nickname
            if valid_username:
                assoc.is_username_valid = True
            assoc.save()

            # Create AuthMeta
            # auth_meta =
            #             AuthMeta(user=user,
            #                        provider=provider,
            #                        provider_model='OpenidProfile',
            #                        provider_id=assoc.pk)
            auth_meta = AuthMeta(user=user, provider=provider)
            auth_meta.save()
            return user
Esempio n. 9
0
    def authenticate(self, openid_key, request, provider, user=None):
        try:
            assoc = UserAssociation.objects.get(openid_key=openid_key)
            return assoc.user
        except UserAssociation.DoesNotExist:
            #fetch if openid provider provides any simple registration fields
            nickname = None
            email = None
            firstname = None
            lastname = None
            
            if request.openid and request.openid.sreg:
                email = request.openid.sreg.get('email')
                nickname = request.openid.sreg.get('nickname')
                firstname, lastname = (request.openid.sreg
                                       .get('fullname', ' ')
                                       .split(' ', 1))
            elif request.openid and request.openid.ax:
                email = \
                    (request.openid.ax
                     .getSingle('http://axschema.org/contact/email'))
                if 'google' in provider:
                    ax_schema = OPENID_AX_PROVIDER_MAP['Google']
                    firstname = (request.openid.ax
                                 .getSingle(ax_schema['firstname']))
                    lastname = (request.openid.ax
                                .getSingle(ax_schema['lastname']))
                    nickname = email.split('@')[0]
                else:
                    ax_schema = OPENID_AX_PROVIDER_MAP['Default']
                    try:
                         #should be replaced by correct schema
                        nickname = (request.openid.ax
                                    .getSingle(ax_schema['nickname']))
                        (firstname, 
                            lastname) = (request.openid.ax
                                         .getSingle(ax_schema['fullname'])
                                         .split(' ', 1))
                    except:
                        pass

            if nickname is None :
                nickname =  ''.join(
                                    [random
                                     .choice('abcdefghijklmnopqrstuvwxyz')
                                     for i in xrange(10)])
            
            name_count = (User.objects
                          .filter(username__startswith=nickname)
                          .count())
            if name_count:
                username = '******' % (nickname, name_count + 1)
            else:
                username = '******' % (nickname)
                
            if email is None :
                valid_username = False
                email =  "%s@socialauth" % (username)
            else:
                valid_username = True
            
            if not user:
                user = User.objects.create_user(username, email)
                
            user.first_name = firstname
            user.last_name = lastname
            user.save()
    
            #create openid association
            assoc = UserAssociation()
            assoc.openid_key = openid_key
            assoc.user = user
            if email:
                assoc.email = email
            if nickname:
                assoc.nickname = nickname
            if valid_username:
                assoc.is_username_valid = True
            assoc.save()
            
            #Create AuthMeta
            # auth_meta = 
            #             AuthMeta(user=user, 
            #                        provider=provider, 
            #                        provider_model='OpenidProfile', 
            #                        provider_id=assoc.pk)
            auth_meta = AuthMeta(user=user, provider=provider)
            auth_meta.save()
            return user
Esempio n. 10
0
    def authenticate(self, openid_key, request, provider, user=None):
        try:
            assoc = UserAssociation.objects.get(openid_key=openid_key)
            return assoc.user
        except UserAssociation.DoesNotExist:
            #fetch if openid provider provides any simple registration fields
            nickname = None
            email = None
            firstname = None
            lastname = None

            if request.openid and request.openid.sreg:
                email = request.openid.sreg.get('email')
                nickname = request.openid.sreg.get('nickname')
                firstname, lastname = (request.openid.sreg.get(
                    'fullname', ' ').split(' ', 1))
            elif request.openid and request.openid.ax:
                email = \
                    (request.openid.ax
                     .getSingle('http://axschema.org/contact/email'))
                if 'google' in provider:
                    ax_schema = OPENID_AX_PROVIDER_MAP['Google']
                    firstname = (request.openid.ax.getSingle(
                        ax_schema['firstname']))
                    lastname = (request.openid.ax.getSingle(
                        ax_schema['lastname']))
                    nickname = email.split('@')[0]
                else:
                    ax_schema = OPENID_AX_PROVIDER_MAP['Default']
                    try:
                        #should be replaced by correct schema
                        nickname = (request.openid.ax.getSingle(
                            ax_schema['nickname']))
                        (firstname, lastname) = (request.openid.ax.getSingle(
                            ax_schema['fullname']).split(' ', 1))
                    except:
                        pass

            if nickname is None:
                nickname = ''.join([
                    random.choice('abcdefghijklmnopqrstuvwxyz')
                    for i in xrange(10)
                ])

            name_count = (User.objects.filter(
                username__startswith=nickname).count())
            if name_count:
                username = '******' % (nickname, name_count + 1)
            else:
                username = '******' % (nickname)

            if email is None:
                valid_username = False
                email = "%s@socialauth" % (username)
            else:
                valid_username = True

            if not user:
                user = User.objects.create_user(username, email)

            user.first_name = firstname
            user.last_name = lastname
            user.save()

            #create openid association
            assoc = UserAssociation()
            assoc.openid_key = openid_key
            assoc.user = user
            if email:
                assoc.email = email
            if nickname:
                assoc.nickname = nickname
            if valid_username:
                assoc.is_username_valid = True
            assoc.save()

            #Create AuthMeta
            # auth_meta =
            #             AuthMeta(user=user,
            #                        provider=provider,
            #                        provider_model='OpenidProfile',
            #                        provider_id=assoc.pk)
            auth_meta = AuthMeta(user=user, provider=provider)
            auth_meta.save()
            return user
Esempio n. 11
0
    def authenticate(self, openid_key, request, provider):
        try:
            assoc = UserAssociation.objects.get(openid_key=openid_key)
            if assoc.user.is_active:
                return assoc.user
            else:
                return
        except UserAssociation.DoesNotExist:
            #fetch if openid provider provides any simple registration fields
            nickname = None
            email = None
            if request.openid and request.openid.sreg:
                email = request.openid.sreg.get('email')
                nickname = request.openid.sreg.get('nickname')
            elif request.openid and request.openid.ax:
                if provider in ('Google', 'Yahoo'):
                    email = request.openid.ax.get(
                        'http://axschema.org/contact/email')
                    email = email.pop()
                else:
                    try:
                        email = request.openid.ax.get('email')
                    except KeyError:
                        pass

                    try:
                        nickname = request.openid.ax.get('nickname')
                    except KeyError:
                        pass

            if nickname is None:
                if email:
                    nickname = email.split('@')[0]
                else:
                    nickname = ''.join([
                        random.choice('abcdefghijklmnopqrstuvwxyz')
                        for i in xrange(10)
                    ])
            if email is None:
                valid_username = False
                email = None  #'*****@*****.**'%(nickname)
            else:
                valid_username = True
            name_count = AuthUser.objects.filter(
                username__startswith=nickname).count()

            if name_count:
                username = '******' % (nickname, name_count + 1)
                user = User.objects.create_user(username, email or '')
            else:
                user = User.objects.create_user(nickname, email or '')
            user.save()

            #create openid association
            assoc = UserAssociation()
            assoc.openid_key = openid_key
            assoc.user = user  #AuthUser.objects.get(pk=user.pk)
            if email:
                assoc.email = email
            if nickname:
                assoc.nickname = nickname
            if valid_username:
                assoc.is_username_valid = True
            assoc.save()

            #Create AuthMeta
            auth_meta = AuthMeta(user=user, provider=provider)
            auth_meta.save()
            return user
Esempio n. 12
0
    def authenticate(self, openid_key, request, provider, user=None):
        logger.info("request.GET: %s", request.GET)
        logger.info("request.POST: %s", request.POST)
        logger.info("------------------------------------------ Authenticating against OpenID")
        logger.info("openid_key: %s", openid_key)
        logger.info("provider: %s", provider)
        try:
            assoc = OpenidProfile.objects.get(openid_key=openid_key)
            logger.info("Found a OpenidProfile")
            logger.info("assoc.openid_key: %s", assoc.openid_key)
            logger.info("assoc.user.username: %s", assoc.user.username)
            logger.info("assoc.nickname: %s", assoc.nickname)
            logger.info("assoc.is_username_valid: %s", assoc.is_username_valid)
            logger.info("assoc.email: %s", assoc.email)
            if assoc.email.endswith("@socialauth") and request.openid.ax is not None:
                assoc.email = request.openid.ax.getSingle("http://axschema.org/contact/email", None)
                logger.info("Updating existing OpenidProfile with correct openid email")
                assoc.save()
            return assoc.user
        except OpenidProfile.DoesNotExist:
            # fetch if openid provider provides any simple registration fields
            logger.info("Creating a OpenidProfile")
            nickname = None
            email = None
            if request.openid and request.openid.sreg:
                email = request.openid.sreg.get("email")
                nickname = request.openid.sreg.get("nickname")
            elif request.openid and request.openid.ax:
                email = request.openid.ax.getSingle("http://axschema.org/contact/email", None)

            if nickname is None:
                nickname = "".join([random.choice("abcdefghijklmnopqrstuvwxyz") for i in xrange(10)])

            name_count = User.objects.filter(username__startswith=nickname).count()
            if name_count:
                username = "******".format(nickname, name_count + 1)
            else:
                username = "******".format(nickname)

            if email is None:
                valid_username = False
                email = "{0}@socialauth".format(username)
            else:
                valid_username = True
            if not user:
                user = User.objects.create_user(username, email or "")
                user.set_unusable_password()
                user.save()

            # create openid association
            assoc = OpenidProfile()
            assoc.openid_key = openid_key
            assoc.user = user
            if provider == "Google":
                assoc.needs_google_crossdomain_merge = True
            if email:
                assoc.email = email
            if nickname:
                assoc.nickname = nickname
            if valid_username:
                assoc.is_username_valid = True
            assoc.save()

            logger.info("assoc.openid_key: %s", assoc.openid_key)
            logger.info("assoc.user.username: %s", assoc.user.username)
            logger.info("assoc.nickname: %s", assoc.nickname)
            logger.info("assoc.is_username_valid: %s", assoc.is_username_valid)
            logger.info("assoc.email: %s", assoc.email)

            # Create AuthMeta
            auth_meta = AuthMeta(user=user, provider=provider, provider_model="OpenidProfile", provider_id=assoc.pk)
            auth_meta.save()
            return user
Esempio n. 13
0
def openid_done(request, provider=None):
    """
    When the request reaches here, the user has completed the Openid
    authentication flow. He has authorised us to login via Openid, so
    request.openid is populated.
    After coming here, we want to check if we are seeing this openid first time.
    If we are, we will create a new Django user for this Openid, else login the
    existing openid.
    """
    if not provider:
        provider = request.session.get("openid_provider", "")
    if request.openid:
        email = None
        nickname = None
        password = None
        # fetch if openid provider provides any simple registration fields
        if request.openid.sreg:
            if request.openid.sreg.has_key("email"):
                email = request.openid.sreg["email"]
            if request.openid.sreg.has_key("nickname"):
                nickname = request.openid.sreg["nickname"]
        # check for already existing associations
        openid_key = escape(str(request.openid))
        userassociation = UserAssociation.objects.filter(openid_key=openid_key)
        if userassociation:
            user = userassociation[0].user
            nickname = user.username
            email = user.email
        else:
            if nickname is None:
                nickname = "".join([random.choice("abcdefghijklmnopqrstuvwxyz") for i in xrange(10)])
            if email is None:
                from django.conf import settings

                email = "%s@%s.%s.com" % (nickname, settings.SITE_NAME, provider)
            user = User.objects.create_user(nickname, email)
            user.save()

            # create openid association
            assoc = UserAssociation()
            assoc.openid_key = openid_key
            assoc.user = user
            assoc.save()

            # Create AuthMeta
            auth_meta = AuthMeta(user=user, provider=provider)
            auth_meta.save()

        # authenticate and login
        user = authenticate(openid_key=openid_key)
        if user:
            login(request, user)
        if "openid_next" in request.session:

            openid_next = request.session.get("openid_next")

            if len(openid_next.strip()) > 0:

                return HttpResponseRedirect(openid_next)
        redirect_url = reverse("socialauth_signin_complete")
        return HttpResponseRedirect(redirect_url)