feat: Handle sudo password for application updates#23
Open
open-rcode[bot] wants to merge 1 commit intodevfrom
Open
feat: Handle sudo password for application updates#23open-rcode[bot] wants to merge 1 commit intodevfrom
open-rcode[bot] wants to merge 1 commit intodevfrom
Conversation
## 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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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) :ErrSudoRequiredpour détecter quand sudo est nécessairePerformUpdate()pour retourner cette erreur au lieu d'exécuter sudo directementPerformUpdateWithPassword()qui utilisesudo -Spour passer le mot de passe de manière sécurisée2. App Bridge (
app.go) :PerformUpdate()pour émettre un événementupdate:sudo-requiredquand sudo est requisPerformUpdateWithSudo()pour gérer la mise à jour avec le mot de passe3. Frontend - Nouveau composant (
SudoPasswordDialog.vue) :4. Frontend - Mise à jour (
UpdateDialog.vue) :update:sudo-requiredFonctionnement :
La solution est sécurisée car :
🤖 This PR was created automatically by open-rcode after executing a Claude-powered task.