feat: Compte Maximus (Logto OAuth2) in desktop app #51

Closed
opened 2026-04-09 01:54:32 +00:00 by maximus · 0 comments
Owner

Contexte

Connexion optionnelle au Compte Maximus dans l'app desktop pour les features Premium.
Ref: spec-monetisation.md — Phase 2, Issue 6
Depends on #49
Dépendance externe : Logto déployé sur le VPS

Tâches

  • Ajouter tauri-plugin-deep-link pour le callback OAuth2 (simpl-resultat://auth/callback)
  • Config deep-link par plateforme : registre Windows, .desktop Linux — documenter les entrées requises dans tauri.conf.json et manifestes plateforme
  • Créer src-tauri/src/commands/auth_commands.rs :
    • start_oauth() -> Result<String, String> — génère PKCE, ouvre navigateur
    • handle_auth_callback(code) -> Result<AccountInfo, String> — échange code → tokens
    • refresh_auth_token() -> Result<AccountInfo, String>
    • get_account_info() -> Result<Option<AccountInfo>, String>
    • logout() -> Result<(), String> — supprime tokens
  • Stocker les tokens via OS keychain (crate keyring ou tauri-plugin-store avec keychain) — PAS de dérivation machine ID (CWE-321)
  • Créer src/hooks/useAuth.ts — hook useReducer (idle, authenticating, authenticated, refreshing, error)
  • Créer src/services/authService.ts
  • Créer src/components/settings/AccountCard.tsx
  • Clarifier le couplage get_edition() : si Premium, license_commands::get_edition() délègue à auth_commands pour détecter l'abonnement actif
  • Vérification périodique du statut abonnement (1x/jour au lancement, graceful si offline)
  • Grace period 7 jours si le refresh token échoue
  • Ajouter clés i18n account.*

Notes de révision

  • Tokens chiffrés via machine ID = faible entropie → utiliser OS keychain (review sécurité, CWE-321)
  • Config deep-link plateforme manquante dans le spec original (review technique)
  • Hook useAuth obligatoire (review architecture)
  • Couplage get_edition() entre modules à documenter (review architecture)
## Contexte Connexion optionnelle au Compte Maximus dans l'app desktop pour les features Premium. Ref: `spec-monetisation.md` — Phase 2, Issue 6 Depends on #49 Dépendance externe : Logto déployé sur le VPS ## Tâches - [ ] Ajouter `tauri-plugin-deep-link` pour le callback OAuth2 (`simpl-resultat://auth/callback`) - [ ] Config deep-link par plateforme : registre Windows, `.desktop` Linux — documenter les entrées requises dans `tauri.conf.json` et manifestes plateforme - [ ] Créer `src-tauri/src/commands/auth_commands.rs` : - `start_oauth() -> Result<String, String>` — génère PKCE, ouvre navigateur - `handle_auth_callback(code) -> Result<AccountInfo, String>` — échange code → tokens - `refresh_auth_token() -> Result<AccountInfo, String>` - `get_account_info() -> Result<Option<AccountInfo>, String>` - `logout() -> Result<(), String>` — supprime tokens - [ ] Stocker les tokens via OS keychain (crate `keyring` ou `tauri-plugin-store` avec keychain) — PAS de dérivation machine ID (CWE-321) - [ ] Créer `src/hooks/useAuth.ts` — hook useReducer (idle, authenticating, authenticated, refreshing, error) - [ ] Créer `src/services/authService.ts` - [ ] Créer `src/components/settings/AccountCard.tsx` - [ ] Clarifier le couplage `get_edition()` : si Premium, `license_commands::get_edition()` délègue à `auth_commands` pour détecter l'abonnement actif - [ ] Vérification périodique du statut abonnement (1x/jour au lancement, graceful si offline) - [ ] Grace period 7 jours si le refresh token échoue - [ ] Ajouter clés i18n `account.*` ## Notes de révision - Tokens chiffrés via machine ID = faible entropie → utiliser OS keychain (review sécurité, CWE-321) - Config deep-link plateforme manquante dans le spec original (review technique) - Hook `useAuth` obligatoire (review architecture) - Couplage `get_edition()` entre modules à documenter (review architecture)
maximus added this to the spec-monetisation milestone 2026-04-09 01:54:32 +00:00
maximus added the
status:ready
type:feature
source:human
labels 2026-04-09 01:54:32 +00:00
maximus added the
status:needs-fix
label 2026-04-10 18:23:51 +00:00
maximus added the
status:review
label 2026-04-10 18:43:35 +00:00
maximus removed the
status:review
label 2026-04-10 18:48:19 +00:00
maximus added the
status:review
label 2026-04-10 18:58:27 +00:00
maximus removed the
status:review
status:ready
labels 2026-04-10 19:00:23 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maximus/Simpl-Resultat#51
No description provided.