Skip to content

feat: Handle sudo password for application updates#23

Open
open-rcode[bot] wants to merge 1 commit intodevfrom
open-rcode-task-6894bc86ae9f8664fca7e043-1754578582965
Open

feat: Handle sudo password for application updates#23
open-rcode[bot] wants to merge 1 commit intodevfrom
open-rcode-task-6894bc86ae9f8664fca7e043-1754578582965

Conversation

@open-rcode
Copy link
Copy Markdown

@open-rcode open-rcode bot commented Aug 7, 2025

Implémentation terminée ✅

J'ai implémenté la solution pour demander le mot de passe sudo dans le frontend au lieu du terminal. Voici ce qui a été fait :

1. Backend (backend/update.go) :

  • Ajout d'une erreur spécifique ErrSudoRequired pour détecter quand sudo est nécessaire
  • Modification de PerformUpdate() pour retourner cette erreur au lieu d'exécuter sudo directement
  • Création de PerformUpdateWithPassword() qui utilise sudo -S pour passer le mot de passe de manière sécurisée

2. App Bridge (app.go) :

  • Modification de PerformUpdate() pour émettre un événement update:sudo-required quand sudo est requis
  • Ajout de PerformUpdateWithSudo() pour gérer la mise à jour avec le mot de passe

3. Frontend - Nouveau composant (SudoPasswordDialog.vue) :

  • Dialog modal avec champ de saisie sécurisé pour le mot de passe
  • Gestion des erreurs (mot de passe incorrect)
  • Effacement automatique du mot de passe après utilisation

4. Frontend - Mise à jour (UpdateDialog.vue) :

  • Intégration du nouveau dialog de mot de passe
  • Écoute de l'événement update:sudo-required
  • Gestion du flow complet avec réessai après saisie du mot de passe

Fonctionnement :

  1. L'utilisateur clique sur "Mettre à jour"
  2. Le téléchargement se fait normalement
  3. Si les permissions sont insuffisantes, un dialog s'ouvre pour demander le mot de passe
  4. Le mot de passe est envoyé au backend de manière sécurisée
  5. La mise à jour s'effectue avec sudo
  6. L'application redémarre automatiquement

La solution est sécurisée car :

  • Le mot de passe n'est jamais stocké
  • Il est transmis via stdin à sudo (méthode standard)
  • Le mot de passe est effacé de la mémoire après utilisation
  • L'utilisateur peut annuler à tout moment

🤖 This PR was created automatically by open-rcode after executing a Claude-powered task.

## Implémentation terminée ✅

J'ai implémenté la solution pour demander le mot de passe sudo dans le frontend au lieu du terminal. Voici ce qui a été fait :

### 1. **Backend (`backend/update.go`)** :
- Ajout d'une erreur spécifique `ErrSudoRequired` pour détecter quand sudo est nécessaire
- Modification de `PerformUpdate()` pour retourner cette erreur au lieu d'exécuter sudo directement
- Création de `PerformUpdateWithPassword()` qui utilise `sudo -S` pour passer le mot de passe de manière sécurisée

### 2. **App Bridge (`app.go`)** :
- Modification de `PerformUpdate()` pour émettre un événement `update:sudo-required` quand sudo est requis
- Ajout de `PerformUpdateWithSudo()` pour gérer la mise à jour avec le mot de passe

### 3. **Frontend - Nouveau composant (`SudoPasswordDialog.vue`)** :
- Dialog modal avec champ de saisie sécurisé pour le mot de passe
- Gestion des erreurs (mot de passe incorrect)
- Effacement automatique du mot de passe après utilisation

### 4. **Frontend - Mise à jour (`UpdateDialog.vue`)** :
- Intégration du nouveau dialog de mot de passe
- Écoute de l'événement `update:sudo-required`
- Gestion du flow complet avec réessai après saisie du mot de passe

### Fonctionnement :
1. L'utilisateur clique sur "Mettre à jour"
2. Le téléchargement se fait normalement
3. Si les permissions sont insuffisantes, un dialog s'ouvre pour demander le mot de passe
4. Le mot de passe est envoyé au backend de manière sécurisée
5. La mise à jour s'effectue avec sudo
6. L'application redémarre automatiquement

La solution est sécurisée car :
- Le mot de passe n'est jamais stocké
- Il est transmis via stdin à sudo (méthode standard)
- Le mot de passe est effacé de la mémoire après utilisation
- L'utilisateur peut annuler à tout moment

🤖 Generated with open-rcode automation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant