From 5aef6045208801e4e9c7ab0cca21c013c17b4fd2 Mon Sep 17 00:00:00 2001 From: Jordi Mas Date: Thu, 8 Oct 2026 07:28:02 +0200 Subject: [PATCH 1/2] fix: extend login session duration to seven days --- .env.example | 2 +- docs/usuaris_autenticacio.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 5c59594..be4c300 100644 --- a/.env.example +++ b/.env.example @@ -38,7 +38,7 @@ VERIFICATION_RESEND_COOLDOWN_SECONDS=60 # Same for the password reset email. PASSWORD_RESET_COOLDOWN_SECONDS=60 # Duration of the session (and cookie) in hours. -SESSION_TTL_HOURS=24 +SESSION_TTL_HOURS=168 # Name of the session cookie. COOKIE_NAME=session_token # Set to true in production behind HTTPS so the cookie is only sent over TLS. diff --git a/docs/usuaris_autenticacio.md b/docs/usuaris_autenticacio.md index 62db977..19aad43 100644 --- a/docs/usuaris_autenticacio.md +++ b/docs/usuaris_autenticacio.md @@ -370,7 +370,7 @@ La cookie de sessió que estableix el login té els atributs següents: - `HttpOnly` — inaccessible des de JavaScript, mitiga l'exfiltració via XSS. - `SameSite` — configurable amb `cookie_samesite` (`lax` per defecte). -- `max_age` — `session_ttl_hours × 3600`; a `.env.example` són 24 h. +- `max_age` — `session_ttl_hours × 3600`; a `.env.example` són 168 h (7 dies). - `Secure` — depèn de `cookie_secure`; a `.env.example` és `false` per a HTTP local. > ⚠️ **Producció:** cal establir `cookie_secure=true` perquè la cookie només viatgi per HTTPS. From 3ae378fd8b645b6e6e07f56251b0b553a57c446a Mon Sep 17 00:00:00 2001 From: Jordi Mas Date: Thu, 8 Oct 2026 07:36:14 +0200 Subject: [PATCH 2/2] feat: suggest GarbellaVeus after failed qualification --- frontend/README.md | 4 +++- frontend/src/components/QualificationView.tsx | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/frontend/README.md b/frontend/README.md index 8b87db5..eb13df3 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -18,7 +18,9 @@ Els usuaris sense acreditar accedeixen a `/qualification`: un sol formulari de deu preguntes amb tres opcions, dues per categoria i dues generals. Després de lliurar-lo, el formulari se substitueix pel total d'encerts i l'estat de superació, sense correccions ni desglossament per categoria. Permet repetir els intents -fallits i començar a avaluar quan se supera. +fallits i començar a avaluar quan se supera. Si no se supera, també ofereix +col·laborar a [GarbellaVeus](https://garbellaveus.softcatala.org/), escoltant +fragments d'àudio en català i valorant les transcripcions. Les preguntes i el llindar provenen del backend; l'acreditació queda desada a `users.qualified_at` i evita repetir la prova en sessions posteriors. diff --git a/frontend/src/components/QualificationView.tsx b/frontend/src/components/QualificationView.tsx index a21a069..a90f5b1 100644 --- a/frontend/src/components/QualificationView.tsx +++ b/frontend/src/components/QualificationView.tsx @@ -165,6 +165,18 @@ export default function QualificationView({

{result.score} encerts de {result.total}. Calen {result.min_correct} encerts.

+ {!result.passed && ( +

+ També podeu col·laborar amb Softcatalà en altres projectes que requereixen menys + coneixements lingüístics, com ara{" "} + + GarbellaVeus + + . Hi escolteu fragments curts d’àudio en català i valoreu si les transcripcions + reflecteixen el que s’hi diu. Les vostres valoracions ajuden a millorar la qualitat + de les dades per als sistemes de reconeixement de veu en català. +

+ )}