# 🔍 Guide de Diagnostic - Démarrage du Backend

## ⚠️ Problème : Le serveur semble démarrer mais le client ne peut pas se connecter

### 📋 Vérifications à effectuer

#### 1. Vérifier que le serveur a TERMINÉ son démarrage

Le serveur n'est **pas prêt** tant que vous ne voyez **PAS** ces messages dans les logs :

```
✅ Connexion à Keycloak réussie!
Listening on: http://localhost:8081
```

**Les logs que vous voyez actuellement** (scanning OpenAPI, certificats SSL, etc.) sont **normaux** mais indiquent que le serveur est **encore en train de démarrer**.

#### 2. Attendre la fin du démarrage

**Le démarrage peut prendre 30 secondes à 2 minutes** selon votre machine. Attendez de voir :

```
__  ____  __  _____   ___  __ ____  ______ 
 --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ 
 -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \   
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/   

2025-01-XX XX:XX:XX,XXX INFO  [io.quarkus] (main) lions-user-manager-server-impl-quarkus 1.0.0 on JVM (powered by Quarkus 3.15.1) started in X.XXXs. Listening on: http://localhost:8081
2025-01-XX XX:XX:XX,XXX INFO  [io.quarkus] (main) Profile dev activated. 
2025-01-XX XX:XX:XX,XXX INFO  [io.quarkus] (main) Installed features: [cdi, resteasy-reactive, resteasy-reactive-jackson, smallrye-context-propagation, smallrye-fault-tolerance, smallrye-health, smallrye-openapi, swagger-ui, vertx]
```

#### 3. Vérifier la connexion Keycloak

Après le démarrage, vous devriez voir :

```
========================================
Initialisation du client Keycloak Admin
========================================
Server URL: http://localhost:8180
Admin Realm: master
Admin Client ID: admin-cli
Admin Username: admin
Connection Pool Size: 5
Timeout: 30 secondes
✅ Connexion à Keycloak réussie!
```

**Si vous voyez une erreur ici**, c'est que Keycloak n'est pas accessible.

#### 4. Tester manuellement que le serveur répond

Une fois le serveur démarré, ouvrez un **nouveau terminal** et testez :

```bash
# Test 1: Health Check
curl http://localhost:8081/health

# Test 2: Swagger UI (ouvrir dans le navigateur)
# http://localhost:8081/q/swagger-ui

# Test 3: API Roles
curl "http://localhost:8081/api/roles/realm?realm=master"
```

#### 5. Vérifier que Keycloak est accessible

```bash
# Test Keycloak
curl http://localhost:8180/realms/master/.well-known/openid-configuration
```

**Si cette commande échoue**, Keycloak n'est pas démarré ou n'est pas accessible.

### 🐛 Problèmes courants

#### Problème 1 : Le serveur est bloqué sur "OIDC Dev Console: discovering..."

**Cause** : Quarkus essaie de découvrir le provider OIDC même si OIDC est désactivé.

**Solution** : J'ai ajouté dans `application-dev.properties` :
```properties
quarkus.oidc.enabled=false
quarkus.oidc.dev-ui.enabled=false
quarkus.oidc.discovery-enabled=false
```

**Action** : Redémarrer le serveur après cette modification.

#### Problème 2 : "Connection refused: localhost:8180"

**Cause** : Keycloak n'est pas démarré.

**Solution** : Démarrer Keycloak sur `http://localhost:8180` avec les identifiants `admin`/`admin`.

#### Problème 3 : Le serveur démarre mais ne répond pas sur le port 8081

**Cause** : Le port 8081 est peut-être déjà utilisé par un autre processus.

**Vérification** :
```bash
# Windows
netstat -ano | findstr :8081

# Si un processus utilise le port, notez le PID et arrêtez-le
taskkill /PID <PID> /F
```

#### Problème 4 : "Impossible de se connecter à Keycloak"

**Cause** : Les identifiants Keycloak sont incorrects ou Keycloak n'est pas accessible.

**Vérification** :
1. Vérifier que Keycloak est démarré : `curl http://localhost:8180/health`
2. Vérifier les identifiants dans `application-dev.properties` :
   ```
   lions.keycloak.server-url=http://localhost:8180
   lions.keycloak.admin-username=admin
   lions.keycloak.admin-password=admin
   ```

### ✅ Checklist de démarrage réussi

- [ ] Le serveur affiche "Listening on: http://localhost:8081"
- [ ] Le message "✅ Connexion à Keycloak réussie!" apparaît
- [ ] `curl http://localhost:8081/health` retourne une réponse
- [ ] `curl http://localhost:8180/realms/master/.well-known/openid-configuration` fonctionne
- [ ] Le client peut se connecter au backend

### 📝 Prochaines étapes

Une fois que le serveur a **complètement démarré** (avec le message "Listening on: http://localhost:8081"), vous pouvez :

1. Démarrer le client dans un autre terminal
2. Accéder à `http://localhost:8080/pages/user-manager/roles/list.xhtml`
3. Les rôles devraient se charger depuis Keycloak

### 🔄 Si le problème persiste

1. **Arrêter** le serveur (Ctrl+C)
2. **Vérifier** que Keycloak est démarré : `curl http://localhost:8180/health`
3. **Redémarrer** le serveur : `mvn quarkus:dev`
4. **Attendre** le message "Listening on: http://localhost:8081"
5. **Tester** : `curl http://localhost:8081/health`

