{lien_connexion} devient un lien permanent (réutilisable, sans expiration,
signé HMAC, rien de stocké) au lieu d'un lien magique de 30 min à usage
unique ou d'un simple lien vers le site. Compte bénévole créé à l'envoi
s'il manque ; révocation par « Renouveler le lien de connexion » sur la
fiche (Account.login_link_version, migration 0031) ; jamais pour la
coordination.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
32 lines
874 B
Python
32 lines
874 B
Python
"""Lien de connexion permanent
|
|
|
|
Revision ID: 0031_account_login_link_version
|
|
Revises: 0030_assignment_attendance
|
|
Create Date: 2026-10-28
|
|
|
|
`account.login_link_version` : version du lien de connexion permanent du
|
|
récapitulatif de planning (`app/auth/permanent_link.py`) — l'incrémenter
|
|
révoque tous les liens déjà envoyés à ce compte.
|
|
"""
|
|
|
|
from collections.abc import Sequence
|
|
|
|
import sqlalchemy as sa
|
|
from alembic import op
|
|
|
|
revision: str = "0031_account_login_link_version"
|
|
down_revision: str | None = "0030_assignment_attendance"
|
|
branch_labels: str | Sequence[str] | None = None
|
|
depends_on: str | Sequence[str] | None = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.add_column(
|
|
"account",
|
|
sa.Column("login_link_version", sa.Integer(), nullable=False, server_default="0"),
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_column("account", "login_link_version")
|