From 0f0b32f9ff96002804c16d4d6fa2eea59cb6b76b Mon Sep 17 00:00:00 2001 From: Bruce Schultz Date: Wed, 13 Apr 2022 11:39:22 +0200 Subject: [PATCH 1/2] Add session site to login check in load function --- src/sharepy/session.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/sharepy/session.py b/src/sharepy/session.py index c90dfeb..9d2bfdd 100644 --- a/src/sharepy/session.py +++ b/src/sharepy/session.py @@ -7,6 +7,7 @@ from . import __version__ from . import auth from . import errors +from sharepy.auth.base import BaseAuth def connect(site, username=None, password=None): @@ -25,7 +26,7 @@ def load(filename='sp-session.pkl'): raise errors.SessionError('The session is not compatible with the current SharePy version') # Try to authenticate the saved session - if session.auth.refresh() or session.auth.login(): + if session.auth.refresh() or session.auth.login(session.site): # Re-save session to prevent it going stale try: session.save(filename) @@ -47,7 +48,7 @@ class SharePointSession(requests.Session): """ - def __init__(self, site=None, auth=None): + def __init__(self, site=None, auth: BaseAuth = None): super().__init__() self.version = __version__ From d0c285840bcdb3fa3fbbc8954ab894ff819ac960 Mon Sep 17 00:00:00 2001 From: Bruce Schultz Date: Wed, 13 Apr 2022 11:58:24 +0200 Subject: [PATCH 2/2] Have auth steps return bools --- src/sharepy/auth/adfs.py | 9 ++++++--- src/sharepy/auth/spol.py | 13 +++++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/sharepy/auth/adfs.py b/src/sharepy/auth/adfs.py index 2ed4b33..c29700c 100644 --- a/src/sharepy/auth/adfs.py +++ b/src/sharepy/auth/adfs.py @@ -24,9 +24,10 @@ def __init__(self, *args, **kwargs): def login(self, site): """Perform authentication steps""" self.site = site - self._get_token() - self._get_cookie() - self._get_digest() + got_token = self._get_token() + got_cookie = self._get_cookie() + refreshed = self._get_digest() + return all([got_token, got_cookie, refreshed]) def refresh(self): return self._get_digest() @@ -118,6 +119,8 @@ def _get_digest(self): # Calculate digest expiry time self.expire = datetime.now() + timedelta(seconds=timeout) + return True + def _buildcookie(self, cookies): """Create session cookie from response cookie dictionary""" return 'SPOIDCRL=' + cookies['SPOIDCRL'] diff --git a/src/sharepy/auth/spol.py b/src/sharepy/auth/spol.py index a478e87..2d3811f 100644 --- a/src/sharepy/auth/spol.py +++ b/src/sharepy/auth/spol.py @@ -22,9 +22,10 @@ def __init__(self, *args, **kwargs): def login(self, site): """Perform authentication steps""" self.site = site - self._get_token() - self._get_cookie() - self._get_digest() + got_token = self._get_token() + got_cookie = self._get_cookie() + refreshed = self._get_digest() + return all([got_token, got_cookie, refreshed]) def refresh(self): return self._get_digest() @@ -50,6 +51,7 @@ def _get_token(self): raise errors.AuthError.fromxml(root) self.token = token.text + return True def _get_cookie(self): """Request access cookie from sharepoint site""" @@ -64,6 +66,7 @@ def _get_cookie(self): if response.status_code == requests.codes.ok: self.cookie = cookie + return True else: raise errors.AuthError('Authentication failed') @@ -84,7 +87,9 @@ def _get_digest(self): # Calculate digest expiry time self.expire = datetime.now() + timedelta(seconds=timeout) - return True + return True + + return False def _buildcookie(self, cookies): """Create session cookie from response cookie dictionary"""