# Configuration des Ports - Lions User Manager

## ✅ Problème résolu : Conflit de ports

**Problème initial** : Les deux applications (frontend et backend) étaient configurées sur le **même port 8081**, ce qui empêchait le backend de démarrer.

**Solution** : Ports correctement séparés.

## 🌐 Configuration des Ports

### Frontend (Interface Web JSF/PrimeFaces)
- **Port** : `8080`
- **URL** : http://localhost:8080
- **Type** : Application web avec OIDC activé
- **Fichier** : `lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/application.properties`

```properties
quarkus.http.port=8080
```

### Backend (API REST)
- **Port** : `8081`
- **URL** : http://localhost:8081
- **Type** : API REST (pas de pages web)
- **Fichier** : `lions-user-manager-server-impl-quarkus/src/main/resources/application.properties`

```properties
quarkus.http.port=8081
```

### Keycloak (Serveur d'authentification)
- **Port** : `8180`
- **URL** : http://localhost:8180
- **Admin Console** : http://localhost:8180/admin
- **Credentials** : admin / admin

## 🚀 Démarrage des applications

### 1. Démarrer Keycloak (si nécessaire)
```bash
# Vérifier si Keycloak tourne
curl http://localhost:8180/health

# Si Keycloak ne tourne pas, le démarrer (exemple avec Docker)
docker run -p 8180:8080 \
  -e KEYCLOAK_ADMIN=admin \
  -e KEYCLOAK_ADMIN_PASSWORD=admin \
  quay.io/keycloak/keycloak:latest start-dev
```

### 2. Démarrer le Backend (port 8081)
```bash
cd lions-user-manager-server-impl-quarkus
mvn clean quarkus:dev
```

**Vérification** :
```bash
# Swagger UI
curl http://localhost:8081/q/swagger-ui

# Dev UI
curl http://localhost:8081/q/dev

# Health Check
curl http://localhost:8081/q/health
```

### 3. Démarrer le Frontend (port 8080)
```bash
cd lions-user-manager-client-quarkus-primefaces-freya
mvn clean quarkus:dev
```

**Vérification** :
```bash
# Page d'accueil
curl http://localhost:8080

# Ou ouvrir dans le navigateur
http://localhost:8080
```

## 📋 Architecture

```
┌─────────────────────────────────────────────┐
│          Navigateur Web                     │
└────────────┬────────────────────────────────┘
             │
             │ 1. Accès à http://localhost:8080
             │
             ▼
┌─────────────────────────────────────────────┐
│  FRONTEND (Port 8080)                       │
│  - Pages web JSF/PrimeFaces                 │
│  - OIDC activé                              │
│  - Redirige vers Keycloak pour login        │
└────────────┬────────────────────────────────┘
             │
             │ 2. Appelle l'API backend
             │    http://localhost:8081/api/*
             │
             ▼
┌─────────────────────────────────────────────┐
│  BACKEND (Port 8081)                        │
│  - API REST                                 │
│  - OIDC désactivé (utilise Admin API)       │
│  - Endpoints: /api/users, /api/roles, etc.  │
└────────────┬────────────────────────────────┘
             │
             │ 3. Gère les utilisateurs via Admin API
             │
             ▼
┌─────────────────────────────────────────────┐
│  KEYCLOAK (Port 8180)                       │
│  - Realm: lions-user-manager                │
│  - Client: lions-user-manager-client        │
│  - Admin API                                │
└─────────────────────────────────────────────┘
```

## 🔧 Flux d'authentification

1. **Utilisateur accède au frontend** : http://localhost:8080
2. **Frontend redirige vers Keycloak** : http://localhost:8180/realms/lions-user-manager
3. **Utilisateur se connecte** : testuser / test123
4. **Keycloak retourne un token**
5. **Frontend est authentifié** et peut appeler le backend
6. **Backend utilise Admin API** pour gérer Keycloak (admin/admin)

## ❌ Ce qui NE fonctionnera PAS

### ❌ http://localhost:8081 (racine du backend)
**Erreur** : Forbidden ou 404

**Raison** : Le backend est une API REST, il n'a pas de page d'accueil HTML.

**Solution** : Utilisez plutôt :
- http://localhost:8081/q/swagger-ui (interface graphique API)
- http://localhost:8081/q/dev (console dev Quarkus)
- http://localhost:8081/api/users?realm=lions-user-manager (endpoint API)

### ❌ http://localhost:8080/api/users
**Erreur** : 404

**Raison** : Les API sont sur le backend (port 8081), pas le frontend (8080).

**Solution** : http://localhost:8081/api/users?realm=lions-user-manager

## ✅ URLs correctes

### Frontend (8080)
- **Accueil** : http://localhost:8080
- **Login** : Automatiquement redirigé vers Keycloak
- **Pages protégées** : http://localhost:8080/pages/user-manager/users/list.xhtml

### Backend (8081)
- **Swagger UI** : http://localhost:8081/q/swagger-ui
- **Dev UI** : http://localhost:8081/q/dev
- **Health Check** : http://localhost:8081/q/health
- **API Users** : http://localhost:8081/api/users?realm=lions-user-manager
- **API Roles** : http://localhost:8081/api/roles/realm?realm=lions-user-manager

### Keycloak (8180)
- **Admin Console** : http://localhost:8180/admin
- **Account Console** : http://localhost:8180/realms/lions-user-manager/account

## 🔍 Diagnostic

### Le frontend ne démarre pas
```bash
# Vérifier qu'aucun processus n'utilise le port 8080
netstat -ano | findstr :8080

# Logs du frontend
cd lions-user-manager-client-quarkus-primefaces-freya
mvn quarkus:dev
```

### Le backend ne démarre pas
```bash
# Vérifier qu'aucun processus n'utilise le port 8081
netstat -ano | findstr :8081

# Logs du backend
cd lions-user-manager-server-impl-quarkus
mvn quarkus:dev
```

### Keycloak n'est pas accessible
```bash
# Vérifier le statut
curl http://localhost:8180/health

# Redémarrer si nécessaire
```

## 📝 Credentials

- **Keycloak Admin** : admin / admin
- **Utilisateur de test** : testuser / test123
- **Realm** : lions-user-manager
- **Client ID** : lions-user-manager-client
- **Client Secret** : client-secret-lions-2025

---

**Important** : Toujours démarrer dans cet ordre :
1. Keycloak (8180)
2. Backend (8081)
3. Frontend (8080)
