From 3bf695b6fbcc990ce201db7683a94d7a42dfe7d9 Mon Sep 17 00:00:00 2001 From: exaby73 Date: Mon, 29 Jan 2024 20:19:55 +0530 Subject: [PATCH] --wip-- [skip ci] --- src/firebase_functions/https_fn.py | 49 +++++++++++++++--------------- src/firebase_functions/tasks_fn.py | 2 +- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/firebase_functions/https_fn.py b/src/firebase_functions/https_fn.py index 84c5659..1115bf2 100644 --- a/src/firebase_functions/https_fn.py +++ b/src/firebase_functions/https_fn.py @@ -347,7 +347,7 @@ class CallableRequest(_typing.Generic[_core.T]): def _on_call_handler(func: _C2, request: Request, - enforce_app_check: bool) -> Response: + enforce_app_check: bool, auth: bool = True) -> Response: try: if not _util.valid_on_call_request(request): _logging.error("Invalid request, unable to process.") @@ -357,29 +357,30 @@ def _on_call_handler(func: _C2, request: Request, data=_json.loads(request.data)["data"], ) - token_status = _util.on_call_check_tokens(request) - - if token_status.auth == _util.OnCallTokenState.INVALID: - raise HttpsError(FunctionsErrorCode.UNAUTHENTICATED, - "Unauthenticated") - - if enforce_app_check and token_status.app in ( - _util.OnCallTokenState.MISSING, _util.OnCallTokenState.INVALID): - raise HttpsError(FunctionsErrorCode.UNAUTHENTICATED, - "Unauthenticated") - if token_status.app == _util.OnCallTokenState.VALID and token_status.app_token is not None: - context = _dataclasses.replace( - context, - app=AppCheckData(token_status.app_token["sub"], - token_status.app_token), - ) - - if token_status.auth_token is not None: - context = _dataclasses.replace( - context, - auth=AuthData(token_status.auth_token["uid"], - token_status.auth_token), - ) + if auth: + token_status = _util.on_call_check_tokens(request) + + if token_status.auth == _util.OnCallTokenState.INVALID: + raise HttpsError(FunctionsErrorCode.UNAUTHENTICATED, + "Unauthenticated") + + if enforce_app_check and token_status.app in ( + _util.OnCallTokenState.MISSING, _util.OnCallTokenState.INVALID): + raise HttpsError(FunctionsErrorCode.UNAUTHENTICATED, + "Unauthenticated") + if token_status.app == _util.OnCallTokenState.VALID and token_status.app_token is not None: + context = _dataclasses.replace( + context, + app=AppCheckData(token_status.app_token["sub"], + token_status.app_token), + ) + + if token_status.auth_token is not None: + context = _dataclasses.replace( + context, + auth=AuthData(token_status.auth_token["uid"], + token_status.auth_token), + ) instance_id = request.headers.get("Firebase-Instance-ID-Token") if instance_id is not None: diff --git a/src/firebase_functions/tasks_fn.py b/src/firebase_functions/tasks_fn.py index 2d366b6..7a9482a 100644 --- a/src/firebase_functions/tasks_fn.py +++ b/src/firebase_functions/tasks_fn.py @@ -53,7 +53,7 @@ def on_task_dispatched_decorator(func: _C): @_functools.wraps(func) def on_task_dispatched_wrapped(request: Request) -> Response: - return _on_call_handler(func, request, enforce_app_check=False) + return _on_call_handler(func, request, enforce_app_check=False, auth=False) _util.set_func_endpoint_attr( on_task_dispatched_wrapped,