Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4fa2918

Browse files
authored
feat(auth) UpdateActionCodeSettings to supportlink_domain and deprecatedynamic_link_domain (#884)
* Add link_domain to ActionCodeSettings; update encode_action_code_settings to handle link_domain* Add handling for InvalidHostingLinkDomainError* Add deprecation warning for dynamic_link_domain* Update error message for InvalidHostingLinkDomainError* Fix lint* Add type hints to ActionCodeSettings* Fix f-string lint
1 parent2c8a34a commit4fa2918

File tree

4 files changed

+63
-4
lines changed

4 files changed

+63
-4
lines changed

‎firebase_admin/_auth_utils.py‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,17 @@ def __init__(self, message, cause, http_response):
324324
exceptions.InvalidArgumentError.__init__(self,message,cause,http_response)
325325

326326

327+
classInvalidHostingLinkDomainError(exceptions.InvalidArgumentError):
328+
"""The provided hosting link domain is not configured in Firebase Hosting
329+
or is not owned by the current project."""
330+
331+
default_message= ('The provided hosting link domain is not configured in Firebase '
332+
'Hosting or is not owned by the current project')
333+
334+
def__init__(self,message,cause,http_response):
335+
exceptions.InvalidArgumentError.__init__(self,message,cause,http_response)
336+
337+
327338
classInvalidIdTokenError(exceptions.InvalidArgumentError):
328339
"""The provided ID token is not a valid Firebase ID token."""
329340

@@ -423,6 +434,7 @@ def __init__(self, message, cause=None, http_response=None):
423434
'EMAIL_NOT_FOUND':EmailNotFoundError,
424435
'INSUFFICIENT_PERMISSION':InsufficientPermissionError,
425436
'INVALID_DYNAMIC_LINK_DOMAIN':InvalidDynamicLinkDomainError,
437+
'INVALID_HOSTING_LINK_DOMAIN':InvalidHostingLinkDomainError,
426438
'INVALID_ID_TOKEN':InvalidIdTokenError,
427439
'PHONE_NUMBER_EXISTS':PhoneNumberAlreadyExistsError,
428440
'TENANT_NOT_FOUND':TenantNotFoundError,

‎firebase_admin/_user_mgt.py‎

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
importbase64
1818
fromcollectionsimportdefaultdict
1919
importjson
20+
fromtypingimportOptional
2021
fromurllibimportparse
22+
importwarnings
2123

2224
importrequests
2325

@@ -489,15 +491,30 @@ class ActionCodeSettings:
489491
Used when invoking the email action link generation APIs.
490492
"""
491493

492-
def__init__(self,url,handle_code_in_app=None,dynamic_link_domain=None,ios_bundle_id=None,
493-
android_package_name=None,android_install_app=None,android_minimum_version=None):
494+
def__init__(
495+
self,
496+
url:str,
497+
handle_code_in_app:Optional[bool]=None,
498+
dynamic_link_domain:Optional[str]=None,
499+
ios_bundle_id:Optional[str]=None,
500+
android_package_name:Optional[str]=None,
501+
android_install_app:Optional[str]=None,
502+
android_minimum_version:Optional[str]=None,
503+
link_domain:Optional[str]=None,
504+
):
505+
ifdynamic_link_domainisnotNone:
506+
warnings.warn(
507+
'dynamic_link_domain is deprecated, use link_domain instead',
508+
DeprecationWarning
509+
)
494510
self.url=url
495511
self.handle_code_in_app=handle_code_in_app
496512
self.dynamic_link_domain=dynamic_link_domain
497513
self.ios_bundle_id=ios_bundle_id
498514
self.android_package_name=android_package_name
499515
self.android_install_app=android_install_app
500516
self.android_minimum_version=android_minimum_version
517+
self.link_domain=link_domain
501518

502519

503520
defencode_action_code_settings(settings):
@@ -535,6 +552,13 @@ def encode_action_code_settings(settings):
535552
f'Invalid value provided for dynamic_link_domain:{settings.dynamic_link_domain}')
536553
parameters['dynamicLinkDomain']=settings.dynamic_link_domain
537554

555+
# link_domain
556+
ifsettings.link_domainisnotNone:
557+
ifnotisinstance(settings.link_domain,str):
558+
raiseValueError(
559+
f'Invalid value provided for link_domain:{settings.link_domain}')
560+
parameters['linkDomain']=settings.link_domain
561+
538562
# ios_bundle_id
539563
ifsettings.ios_bundle_idisnotNone:
540564
ifnotisinstance(settings.ios_bundle_id,str):

‎firebase_admin/auth.py‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
'ImportUserRecord',
5050
'InsufficientPermissionError',
5151
'InvalidDynamicLinkDomainError',
52+
'InvalidHostingLinkDomainError',
5253
'InvalidIdTokenError',
5354
'InvalidSessionCookieError',
5455
'ListProviderConfigsPage',
@@ -125,6 +126,7 @@
125126
ImportUserRecord=_user_import.ImportUserRecord
126127
InsufficientPermissionError=_auth_utils.InsufficientPermissionError
127128
InvalidDynamicLinkDomainError=_auth_utils.InvalidDynamicLinkDomainError
129+
InvalidHostingLinkDomainError=_auth_utils.InvalidHostingLinkDomainError
128130
InvalidIdTokenError=_auth_utils.InvalidIdTokenError
129131
InvalidSessionCookieError=_token_gen.InvalidSessionCookieError
130132
ListProviderConfigsPage=_auth_providers.ListProviderConfigsPage

‎tests/test_user_mgt.py‎

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@
4343
MOCK_ACTION_CODE_DATA= {
4444
'url':'http://localhost',
4545
'handle_code_in_app':True,
46-
'dynamic_link_domain':'http://testly',
46+
'dynamic_link_domain':'http://dynamic-link-domain',
47+
'link_domain':'http://link-domain',
4748
'ios_bundle_id':'test.bundle',
4849
'android_package_name':'test.bundle',
4950
'android_minimum_version':'7',
@@ -1363,7 +1364,8 @@ def test_valid_data(self):
13631364
data= {
13641365
'url':'http://localhost',
13651366
'handle_code_in_app':True,
1366-
'dynamic_link_domain':'http://testly',
1367+
'dynamic_link_domain':'http://dynamic-link-domain',
1368+
'link_domain':'http://link-domain',
13671369
'ios_bundle_id':'test.bundle',
13681370
'android_package_name':'test.bundle',
13691371
'android_minimum_version':'7',
@@ -1374,6 +1376,7 @@ def test_valid_data(self):
13741376
assertparameters['continueUrl']==data['url']
13751377
assertparameters['canHandleCodeInApp']==data['handle_code_in_app']
13761378
assertparameters['dynamicLinkDomain']==data['dynamic_link_domain']
1379+
assertparameters['linkDomain']==data['link_domain']
13771380
assertparameters['iOSBundleId']==data['ios_bundle_id']
13781381
assertparameters['androidPackageName']==data['android_package_name']
13791382
assertparameters['androidMinimumVersion']==data['android_minimum_version']
@@ -1496,6 +1499,23 @@ def test_invalid_dynamic_link(self, user_mgt_app, func):
14961499
assertexcinfo.value.http_responseisnotNone
14971500
assertexcinfo.value.causeisnotNone
14981501

1502+
@pytest.mark.parametrize('func', [
1503+
auth.generate_sign_in_with_email_link,
1504+
auth.generate_email_verification_link,
1505+
auth.generate_password_reset_link,
1506+
])
1507+
deftest_invalid_hosting_link(self,user_mgt_app,func):
1508+
resp='{"error":{"message": "INVALID_HOSTING_LINK_DOMAIN: Because of this reason."}}'
1509+
_instrument_user_manager(user_mgt_app,500,resp)
1510+
withpytest.raises(auth.InvalidHostingLinkDomainError)asexcinfo:
1511+
func('test@test.com',MOCK_ACTION_CODE_SETTINGS,app=user_mgt_app)
1512+
assertisinstance(excinfo.value,exceptions.InvalidArgumentError)
1513+
assertstr(excinfo.value)== ('The provided hosting link domain is not configured in '
1514+
'Firebase Hosting or is not owned by the current project '
1515+
'(INVALID_HOSTING_LINK_DOMAIN). Because of this reason.')
1516+
assertexcinfo.value.http_responseisnotNone
1517+
assertexcinfo.value.causeisnotNone
1518+
14991519
@pytest.mark.parametrize('func', [
15001520
auth.generate_sign_in_with_email_link,
15011521
auth.generate_email_verification_link,
@@ -1534,6 +1554,7 @@ def _validate_request(self, request, settings=None):
15341554
assertrequest['continueUrl']==settings.url
15351555
assertrequest['canHandleCodeInApp']==settings.handle_code_in_app
15361556
assertrequest['dynamicLinkDomain']==settings.dynamic_link_domain
1557+
assertrequest['linkDomain']==settings.link_domain
15371558
assertrequest['iOSBundleId']==settings.ios_bundle_id
15381559
assertrequest['androidPackageName']==settings.android_package_name
15391560
assertrequest['androidMinimumVersion']==settings.android_minimum_version

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp