diff --git a/providers/fab/src/airflow/providers/fab/auth_manager/api_fastapi/routes/login.py b/providers/fab/src/airflow/providers/fab/auth_manager/api_fastapi/routes/login.py index fd728c78a11bd..a822356ff632b 100644 --- a/providers/fab/src/airflow/providers/fab/auth_manager/api_fastapi/routes/login.py +++ b/providers/fab/src/airflow/providers/fab/auth_manager/api_fastapi/routes/login.py @@ -27,7 +27,6 @@ from airflow.configuration import conf from airflow.providers.fab.auth_manager.api_fastapi.datamodels.login import LoginBody, LoginResponse from airflow.providers.fab.auth_manager.api_fastapi.services.login import FABAuthManagerLogin -from airflow.providers.fab.auth_manager.cli_commands.utils import get_application_builder login_router = AirflowRouter(tags=["FabAuthManager"]) @@ -40,8 +39,7 @@ ) def create_token(body: LoginBody) -> LoginResponse: """Generate a new API token.""" - with get_application_builder(): - return FABAuthManagerLogin.create_token(body=body) + return FABAuthManagerLogin.create_token(body=body) @login_router.post( @@ -52,10 +50,9 @@ def create_token(body: LoginBody) -> LoginResponse: ) def create_token_cli(body: LoginBody) -> LoginResponse: """Generate a new CLI API token.""" - with get_application_builder(): - return FABAuthManagerLogin.create_token( - body=body, expiration_time_in_seconds=conf.getint("api_auth", "jwt_cli_expiration_time") - ) + return FABAuthManagerLogin.create_token( + body=body, expiration_time_in_seconds=conf.getint("api_auth", "jwt_cli_expiration_time") + ) @login_router.get( @@ -64,18 +61,17 @@ def create_token_cli(body: LoginBody) -> LoginResponse: ) def logout(request: Request) -> RedirectResponse: """Generate a new API token.""" - with get_application_builder(): - login_url = get_auth_manager().get_url_login() - secure = request.base_url.scheme == "https" or bool(conf.get("api", "ssl_cert", fallback="")) - response = RedirectResponse(login_url) - response.delete_cookie( - key="session", - secure=secure, - httponly=True, - ) - response.delete_cookie( - key=COOKIE_NAME_JWT_TOKEN, - secure=secure, - httponly=True, - ) - return response + login_url = get_auth_manager().get_url_login() + secure = request.base_url.scheme == "https" or bool(conf.get("api", "ssl_cert", fallback="")) + response = RedirectResponse(login_url) + response.delete_cookie( + key="session", + secure=secure, + httponly=True, + ) + response.delete_cookie( + key=COOKIE_NAME_JWT_TOKEN, + secure=secure, + httponly=True, + ) + return response diff --git a/providers/fab/src/airflow/providers/fab/www/app.py b/providers/fab/src/airflow/providers/fab/www/app.py index e12fd064c09c4..06e5285bdacba 100644 --- a/providers/fab/src/airflow/providers/fab/www/app.py +++ b/providers/fab/src/airflow/providers/fab/www/app.py @@ -30,7 +30,7 @@ from airflow.configuration import conf from airflow.exceptions import AirflowConfigException from airflow.logging_config import configure_logging -from airflow.providers.fab.www.extensions.init_appbuilder import init_appbuilder +from airflow.providers.fab.www.extensions.init_appbuilder import AirflowAppBuilder from airflow.providers.fab.www.extensions.init_jinja_globals import init_jinja_globals from airflow.providers.fab.www.extensions.init_manifest_files import configure_manifest_files from airflow.providers.fab.www.extensions.init_security import init_api_auth @@ -94,7 +94,12 @@ def create_app(enable_plugins: bool): init_api_auth(flask_app) with flask_app.app_context(): - init_appbuilder(flask_app, enable_plugins=enable_plugins) + AirflowAppBuilder( + app=flask_app, + session=db.session, + base_template="airflow/main.html", + enable_plugins=enable_plugins, + ) init_error_handlers(flask_app) # In two scenarios a Flask application can be created: # - To support Airflow 2 plugins relying on Flask (``enable_plugins`` is True) diff --git a/providers/fab/www-hash.txt b/providers/fab/www-hash.txt index 418e86c7dda3a..47ac6b43c6cdc 100644 --- a/providers/fab/www-hash.txt +++ b/providers/fab/www-hash.txt @@ -1 +1 @@ -c45890ac6b17386adfb076a4baec17589a26aab189d6257a92138aaa720fbc7f +cc109e95a25c1bb018a85a6a40859234398d5a9ac5bf317197eed3e3ece64b0d