forked from yvv/decision
v3 : Décisions et « À venir » côté serveur
- ld-engine/pending : un module (article) reste à voter tant qu'aucune
version n'a été adoptée par un vote (seed a minima non confirmé, ou pas
de version en vigueur et au moins une version ouverte) ; les variantes
comptent pour un ; « sans ton vote » = aucun vote valide sur aucune version.
- overview.rs : GET /api/groups/{slug} ajoute « upcoming » (docs, mandats,
protocoles), lu au démarrage dans seeds/upcoming/<groupe>.json, trilingue,
servi seulement à qui ouvre le groupe ; GET /api/groups/{slug}/decisions,
une ligne par doc avec toVote et withoutMyVote (si la personne vote).
- Retour après connexion par défaut : « / » au lieu de « /groupes ».
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -237,7 +237,7 @@ fn safe_return(raw: Option<&str>) -> String {
|
||||
{
|
||||
p.to_owned()
|
||||
}
|
||||
_ => "/groupes".to_owned(),
|
||||
_ => "/".to_owned(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -577,12 +577,12 @@ mod tests {
|
||||
#[test]
|
||||
fn return_paths_stay_local() {
|
||||
assert_eq!(safe_return(Some("/g/monnaie-libre")), "/g/monnaie-libre");
|
||||
assert_eq!(safe_return(Some("//evil.example")), "/groupes");
|
||||
assert_eq!(safe_return(Some("https://evil.example")), "/groupes");
|
||||
assert_eq!(safe_return(Some("/\\evil")), "/groupes");
|
||||
assert_eq!(safe_return(Some("/\t/evil.example")), "/groupes");
|
||||
assert_eq!(safe_return(Some("/\n/evil.example")), "/groupes");
|
||||
assert_eq!(safe_return(None), "/groupes");
|
||||
assert_eq!(safe_return(Some("//evil.example")), "/");
|
||||
assert_eq!(safe_return(Some("https://evil.example")), "/");
|
||||
assert_eq!(safe_return(Some("/\\evil")), "/");
|
||||
assert_eq!(safe_return(Some("/\t/evil.example")), "/");
|
||||
assert_eq!(safe_return(Some("/\n/evil.example")), "/");
|
||||
assert_eq!(safe_return(None), "/");
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
||||
Reference in New Issue
Block a user