usso 0.24.15__tar.gz → 0.24.17__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. {usso-0.24.15/src/usso.egg-info → usso-0.24.17}/PKG-INFO +1 -1
  2. {usso-0.24.15 → usso-0.24.17}/pyproject.toml +1 -1
  3. {usso-0.24.15 → usso-0.24.17}/src/usso/async_session.py +8 -1
  4. {usso-0.24.15 → usso-0.24.17}/src/usso/session.py +9 -3
  5. {usso-0.24.15 → usso-0.24.17/src/usso.egg-info}/PKG-INFO +1 -1
  6. {usso-0.24.15 → usso-0.24.17}/LICENSE.txt +0 -0
  7. {usso-0.24.15 → usso-0.24.17}/README.md +0 -0
  8. {usso-0.24.15 → usso-0.24.17}/setup.cfg +0 -0
  9. {usso-0.24.15 → usso-0.24.17}/src/usso/__init__.py +0 -0
  10. {usso-0.24.15 → usso-0.24.17}/src/usso/api.py +0 -0
  11. {usso-0.24.15 → usso-0.24.17}/src/usso/async_api.py +0 -0
  12. {usso-0.24.15 → usso-0.24.17}/src/usso/b64tools.py +0 -0
  13. {usso-0.24.15 → usso-0.24.17}/src/usso/core.py +0 -0
  14. {usso-0.24.15 → usso-0.24.17}/src/usso/django/__init__.py +0 -0
  15. {usso-0.24.15 → usso-0.24.17}/src/usso/django/middleware.py +0 -0
  16. {usso-0.24.15 → usso-0.24.17}/src/usso/exceptions.py +0 -0
  17. {usso-0.24.15 → usso-0.24.17}/src/usso/fastapi/__init__.py +0 -0
  18. {usso-0.24.15 → usso-0.24.17}/src/usso/fastapi/auth_middleware.py +0 -0
  19. {usso-0.24.15 → usso-0.24.17}/src/usso/fastapi/integration.py +0 -0
  20. {usso-0.24.15 → usso-0.24.17}/src/usso/package_data.dat +0 -0
  21. {usso-0.24.15 → usso-0.24.17}/src/usso.egg-info/SOURCES.txt +0 -0
  22. {usso-0.24.15 → usso-0.24.17}/src/usso.egg-info/dependency_links.txt +0 -0
  23. {usso-0.24.15 → usso-0.24.17}/src/usso.egg-info/entry_points.txt +0 -0
  24. {usso-0.24.15 → usso-0.24.17}/src/usso.egg-info/requires.txt +0 -0
  25. {usso-0.24.15 → usso-0.24.17}/src/usso.egg-info/top_level.txt +0 -0
  26. {usso-0.24.15 → usso-0.24.17}/tests/test_api.py +0 -0
  27. {usso-0.24.15 → usso-0.24.17}/tests/test_core.py +0 -0
  28. {usso-0.24.15 → usso-0.24.17}/tests/test_simple.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: usso
3
- Version: 0.24.15
3
+ Version: 0.24.17
4
4
  Summary: A plug-and-play client for integrating universal single sign-on (SSO) with Python frameworks, enabling secure and seamless authentication across microservices.
5
5
  Author-email: Mahdi Kiani <mahdikiany@gmail.com>
6
6
  Maintainer-email: Mahdi Kiani <mahdikiany@gmail.com>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "usso"
7
- version = "0.24.15"
7
+ version = "0.24.17"
8
8
  description = "A plug-and-play client for integrating universal single sign-on (SSO) with Python frameworks, enabling secure and seamless authentication across microservices."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -2,6 +2,7 @@ from contextlib import asynccontextmanager
2
2
  from datetime import datetime, timedelta
3
3
 
4
4
  import aiohttp
5
+ from fastapi import params
5
6
  import jwt
6
7
 
7
8
 
@@ -11,12 +12,14 @@ class AsyncUssoSession:
11
12
  sso_refresh_url: str,
12
13
  refresh_token: str | None = None,
13
14
  api_key: str | None = None,
15
+ user_id: str | None = None,
14
16
  ):
15
17
  self.sso_refresh_url = sso_refresh_url
16
18
  self._refresh_token = refresh_token
17
19
  self.access_token = None
18
20
  self.session = None # This will hold the aiohttp session
19
21
  self.api_key = api_key
22
+ self.user_id = user_id
20
23
 
21
24
  @property
22
25
  def refresh_token(self):
@@ -24,7 +27,10 @@ class AsyncUssoSession:
24
27
  decoded_token = jwt.decode(
25
28
  self._refresh_token, options={"verify_signature": False}
26
29
  )
27
- exp = decoded_token.get("exp", datetime.now() + timedelta(days=1))
30
+ exp = decoded_token.get(
31
+ "exp", (datetime.now() + timedelta(days=1)).timestamp()
32
+ )
33
+ exp = datetime.fromtimestamp(exp)
28
34
  if exp < datetime.now():
29
35
  self._refresh_token = None
30
36
 
@@ -35,6 +41,7 @@ class AsyncUssoSession:
35
41
  async with session.get(
36
42
  f"{self.sso_refresh_url}/api",
37
43
  headers={"x-api-key": self.api_key},
44
+ params={"user_id": self.user_id},
38
45
  ) as response:
39
46
  response.raise_for_status()
40
47
  data: dict = await response.json()
@@ -11,12 +11,14 @@ class UssoSession:
11
11
  sso_refresh_url: str,
12
12
  refresh_token: str | None = None,
13
13
  api_key: str | None = None,
14
+ user_id: str | None = None,
14
15
  ):
15
16
  self.sso_refresh_url = sso_refresh_url
16
17
  self._refresh_token = refresh_token
17
18
  self.session = requests.Session()
18
19
  self.access_token = None
19
20
  self.api_key = api_key
21
+ self.user_id = user_id
20
22
 
21
23
  @property
22
24
  def refresh_token(self):
@@ -24,7 +26,10 @@ class UssoSession:
24
26
  decoded_token = jwt.decode(
25
27
  self._refresh_token, options={"verify_signature": False}
26
28
  )
27
- exp = decoded_token.get("exp", datetime.now() + timedelta(days=1))
29
+ exp = decoded_token.get(
30
+ "exp", (datetime.now() + timedelta(days=1)).timestamp()
31
+ )
32
+ exp = datetime.fromtimestamp(exp)
28
33
  if exp < datetime.now():
29
34
  self._refresh_token = None
30
35
 
@@ -34,15 +39,16 @@ class UssoSession:
34
39
  response = requests.get(
35
40
  f"{self.sso_refresh_url}/api",
36
41
  headers={"x-api-key": self.api_key},
42
+ params={"user_id": self.user_id},
37
43
  )
38
- response.raise_for_status()
44
+ response.raise_for_status()curl
39
45
  data = response.json()
40
46
  self._refresh_token = data.get("token", {}).get("refresh_token")
41
47
 
42
48
  def _refresh(self):
43
49
  if not self.refresh_token and not self.api_key:
44
50
  return
45
-
51
+
46
52
  if self.api_key and not self.refresh_token:
47
53
  self._refresh_api()
48
54
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: usso
3
- Version: 0.24.15
3
+ Version: 0.24.17
4
4
  Summary: A plug-and-play client for integrating universal single sign-on (SSO) with Python frameworks, enabling secure and seamless authentication across microservices.
5
5
  Author-email: Mahdi Kiani <mahdikiany@gmail.com>
6
6
  Maintainer-email: Mahdi Kiani <mahdikiany@gmail.com>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes