Add code to refresh token
This commit is contained in:
parent
ff10e706cd
commit
4bd47e747a
|
@ -12,9 +12,26 @@ hub:
|
||||||
extraConfig:
|
extraConfig:
|
||||||
oauthCode: |
|
oauthCode: |
|
||||||
import time
|
import time
|
||||||
|
import requests
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from oauthenticator.generic import GenericOAuthenticator
|
from oauthenticator.generic import GenericOAuthenticator
|
||||||
|
|
||||||
|
def get_nextcloud_access_token(refresh_token):
|
||||||
|
client_id = os.environ['NEXTCLOUD_CLIENT_ID']
|
||||||
|
client_secret = os.environ['NEXTCLOUD_CLIENT_SECRET']
|
||||||
|
|
||||||
|
url = 'https://' + os.environ['NEXTCLOUD_HOST'] + '/index.php/apps/oauth2/api/v1/token'
|
||||||
|
code = refresh_token
|
||||||
|
data = {
|
||||||
|
'grant_type': refresh_token,
|
||||||
|
'code': code,
|
||||||
|
'refresh_token: refresh_token,
|
||||||
|
'client_id': client_id,
|
||||||
|
'client_secret': client_secret
|
||||||
|
}
|
||||||
|
response = requests.post(url, data=data)
|
||||||
|
return response.json()
|
||||||
|
|
||||||
def post_auth_hook(authenticator, handler, authentication):
|
def post_auth_hook(authenticator, handler, authentication):
|
||||||
user = authentication['auth_state']['oauth_user']['ocs']['data']['id']
|
user = authentication['auth_state']['oauth_user']['ocs']['data']['id']
|
||||||
auth_state = authentication['auth_state']
|
auth_state = authentication['auth_state']
|
||||||
|
@ -54,6 +71,21 @@ hub:
|
||||||
if now >= expires:
|
if now >= expires:
|
||||||
if debug:
|
if debug:
|
||||||
print(f'Time is: {now_hr}, token expired: {expires_hr}')
|
print(f'Time is: {now_hr}, token expired: {expires_hr}')
|
||||||
|
print(f'Refreshing token for {user}')
|
||||||
|
try:
|
||||||
|
token_response = get_nextcloud_access_token(refresh_token)
|
||||||
|
auth_state['access_token'] = token_response['access_token']
|
||||||
|
auth_state['refresh_token'] = token_response['refresh_token']
|
||||||
|
auth_state['token_expires'] = now + token_response['expires_in']
|
||||||
|
auth_state['token_response'] = token_response
|
||||||
|
if debug:
|
||||||
|
print(f'Successfully refreshed token for {user}')
|
||||||
|
print(f'auth_state for {user}: {auth_state}')
|
||||||
|
return auth_state
|
||||||
|
except Exception as e:
|
||||||
|
if debug:
|
||||||
|
print(f'Failed to refresh token for {user}')
|
||||||
|
return False
|
||||||
return False
|
return False
|
||||||
if debug:
|
if debug:
|
||||||
print(f'Time is: {now_hr}, token expires: {expires_hr}')
|
print(f'Time is: {now_hr}, token expires: {expires_hr}')
|
||||||
|
|
Loading…
Reference in a new issue