Skip to content

Commit 2023f64

Browse files
authored
feat: Allow custom refresh token duration (#559)
For SDK calls initiated by MGMT SDK related to descope/etc#10354
1 parent b2c272c commit 2023f64

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

descope/management/common.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,10 @@ class MgmtSignUpOptions:
155155
def __init__(
156156
self,
157157
custom_claims: Optional[dict] = None,
158+
refresh_duration: Optional[int] = None,
158159
):
159160
self.custom_claims = custom_claims
161+
self.refresh_duration = refresh_duration
160162

161163

162164
class MgmtLoginOptions:
@@ -167,12 +169,14 @@ def __init__(
167169
revoke_other_sessions: Optional[bool] = None,
168170
custom_claims: Optional[dict] = None,
169171
jwt: Optional[str] = None,
172+
refresh_duration: Optional[int] = None,
170173
):
171174
self.stepup = stepup
172175
self.custom_claims = custom_claims
173176
self.mfa = mfa
174177
self.revoke_other_sessions = revoke_other_sessions
175178
self.jwt = jwt
179+
self.refresh_duration = refresh_duration
176180

177181

178182
def is_jwt_required(lgo: MgmtLoginOptions) -> bool:

descope/management/jwt.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ def impersonate(
4848
validate_consent: bool,
4949
custom_claims: Optional[dict] = None,
5050
tenant_id: Optional[str] = None,
51+
refresh_duration: Optional[int] = None,
5152
) -> str:
5253
"""
5354
Impersonate to another user
@@ -78,8 +79,9 @@ def impersonate(
7879
"loginId": login_id,
7980
"impersonatorId": impersonator_id,
8081
"validateConsent": validate_consent,
81-
"cusotmClaims": custom_claims,
82+
"customClaims": custom_claims,
8283
"selectedTenant": tenant_id,
84+
"refreshDuration": refresh_duration,
8385
},
8486
pswd=self._auth.management_key,
8587
)
@@ -116,6 +118,7 @@ def sign_in(
116118
"revokeOtherSessions": login_options.revoke_other_sessions,
117119
"customClaims": login_options.custom_claims,
118120
"jwt": login_options.jwt,
121+
"refreshDuration": login_options.refresh_duration,
119122
},
120123
pswd=self._auth.management_key,
121124
)
@@ -187,6 +190,7 @@ def _sign_up_internal(
187190
"phoneVerified": user.phone_verified,
188191
"ssoAppId": user.sso_app_id,
189192
"customClaims": signup_options.custom_claims,
193+
"refreshDuration": signup_options.refresh_duration,
190194
},
191195
pswd=self._auth.management_key,
192196
)
@@ -198,6 +202,7 @@ def anonymous(
198202
self,
199203
custom_claims: Optional[dict] = None,
200204
tenant_id: Optional[str] = None,
205+
refresh_duration: Optional[int] = None,
201206
) -> dict:
202207
"""
203208
Generate a JWT for an anonymous user.
@@ -212,6 +217,7 @@ def anonymous(
212217
{
213218
"customClaims": custom_claims,
214219
"selectedTenant": tenant_id,
220+
"refreshDuration": refresh_duration,
215221
},
216222
pswd=self._auth.management_key,
217223
)

tests/management/test_jwt.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,9 @@ def test_impersonate(self):
134134
"loginId": "imp2",
135135
"impersonatorId": "imp1",
136136
"validateConsent": True,
137-
"cusotmClaims": None,
137+
"customClaims": None,
138138
"selectedTenant": None,
139+
"refreshDuration": None,
139140
},
140141
allow_redirects=False,
141142
verify=True,
@@ -183,6 +184,7 @@ def test_sign_in(self):
183184
"revokeOtherSessions": None,
184185
"customClaims": None,
185186
"jwt": None,
187+
"refreshDuration": None,
186188
},
187189
allow_redirects=False,
188190
verify=True,
@@ -233,6 +235,7 @@ def test_sign_up(self):
233235
"phoneVerified": None,
234236
"ssoAppId": None,
235237
"customClaims": None,
238+
"refreshDuration": None,
236239
},
237240
allow_redirects=False,
238241
verify=True,
@@ -283,6 +286,7 @@ def test_sign_up_or_in(self):
283286
"phoneVerified": None,
284287
"ssoAppId": None,
285288
"customClaims": None,
289+
"refreshDuration": None,
286290
},
287291
allow_redirects=False,
288292
verify=True,
@@ -313,7 +317,10 @@ def test_anonymous(self):
313317
"Authorization": f"Bearer {self.dummy_project_id}:{self.dummy_management_key}",
314318
"x-descope-project-id": self.dummy_project_id,
315319
},
316-
json={"customClaims": {"k1": "v1"}, "selectedTenant": "id"},
320+
json={
321+
"customClaims": {"k1": "v1"},
322+
"selectedTenant": "id",
323+
"refreshDuration": None},
317324
allow_redirects=False,
318325
verify=True,
319326
params=None,

0 commit comments

Comments
 (0)