usso 0.24.15__py3-none-any.whl → 0.24.17__py3-none-any.whl

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.
usso/async_session.py CHANGED
@@ -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()
usso/session.py CHANGED
@@ -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>
@@ -1,20 +1,20 @@
1
1
  usso/__init__.py,sha256=NnOS_S1a-JKTOlGe1nw-kCL3m0y82mA2mDraus7BQ2o,120
2
2
  usso/api.py,sha256=xlDq2nZNpq3mhAvqIbGEfANHNjJpPquSeULBfS7iMJw,5094
3
3
  usso/async_api.py,sha256=rb-Xh5oudmZrPYM_iH_B75b5Z0Fvi1V1uurdcKE51w0,5551
4
- usso/async_session.py,sha256=B20H9qEwW_dshUE6NibvrP7TEYIHMJewjYO27l5hm-I,4077
4
+ usso/async_session.py,sha256=kI_La8iXbQCCgFL5QSh-gruqirwDEr-ZtnPQEYPeMnQ,4311
5
5
  usso/b64tools.py,sha256=HGQ0E59vzjrQo2-4jrcY03ebtTaYwTtCZ7KgJaEmxO0,610
6
6
  usso/core.py,sha256=cOpETK_gGVsUJT0EeIebOGLEbF8vHVET-_I-8QxOCyE,3977
7
7
  usso/exceptions.py,sha256=hawOAuVbvQtjgRfwp1KFZ4SmV7fh720y5Gom9JVA8W8,504
8
8
  usso/package_data.dat,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- usso/session.py,sha256=R5REJ4bdWbDiLI3WP5D1OluB4Xkm9fs25iyj1UO_iEI,2111
9
+ usso/session.py,sha256=Lqc9ZkMTIKZJuhVVL3JLZ_oO8IJ5jWYnVs27dbcsrVY,2310
10
10
  usso/django/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  usso/django/middleware.py,sha256=EEEpHvMQ6QiWw2HY8zQ2Aec0RCATcLWsCKeyiPWJKio,3245
12
12
  usso/fastapi/__init__.py,sha256=0EcdOzb4f3yu9nILIdGWnlyUz-0VaVX2az1e3f2BusI,201
13
13
  usso/fastapi/auth_middleware.py,sha256=DYrNPy_9FIV1amRuafoJtgGMi8uE0FPmSKBUGP79GNo,7616
14
14
  usso/fastapi/integration.py,sha256=VAUWaa7ChQ1jTtn8A136VgyG6t2kDo5pGK-3RgmNDVs,1669
15
- usso-0.24.15.dist-info/LICENSE.txt,sha256=ceC9ZJOV9H6CtQDcYmHOS46NA3dHJ_WD4J9blH513pc,1081
16
- usso-0.24.15.dist-info/METADATA,sha256=EUv9enT_ykJMFjpeCoxH6mHDany06eQvt0qPBGSyWcg,4275
17
- usso-0.24.15.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
18
- usso-0.24.15.dist-info/entry_points.txt,sha256=4Zgpm5ELaAWPf0jPGJFz1_X69H7un8ycT3WdGoJ0Vvk,35
19
- usso-0.24.15.dist-info/top_level.txt,sha256=g9Jf6h1Oyidh0vPiFni7UHInTJjSvu6cUalpLTIvthg,5
20
- usso-0.24.15.dist-info/RECORD,,
15
+ usso-0.24.17.dist-info/LICENSE.txt,sha256=ceC9ZJOV9H6CtQDcYmHOS46NA3dHJ_WD4J9blH513pc,1081
16
+ usso-0.24.17.dist-info/METADATA,sha256=7mBH7JoK7uwgOnpMxF1djsLZUviSmbjR-jfxjHmCV4Q,4275
17
+ usso-0.24.17.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
18
+ usso-0.24.17.dist-info/entry_points.txt,sha256=4Zgpm5ELaAWPf0jPGJFz1_X69H7un8ycT3WdGoJ0Vvk,35
19
+ usso-0.24.17.dist-info/top_level.txt,sha256=g9Jf6h1Oyidh0vPiFni7UHInTJjSvu6cUalpLTIvthg,5
20
+ usso-0.24.17.dist-info/RECORD,,
File without changes