use persited auth_state
This commit is contained in:
parent
c4c4ff2f31
commit
c143d96fab
|
@ -15,25 +15,28 @@ hub:
|
|||
from oauthenticator.generic import GenericOAuthenticator
|
||||
def post_auth_hook(authenticator, handler, authentication):
|
||||
user = authentication['auth_state']['oauth_user']['ocs']['data']['id']
|
||||
auth_state = authentication['auth_state']
|
||||
auth_state['token_expires'] = time.time() + auth_state['token_response']['expires_in']
|
||||
authenticator.user_dict[user] = auth_state
|
||||
authentication['auth_state']['token_expires'] = time.time() + auth_state['token_response']['expires_in']
|
||||
return authentication
|
||||
class NextcloudOAuthenticator(GenericOAuthenticator):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.user_dict = {}
|
||||
|
||||
def pre_spawn_start(self, user, spawner):
|
||||
async def pre_spawn_start(self, user, spawner):
|
||||
super().pre_spawn_start(user, spawner)
|
||||
access_token = self.user_dict[user.name]['access_token']
|
||||
auth_state = await user.get_auth_state()
|
||||
if not auth_state:
|
||||
return
|
||||
access_token = auth_state['access_token']
|
||||
spawner.environment['NEXTCLOUD_ACCESS_TOKEN'] = access_token
|
||||
|
||||
async def refresh_user(self, user, handler=None):
|
||||
try:
|
||||
access_token = self.user_dict[user.name]['access_token']
|
||||
refresh_token = self.user_dict[user.name]['refresh_token']
|
||||
token_response = self.user_dict[user.name]['token_response']
|
||||
auth_state = await user.get_auth_state()
|
||||
if not auth_state:
|
||||
return False
|
||||
access_token = auth_state['access_token']
|
||||
refresh_token = auth_state['refresh_token']
|
||||
token_response = name]['token_response']
|
||||
now = time.time()
|
||||
expires = self.user_dict[user.name]['token_expires']
|
||||
if now >= expires:
|
||||
|
|
Loading…
Reference in a new issue