Skip to content

Commit d62fbcd

Browse files
authored
new-apis (#45)
* new-apis * version bumps * Update requirements.txt
1 parent d965c2b commit d62fbcd

File tree

3 files changed

+174
-20
lines changed

3 files changed

+174
-20
lines changed

propelauth_flask/__init__.py

Lines changed: 171 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -269,16 +269,13 @@ def create_magic_link(
269269
self,
270270
email: str,
271271
redirect_to_url: Optional[str] = None,
272-
expires_in_hours: Optional[str] = None,
272+
expires_in_hours: Optional[int] = None,
273273
create_new_user_if_one_doesnt_exist: Optional[bool] = None,
274274
user_signup_query_parameters: Optional[Dict[str, Any]] = None,
275+
expire_after_first_use: Optional[bool] = None
275276
):
276277
return self.auth.create_magic_link(
277-
email,
278-
redirect_to_url,
279-
expires_in_hours,
280-
create_new_user_if_one_doesnt_exist,
281-
user_signup_query_parameters,
278+
email, redirect_to_url, expires_in_hours, create_new_user_if_one_doesnt_exist, user_signup_query_parameters, expire_after_first_use
282279
)
283280

284281
def create_access_token(
@@ -460,13 +457,8 @@ def create_api_key(
460457
):
461458
return self.auth.create_api_key(org_id, user_id, expires_at_seconds, metadata)
462459

463-
def update_api_key(
464-
self,
465-
api_key_id: str,
466-
expires_at_seconds: Optional[str] = None,
467-
metadata: Optional[Dict[str, Any]] = None,
468-
):
469-
return self.auth.update_api_key(api_key_id, expires_at_seconds, metadata)
460+
def update_api_key(self, api_key_id: str, expires_at_seconds: Optional[str] = None, metadata: Optional[Dict[str, Any]] = None, set_to_never_expire: Optional[bool] = None):
461+
return self.auth.update_api_key(api_key_id, expires_at_seconds, metadata, set_to_never_expire)
470462

471463
def delete_api_key(self, api_key_id: str):
472464
return self.auth.delete_api_key(api_key_id)
@@ -508,6 +500,80 @@ def verify_step_up_totp_challenge(
508500

509501
def verify_step_up_grant(self, action_type: str, user_id: str, grant: str) -> bool:
510502
return self.auth.verify_step_up_grant(action_type, user_id, grant)
503+
504+
def fetch_user_mfa_methods(self, user_id: str):
505+
return self.auth.fetch_user_mfa_methods(user_id)
506+
507+
def invite_user_to_org_by_user_id(
508+
self, user_id: str, org_id: str, role: str, additional_roles: List[str] = []
509+
):
510+
return self.auth.invite_user_to_org_by_user_id(
511+
user_id,
512+
org_id,
513+
role,
514+
additional_roles,
515+
)
516+
517+
def validate_imported_api_key(self, api_key_token: str):
518+
return self.auth.validate_imported_api_key(api_key_token)
519+
520+
def fetch_api_key_usage(
521+
self,
522+
date: str,
523+
org_id: Optional[str] = None,
524+
user_id: Optional[str] = None,
525+
api_key_id: Optional[str] = None
526+
):
527+
return self.auth.fetch_api_key_usage(
528+
date, org_id, user_id, api_key_id
529+
)
530+
531+
def import_api_key(
532+
self,
533+
api_key_token: str,
534+
org_id: Optional[str] = None,
535+
user_id: Optional[str] = None,
536+
expires_at_seconds: Optional[str] = None,
537+
metadata: Optional[Dict[str, Any]] = None,
538+
):
539+
return self.auth.import_api_key(
540+
api_key_token,
541+
org_id,
542+
user_id,
543+
expires_at_seconds,
544+
metadata,
545+
)
546+
547+
def send_sms_mfa_code(
548+
self,
549+
action_type: str,
550+
user_id: str,
551+
mfa_phone_id: str,
552+
grant_type: StepUpMfaGrantType,
553+
valid_for_seconds: int,
554+
):
555+
return self.auth.send_sms_mfa_code(
556+
action_type,
557+
user_id,
558+
mfa_phone_id,
559+
grant_type,
560+
valid_for_seconds
561+
)
562+
563+
def verify_sms_challenge(
564+
self,
565+
challenge_id: str,
566+
user_id: str,
567+
code: str,
568+
):
569+
return self.auth.verify_sms_challenge(
570+
challenge_id,
571+
user_id,
572+
code
573+
)
574+
575+
def fetch_employee_by_id(self, employee_id: str):
576+
return self.auth.fetch_employee_by_id(employee_id)
511577

512578

513579
class FlaskAuthAsync():
@@ -672,12 +738,13 @@ async def create_magic_link(
672738
self,
673739
email: str,
674740
redirect_to_url: Optional[str] = None,
675-
expires_in_hours: Optional[str] = None,
741+
expires_in_hours: Optional[int] = None,
676742
create_new_user_if_one_doesnt_exist: Optional[bool] = None,
677743
user_signup_query_parameters: Optional[Dict[str, Any]] = None,
744+
expire_after_first_use: Optional[bool] = None
678745
):
679746
return await self.auth.create_magic_link(
680-
email, redirect_to_url, expires_in_hours, create_new_user_if_one_doesnt_exist, user_signup_query_parameters
747+
email, redirect_to_url, expires_in_hours, create_new_user_if_one_doesnt_exist, user_signup_query_parameters, expire_after_first_use
681748
)
682749

683750
async def create_access_token(self, user_id: str, duration_in_minutes: int, active_org_id: Optional[str] = None):
@@ -824,8 +891,8 @@ async def create_api_key(
824891
):
825892
return await self.auth.create_api_key(org_id, user_id, expires_at_seconds, metadata)
826893

827-
async def update_api_key(self, api_key_id: str, expires_at_seconds: Optional[str] = None, metadata: Optional[Dict[str, Any]] = None):
828-
return await self.auth.update_api_key(api_key_id, expires_at_seconds, metadata)
894+
async def update_api_key(self, api_key_id: str, expires_at_seconds: Optional[str] = None, metadata: Optional[Dict[str, Any]] = None, set_to_never_expire: Optional[bool] = None):
895+
return await self.auth.update_api_key(api_key_id, expires_at_seconds, metadata, set_to_never_expire)
829896

830897
async def delete_api_key(self, api_key_id: str):
831898
return await self.auth.delete_api_key(api_key_id)
@@ -865,6 +932,93 @@ async def verify_step_up_totp_challenge(
865932

866933
async def verify_step_up_grant(self, action_type: str, user_id: str, grant: str) -> bool:
867934
return await self.auth.verify_step_up_grant(action_type, user_id, grant)
935+
936+
async def validate_imported_api_key(self, api_key_token: str):
937+
return await self.auth.validate_imported_api_key(
938+
api_key_token=api_key_token
939+
)
940+
941+
async def fetch_api_key_usage(
942+
self,
943+
date: str,
944+
org_id: Optional[str] = None,
945+
user_id: Optional[str] = None,
946+
api_key_id: Optional[str] = None
947+
):
948+
return await self.auth.fetch_api_key_usage(
949+
date,
950+
org_id,
951+
user_id,
952+
api_key_id
953+
)
954+
955+
async def import_api_key(
956+
self,
957+
api_key_token: str,
958+
org_id: Optional[str] = None,
959+
user_id: Optional[str] = None,
960+
expires_at_seconds: Optional[str] = None,
961+
metadata: Optional[Dict[str, Any]] = None,
962+
):
963+
return await self.auth.import_api_key(
964+
api_key_token,
965+
org_id,
966+
user_id,
967+
expires_at_seconds,
968+
metadata,
969+
)
970+
971+
async def invite_user_to_org_by_user_id(
972+
self,
973+
user_id: str,
974+
org_id: str,
975+
role: str,
976+
additional_roles: List[str] = []
977+
):
978+
return await self.auth.invite_user_to_org_by_user_id(
979+
user_id,
980+
org_id,
981+
role,
982+
additional_roles,
983+
)
984+
985+
async def fetch_user_mfa_methods(self, user_id: str):
986+
return await self.auth.fetch_user_mfa_methods(
987+
user_id,
988+
)
989+
990+
async def send_sms_mfa_code(
991+
self,
992+
action_type: str,
993+
user_id: str,
994+
mfa_phone_id: str,
995+
grant_type: StepUpMfaGrantType,
996+
valid_for_seconds: int,
997+
):
998+
return await self.auth.send_sms_mfa_code(
999+
action_type,
1000+
user_id,
1001+
mfa_phone_id,
1002+
grant_type,
1003+
valid_for_seconds
1004+
)
1005+
1006+
async def verify_sms_challenge(
1007+
self,
1008+
challenge_id: str,
1009+
user_id: str,
1010+
code: str,
1011+
):
1012+
return await self.auth.verify_sms_challenge(
1013+
challenge_id,
1014+
user_id,
1015+
code
1016+
)
1017+
1018+
async def fetch_employee_by_id(self, employee_id: str):
1019+
return await self.auth.fetch_employee_by_id(
1020+
employee_id
1021+
)
8681022

8691023
def init_auth(
8701024
auth_url: str,

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
flask<4
2-
propelauth-py==4.2.8
2+
propelauth-py==4.2.9
33
pytest
44
requests-mock
55
httpx

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
setup(
1414
name="propelauth-flask",
15-
version="4.2.8",
15+
version="4.2.9",
1616
description="A library for managing authentication in Flask",
1717
long_description=README,
1818
long_description_content_type="text/markdown",
@@ -21,7 +21,7 @@
2121
author="PropelAuth",
2222
author_email="support@propelauth.com",
2323
license="MIT",
24-
install_requires=["flask<4", "propelauth-py==4.2.8", "requests", "httpx>=0.28.1"],
24+
install_requires=["flask<4", "propelauth-py==4.2.9", "requests", "httpx>=0.28.1"],
2525
setup_requires=pytest_runner,
2626
tests_require=["pytest==4.4.1"],
2727
test_suite="tests",

0 commit comments

Comments
 (0)