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) # #
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()