Files
formation-manager-itinova/drizzle/meta/_journal.json
Manus 6484e3e892 Checkpoint: Ajout de l'authentification formateur et upload logo/signature pour attestations
## Authentification formateur
- Ajout du rôle "formateur" dans l'enum de la table users
- Ajout du champ formateurId pour lier un compte à un formateur
- Mise à jour de l'interface AdminUsers avec sélection du formateur
- Redirection automatique selon le rôle (admin → /admin, formateur → /formateur)
- Badges et filtres mis à jour pour inclure le rôle formateur

## Upload logo et signature
- Création du composant ImageUpload.tsx avec prévisualisation
- Création de l'endpoint /api/upload-image avec multer pour l'upload vers S3
- Intégration dans AdminAttestations.tsx
- Modification du service PDF pour inclure le logo (en haut à droite) et la signature (en bas)
- Mise à jour des procédures tRPC pour accepter logoUrl, logoS3Key, signatureUrl, signatureS3Key
2026-01-07 10:34:53 -05:00

202 lines
4.0 KiB
JSON

{
"version": "7",
"dialect": "mysql",
"entries": [
{
"idx": 0,
"version": "5",
"when": 1762953852020,
"tag": "0000_charming_grey_gargoyle",
"breakpoints": true
},
{
"idx": 1,
"version": "5",
"when": 1762953926304,
"tag": "0001_smooth_warbird",
"breakpoints": true
},
{
"idx": 2,
"version": "5",
"when": 1762957612797,
"tag": "0002_fuzzy_sugar_man",
"breakpoints": true
},
{
"idx": 3,
"version": "5",
"when": 1762958719297,
"tag": "0003_steady_mystique",
"breakpoints": true
},
{
"idx": 4,
"version": "5",
"when": 1763047968048,
"tag": "0004_futuristic_malice",
"breakpoints": true
},
{
"idx": 5,
"version": "5",
"when": 1763050409917,
"tag": "0005_cuddly_bushwacker",
"breakpoints": true
},
{
"idx": 6,
"version": "5",
"when": 1763412717239,
"tag": "0006_lame_madrox",
"breakpoints": true
},
{
"idx": 7,
"version": "5",
"when": 1763414014386,
"tag": "0007_awesome_genesis",
"breakpoints": true
},
{
"idx": 8,
"version": "5",
"when": 1763416801277,
"tag": "0008_jittery_fenris",
"breakpoints": true
},
{
"idx": 9,
"version": "5",
"when": 1763448844826,
"tag": "0009_polite_senator_kelly",
"breakpoints": true
},
{
"idx": 10,
"version": "5",
"when": 1763628773882,
"tag": "0010_aspiring_kitty_pryde",
"breakpoints": true
},
{
"idx": 11,
"version": "5",
"when": 1763630439521,
"tag": "0011_natural_cyclops",
"breakpoints": true
},
{
"idx": 12,
"version": "5",
"when": 1763737191050,
"tag": "0012_dapper_ronan",
"breakpoints": true
},
{
"idx": 13,
"version": "5",
"when": 1763927796862,
"tag": "0013_demonic_trish_tilby",
"breakpoints": true
},
{
"idx": 14,
"version": "5",
"when": 1763933695050,
"tag": "0014_calm_thanos",
"breakpoints": true
},
{
"idx": 15,
"version": "5",
"when": 1764056078540,
"tag": "0015_young_moonstone",
"breakpoints": true
},
{
"idx": 16,
"version": "5",
"when": 1764329348207,
"tag": "0016_romantic_sinister_six",
"breakpoints": true
},
{
"idx": 17,
"version": "5",
"when": 1764540514199,
"tag": "0017_unique_skrulls",
"breakpoints": true
},
{
"idx": 18,
"version": "5",
"when": 1764934995109,
"tag": "0018_smooth_purifiers",
"breakpoints": true
},
{
"idx": 19,
"version": "5",
"when": 1765143202063,
"tag": "0019_unknown_nomad",
"breakpoints": true
},
{
"idx": 20,
"version": "5",
"when": 1765180630803,
"tag": "0020_large_rocket_raccoon",
"breakpoints": true
},
{
"idx": 21,
"version": "5",
"when": 1765183092631,
"tag": "0021_equal_the_fallen",
"breakpoints": true
},
{
"idx": 22,
"version": "5",
"when": 1765828479906,
"tag": "0022_closed_lucky_pierre",
"breakpoints": true
},
{
"idx": 23,
"version": "5",
"when": 1765830109012,
"tag": "0023_jittery_gorgon",
"breakpoints": true
},
{
"idx": 24,
"version": "5",
"when": 1767770858914,
"tag": "0024_panoramic_goliath",
"breakpoints": true
},
{
"idx": 25,
"version": "5",
"when": 1767795835957,
"tag": "0025_curious_wrecker",
"breakpoints": true
},
{
"idx": 26,
"version": "5",
"when": 1767798385842,
"tag": "0026_panoramic_king_bedlam",
"breakpoints": true
},
{
"idx": 27,
"version": "5",
"when": 1767799408213,
"tag": "0027_naive_jackal",
"breakpoints": true
}
]
}