Intègre un chat IA capable de manipuler la scène via les mêmes fonctions que l'éditeur manuel (objets, variables, déclencheurs, images générées), avec conversations multiples par écran façon Claude. Corrige au passage le rafraîchissement pjax hors-ordre, l'onglet IA/déclencheurs vide après sélection d'un objet, la comparaison de booléens dans les conditions, et le blocage du glisser-déposer hors du cadre caméra après un redimensionnement de fond par l'IA. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
59 lines
2.9 KiB
Python
59 lines
2.9 KiB
Python
"""auth — comptes utilisateurs, connexion, 2FA (TOTP) et isolation par
|
|
utilisateur d'un SEUL projet (sauf le rôle "admin", illimité) — voir
|
|
create_user.py pour le détail des règles. Base SQLite entièrement séparée
|
|
de db/ (une base par JEU) : ces comptes n'appartiennent à aucun jeu, ils
|
|
en POSSÈDENT un (project_slug)."""
|
|
|
|
from .connection import users_db_path
|
|
from .ensure_schema import ensure_users_schema
|
|
from .is_first_user import is_first_user
|
|
from .create_user import create_user, UserCreationError
|
|
from .get_user_by_email import get_user_by_email
|
|
from .get_user_by_id import get_user_by_id
|
|
from .verify_password import verify_password
|
|
from .confirm_totp import confirm_totp
|
|
from .verify_totp import verify_totp
|
|
from .set_project_slug import set_project_slug
|
|
from .password_strength import password_strength, MIN_SCORE_REQUIRED
|
|
from .totp_qrcode_svg import totp_provisioning_uri, totp_qrcode_svg
|
|
from .rate_limit import lockout_minutes_for, seconds_locked_remaining, lockout_message
|
|
from .record_failed_attempt import record_failed_attempt
|
|
from .reset_failed_attempts import reset_failed_attempts
|
|
from .recovery_codes import generate_recovery_codes, verify_recovery_code
|
|
from .set_password import set_password
|
|
from .password_reset import (
|
|
create_password_reset_token, get_user_id_for_valid_token, consume_password_reset_token,
|
|
TOKEN_TTL_MINUTES,
|
|
)
|
|
from .send_email import send_password_reset_email, EmailNotConfiguredError
|
|
from .update_profile import update_profile
|
|
from .count_admins import count_admins
|
|
from .delete_user import delete_user
|
|
from .update_email import update_email, EmailUpdateError
|
|
from .ensure_user_assets_schema import ensure_user_assets_schema
|
|
from .user_assets_dir import user_assets_dir
|
|
from .create_user_asset import create_user_asset
|
|
from .list_user_assets import list_user_assets
|
|
from .get_user_asset import get_user_asset
|
|
from .delete_user_asset import delete_user_asset
|
|
from .save_user_asset import save_user_asset
|
|
|
|
__all__ = [
|
|
"users_db_path", "ensure_users_schema", "is_first_user",
|
|
"create_user", "UserCreationError",
|
|
"get_user_by_email", "get_user_by_id",
|
|
"verify_password", "confirm_totp", "verify_totp", "set_project_slug",
|
|
"password_strength", "MIN_SCORE_REQUIRED",
|
|
"totp_provisioning_uri", "totp_qrcode_svg",
|
|
"lockout_minutes_for", "seconds_locked_remaining", "lockout_message",
|
|
"record_failed_attempt", "reset_failed_attempts",
|
|
"generate_recovery_codes", "verify_recovery_code",
|
|
"set_password", "create_password_reset_token", "get_user_id_for_valid_token",
|
|
"consume_password_reset_token", "TOKEN_TTL_MINUTES",
|
|
"send_password_reset_email", "EmailNotConfiguredError",
|
|
"update_profile", "count_admins", "delete_user",
|
|
"update_email", "EmailUpdateError",
|
|
"ensure_user_assets_schema", "user_assets_dir", "create_user_asset",
|
|
"list_user_assets", "get_user_asset", "delete_user_asset", "save_user_asset",
|
|
]
|