fix: remove TokenCache.refresh_token()

Will be handled by requests_oauthlib via
ConnectedApp.get_oauth2_session(user).
This commit is contained in:
barredterra 2020-09-27 19:55:40 +02:00
parent 89c056998e
commit 72cd67b9bd
2 changed files with 12 additions and 33 deletions

View file

@ -30,9 +30,19 @@ class ConnectedApp(Document):
callback_path = '/api/method/frappe.integrations.doctype.connected_app.connected_app.callback/' + self.name
self.redirect_uri = urljoin(base_url, callback_path)
def get_oauth2_session(self):
def get_oauth2_session(self, user=None):
token = None
token_updater = None
if user:
token_cache = self.get_user_token(user)
token = token_cache.get_json()
token_updater = token_cache.update_data
return OAuth2Session(
self.client_id,
client_id=self.client_id,
token=token,
token_updater=token_updater,
auto_refresh_url=self.token_uri,
redirect_uri=self.redirect_uri,
scope=self.get_scopes()
)

View file

@ -18,37 +18,6 @@ class TokenCache(Document):
raise frappe.exceptions.DoesNotExistError
def check_validity(self):
if(self.get('__islocal') or (not self.access_token)):
raise frappe.exceptions.DoesNotExistError
if not self.is_expired():
return self
return self.refresh_token()
def refresh_token(self):
app = frappe.get_doc("Connected App", self.connected_app)
oauth = app.get_oauth2_session()
new_token = oauth.refresh_token(
app.token_uri,
client_secret=app.get_password('client_secret'),
token=self.get_json()
)
if new_token.get('access_token') and app.revocation_uri:
# Revoke old token
requests.post(
app.revocation_uri,
data=urlencode({'token': new_token.get('access_token')}),
headers={
'Authorization': 'Bearer ' + new_token.get('access_token'),
'Content-Type': 'application/x-www-form-urlencoded'
}
)
return self.update_data(new_token)
def update_data(self, data):
self.access_token = data.get('access_token')
self.refresh_token = data.get('refresh_token')