def process_request(self, request): if not request.user.is_anonymous(): try: provider = filter(lambda p: p["name"] == request.user.provider_key, (settings.OAUTH2_PROVIDERS[k] for k in settings.OAUTH2_PROVIDERS))[-1] c = Client(token_endpoint=provider["token_endpoint"], resource_endpoint=provider["resource_endpoint"], auth_endpoint=provider["auth_endpoint"], redirect_uri=provider.get("redirect_uri", None), client_id=provider["client_id"], client_secret=provider["client_secret"]) c.access_token = request.user.access_token c.expires = request.user.expires setattr(request.user, "resource", c) # play nice with other authentication backends except IndexError: raise KeyError("Provider %s doesn't exist" % request.user.provider_key) except AttributeError: # current user isn't a django_sanction user pass
def resource(self): provider = settings.SANCTION_PROVIDERS[self.name] c = SanctionClient(auth_endpoint=provider['auth_endpoint'], token_endpoint=provider['token_endpoint'], resource_endpoint=provider['resource_endpoint'], client_id=provider['client_id'], client_secret=provider['client_secret']) c.refresh_token = self.refresh_token c.access_token = self.access_token c.token_expires = self.token_expires return c