Esempio n. 1
0
File: views.py Progetto: snow/pyfyd
    def get(self, request):
        """
        Update access key and other info to user account
        """
        # get self.access_token and self.uid available
        super(AuthorizeReturnV, self).get(request)

        DoubanAccount.link_external(request.user, key=self.access_token.key, secret=self.access_token.secret)
Esempio n. 2
0
    def get(self, request):
         # get self.access_token and self.uid available
        super(AuthenticateReturnV, self).get(request)
        
        account = DoubanAccount.get_from_token(self.access_token.key, 
                                               self.access_token.secret, 
                                               self.uid)
        try:
            linked = DoubanAccount.get_linked(account)
        except DoubanAccount.DoesNotExist:
            request.session.update({
                'account_to_link': account,
                'username': account.username,
                'fullname': account.fullname,
            })
            
            return HttpResponseRedirect('/accounts/signup/')
        else:
            user = authenticate(account=linked, CID=ThirdpartyAuthBackend.CID)
            
            if user:
                login(request, user)
                return HttpResponseRedirect(self.get_success_uri())
            else:
                # @todo: what else may happen here?
                raise Exception('auth failed')
        
    
#class DoubanAuthorizeStartV(pdv.AuthStartV):
#    '''super handles every thing'''    
#    callback = '/thirdparty/douban/authorize_return/'
#    
#class DoubanAuthorizeReturnV(pdv.AuthorizeReturnV):
#    '''super handles every thing'''
#    success_uri = '/thirdparty/'
#    
#    def get(self, request, *args, **kwargs):
#        super(DoubanAuthorizeReturnV, self).get(request, *args, **kwargs)
#        
#        return HttpResponseRedirect(self.success_uri)    
#    
#    
Esempio n. 3
0
File: views.py Progetto: snow/pyfyd
    def get(self, request):
        """
        Try to authenticate user with the douban info
        """
        # get self.access_token and self.uid available
        super(AuthenticateReturnV, self).get(request)

        account = DoubanAccount.get_from_token(key=self.access_token.key, secret=self.access_token.secret, uid=self.uid)
        # DoesNotExist or MoreThanOneResult exception may raise here
        account = DoubanAccount.get_linked(account)
        try:
            user = authenticate(account=account, cid=ThirdpartyAuthBackend.CID)
        except Exception:
            # TODO
            raise
        else:
            if user:
                login(request, user)
                return self.success(user)
            else:
                return self.failed()