From fdf8f1e550600ca08fcabd2f910d5d70fb2c7374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89loi=20Rivard?= Date: Wed, 8 Jan 2025 16:53:07 +0100 Subject: [PATCH] fix: SQL backend password scheme loading Use Backend.instance instead of flask.current_app, so it allows the backend to be loaded independently from the Flask context. --- canaille/backends/sql/models.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/canaille/backends/sql/models.py b/canaille/backends/sql/models.py index 8fd627a6..42d98192 100644 --- a/canaille/backends/sql/models.py +++ b/canaille/backends/sql/models.py @@ -20,6 +20,7 @@ from sqlalchemy_utils import force_auto_coercion import canaille.core.models import canaille.oidc.models +from canaille.backends import Backend from canaille.backends.models import BackendModel from .backend import Base @@ -63,6 +64,13 @@ membership_association_table = Table( class User(canaille.core.models.User, Base, SqlAlchemyModel): __tablename__ = "user" + @staticmethod + def default_password_arguments(**kwargs): + return dict( + schemes=Backend.instance.config["CANAILLE_SQL"]["PASSWORD_SCHEMES"], + **kwargs, + ) + id: Mapped[str] = mapped_column( String, primary_key=True, default=lambda: str(uuid.uuid4()) ) @@ -75,9 +83,7 @@ class User(canaille.core.models.User, Base, SqlAlchemyModel): user_name: Mapped[str] = mapped_column(String, unique=True, nullable=False) password: Mapped[str] = mapped_column( PasswordType( - onload=lambda **kwargs: dict( - schemes=current_app.config["CANAILLE_SQL"]["PASSWORD_SCHEMES"], **kwargs - ), + onload=default_password_arguments, ), nullable=True, )