Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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"])

Expand All @@ -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(
Expand All @@ -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(
Expand All @@ -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
9 changes: 7 additions & 2 deletions providers/fab/src/airflow/providers/fab/www/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion providers/fab/www-hash.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
c45890ac6b17386adfb076a4baec17589a26aab189d6257a92138aaa720fbc7f
cc109e95a25c1bb018a85a6a40859234398d5a9ac5bf317197eed3e3ece64b0d
Loading