# Guide : Configuration Application Password WordPress

**Date** : 10 février 2026
**Objectif** : Authentification **permanente** et **sans maintenance** pour la publication WordPress

---

## 🎯 **Qu'est-ce que Application Password ?**

**Application Password** est un système d'authentification natif WordPress (disponible depuis WP 5.6+) qui permet de créer des **tokens permanents** pour applications tierces.

### **Avantages vs OAuth2**

| Critère | OAuth2 (Actuel) | Application Password |
|---------|----------------|---------------------|
| **Expiration** | Oui (3-6 mois) | ❌ **Jamais** |
| **Maintenance** | Réautorisation périodique | ✅ Zéro |
| **Dépendance admin** | Oui | ❌ Non |
| **Transparence utilisateur** | Moyenne | ✅ **Totale** |
| **Setup** | Complexe (Client ID, Secret, Redirects) | ✅ Simple (Username + Password) |

---

## 📋 **Prérequis WordPress**

- WordPress **5.6+** (Application Passwords natif)
- Utilisateur WordPress avec droits de **publication**
- Accès au **profil utilisateur** WordPress

---

## 🔧 **Configuration Étape par Étape**

### **Étape 1 : Créer l'Application Password sur WordPress**

1. **Se connecter à WordPress** avec un compte ayant les droits de publication
2. **Aller dans** : `Profil Utilisateur → Application Passwords`
   - URL directe : `https://votre-site.com/wp-admin/profile.php#application-passwords-section`
3. **Nom de l'application** : Saisir `Ibiza1IA` (ou un nom reconnaissable)
4. **Cliquer sur** : `Add New Application Password`
5. **Copier le password généré** : Format `xxxx xxxx xxxx xxxx xxxx xxxx` (24 caractères + espaces)

⚠️ **ATTENTION** : Le password n'est affiché **qu'une seule fois** ! Copiez-le immédiatement.

---

### **Étape 2 : Configurer dans AI.biza (Global Settings)**

1. **Ouvrir** : [global-settings.html](../global-settings.html)
2. **Section** : `Connecteurs WordPress`
3. **Sélectionner votre marque** ou **créer un nouveau connecteur**
4. **Remplir les champs** :
   - **Brand Name** : Nom de votre marque (ex: `Ibiza 1 Radio`)
   - **Site URL** : URL complète WordPress (ex: `https://ibiza1radio.com`)
   - **Auth Method** : Sélectionner `Application Password` ⭐
   - **Username** : Votre login WordPress (ex: `admin`)
   - **Application Password** : Coller le password copié à l'étape 1

5. **Cliquer sur** : `Sauvegarder`
6. **Tester la connexion** : Bouton `Tester la connexion`

✅ Si le test réussit → Configuration terminée !

---

## 🎉 **Résultat**

À partir de maintenant :

- ✅ **Connexion permanente** : Plus jamais d'expiration
- ✅ **Transparence totale** : Tous les utilisateurs (user/manager/admin) peuvent publier
- ✅ **Zéro maintenance** : Aucune intervention admin requise
- ✅ **Aucune réautorisation** : Configuration unique et définitive

---

## 🔒 **Sécurité**

### **Comment révoquer l'accès ?**

Si tu veux bloquer AI.biza, c'est simple :

1. **Aller dans WordPress** : `Profil Utilisateur → Application Passwords`
2. **Cliquer sur** : `Revoke` à côté de `Ibiza1IA`
3. **C'est fait** : L'application ne peut plus publier

### **Stockage sécurisé**

- Le password est **chiffré** en base de données (`appPassword_encrypted`)
- Utilise le service `encryption.service.js` (AES-256)
- Jamais stocké en clair

---

## 🆚 **Comparaison des 3 Modes d'Authentification**

| Mode | Expiration | Complexité | Recommandé ? |
|------|------------|------------|--------------|
| **Application Password** | ♾️ Jamais | ⭐ Simple | ✅ **OUI** |
| **OAuth2** | ⏰ 3-6 mois | ⭐⭐⭐ Complexe | Seulement si imposé |
| **Basic Auth** | ♾️ Jamais | ⭐ Simple | ❌ Déprécié (non sécurisé) |

---

## 🛠️ **Migration OAuth2 → Application Password**

Si tu as déjà un connecteur OAuth2 et veux migrer :

1. **Créer l'Application Password** sur WordPress (Étape 1 ci-dessus)
2. **Dans Global Settings** :
   - Ouvrir le connecteur existant
   - **Changer** `Auth Method` de `OAuth2` vers `Application Password`
   - **Remplir** `Username` et `Application Password`
   - **Sauvegarder**
3. **Tester la connexion**
4. **C'est tout** ! Les anciennes credentials OAuth2 ne seront plus utilisées

---

## 🐛 **Dépannage**

### **Erreur : "Username manquant pour Application Password"**

**Cause** : Le champ `Username` est vide
**Solution** : Remplir le champ `Username` avec ton login WordPress

### **Erreur 401/403 lors du test**

**Causes possibles** :
1. Application Password mal copié (espaces en trop/en moins)
2. Username incorrect
3. Utilisateur WordPress n'a pas les droits de publication

**Solution** :
1. Régénérer un nouveau Application Password sur WordPress
2. Vérifier que le username est correct (case sensitive)
3. Vérifier les droits utilisateur (doit être au minimum `Author`)

### **Le password a été révoqué par erreur**

**Solution** :
1. Créer un nouveau Application Password sur WordPress
2. Mettre à jour dans Global Settings
3. Tester la connexion

---

## 📊 **Architecture Technique**

### **Flux d'authentification**

```
Frontend (wordpress-writer.html)
         │
         ▼
Backend (wordpress.controller.js)
         │
         ▼
   getAuthCredentials()
         │
    ┌────┴────┐
    │         │
    ▼         ▼
App Pass   OAuth2
(Basic)   (Bearer)
    │         │
    └────┬────┘
         │
         ▼
   WordPress API
  (wp-json/wp/v2/*)
```

### **Ordre de priorité d'authentification**

1. **Application Password** (si `authMethod === 'app_password'`)
2. **OAuth2** (si `authMethod === 'oauth2'`)
3. **Basic Auth** (si `authMethod === 'basic'` - déprécié)

---

## 💡 **Bonnes Pratiques**

1. ✅ **Créer un utilisateur WordPress dédié** : Créer un compte `ibiza1ia-bot` avec droits `Author`
2. ✅ **Nom explicite** : Utiliser un nom comme `Ibiza1IA - Production` pour l'Application Password
3. ✅ **Documenter** : Noter quelque part (Excel, doc interne) que tu as créé ce token
4. ✅ **Tester régulièrement** : Vérifier de temps en temps que la connexion fonctionne (bouton `Tester`)
5. ❌ **Ne PAS partager** : Le password donne accès complet à la publication

---

## 📚 **Références**

- [Documentation officielle WordPress Application Passwords](https://make.wordpress.org/core/2020/11/05/application-passwords-integration-guide/)
- [Code source : globalConfig.model.js](../backend/models/globalConfig.model.js) (ligne 55-67)
- [Code source : wordpress.controller.js](../backend/controllers/wordpress.controller.js) (ligne 201-267)

---

## ✅ **Checklist de Migration**

- [ ] WordPress 5.6+ installé
- [ ] Application Password créé sur WordPress
- [ ] Username + Password saisis dans Global Settings
- [ ] `Auth Method` = `Application Password`
- [ ] Test de connexion réussi
- [ ] Publication test effectuée
- [ ] Ancien OAuth2 désactivé (optionnel)

---

**🎉 Félicitations ! Tu as maintenant une authentification WordPress permanente et sans maintenance !**
