Как хранить информацию о пользователе с помощью Continuum и Keycloak

У меня есть класс, в котором я пытаюсь сохранить историю изменений атрибутов. До сих пор мы использовали make_versioned(user_cls=None), и это работало в том смысле, что позже вы могли получить доступ к db_object.versions[i].user, однако это не тот пользователь, который внес изменения. Кажется, он берет пользователя только из отношений с базой данных.

Мы используем Keycloak для авторизации пользователей и имеем модель API для KeycloakToken (но без модели базы данных) с полным именем, именем пользователя и адресом электронной почты. Каким-то образом следует использовать имя пользователя из Keycloak, но просто.

Написание make_versioned(user_cls=KeycloakToken) дает

в транзакции sa.inspect(user_cls).primary_key[0].type, ^^^^^^^^^^^^^^^^^^^^^ Файл "/repo/foo/bar/.venv/lib/ python3.11/site-packages/sqlalchemy/inspection.py", строка 152, в проверке поднять exc.NoInspectionAvailable(sqlalchemy.exc.NoInspectionAvailable: система проверки недоступна для объекта типа <class 'pydantic.main.ModelMetaclass'>

И если я сделаю make_versioned(user_cls=User), это будет циклическая ошибка импорта.

Что мне здесь делать?

0 ответов

Другие вопросы по тегам