# 🎯 Guide Complet - Système de Modules avec Profils

## 🚀 Nouvelles Fonctionnalités Implémentées

### **✅ 1. Affichage Séparé des Modules**
- **Modules Actifs** : En haut, colorés et cliquables
- **Modules Inactifs** : En bas, grisés avec séparateur visuel
- **Compteurs** : Nombre de modules par section
- **Animations** : Effets visuels différenciés

### **✅ 2. Système de Connexion par Module**
- **Interface dédiée** pour chaque module
- **Profils spécifiques** selon le type de module
- **Bases de données séparées** par module
- **Permissions granulaires** par profil

### **✅ 3. Gestion des Profils par Module**
- **Profils prédéfinis** pour chaque type de module
- **Permissions automatiques** selon le profil
- **Connexions sécurisées** avec mots de passe optionnels
- **Sessions distinctes** par module

## 🎨 Interface Utilisateur

### **Tableau de Bord Principal**
```
┌─ MODULES ACTIFS (3) ────────────────┐
│ ✅ Comptabilité  ✅ RH  ✅ Stock    │
│ [Colorés, animations au survol]     │
└────────────────────────────────────┘

═══ Modules en attente d'activation ═══

┌─ MODULES NON ACTIVÉS (6) ──────────┐
│ ⏸️ Projets  ⏸️ SMS  ⏸️ Hôtel      │
│ [Grisés, motif rayé, non cliquables]│
└────────────────────────────────────┘
```

### **Page de Connexion Module**
```
┌──────────────────────────────────────┐
│  🏢 Ressources Humaines et Paie     │
│                                      │
│  👤 Sélectionnez votre profil :     │
│                                      │
│  ○ Administrateur RH                 │
│  ○ Manager RH                        │
│  ○ Gestionnaire de Paie             │
│  ○ Assistant RH                      │
│                                      │
│  🔒 Mot de passe module (optionnel) │
│  [____________________]              │
│                                      │
│  🔑 Se connecter au module          │
└──────────────────────────────────────┘
```

## 🔧 Configuration des Modules

### **Types de Modules et Profils**

#### **1. Comptabilité Générale**
```php
'comptabilite_generale' => [
    'database' => 'comptabilite',
    'profils' => [
        'admin_compta' => 'Administrateur Comptabilité',
        'comptable' => 'Comptable',
        'assistant_compta' => 'Assistant Comptable',
        'auditeur' => 'Auditeur (Lecture seule)'
    ]
]
```

#### **2. Ressources Humaines**
```php
'rh_paie' => [
    'database' => 'rh_paie',
    'profils' => [
        'admin_rh' => 'Administrateur RH',
        'manager_rh' => 'Manager RH',
        'gestionnaire_paie' => 'Gestionnaire de Paie',
        'assistant_rh' => 'Assistant RH'
    ]
]
```

#### **3. Gestion de Stock**
```php
'stock_vente' => [
    'database' => 'stock_vente',
    'profils' => [
        'admin_stock' => 'Administrateur Stock',
        'vendeur' => 'Vendeur',
        'magasinier' => 'Magasinier',
        'caissier' => 'Caissier'
    ]
]
```

## 🛡️ Système de Permissions

### **Permissions par Type de Profil**

| Profil | Lecture | Écriture | Suppression | Administration |
|--------|---------|----------|-------------|----------------|
| admin_* | ✅ | ✅ | ✅ | ✅ |
| manager_* | ✅ | ✅ | ❌ | ❌ |
| gestionnaire_* | ✅ | ✅ | ❌ | ❌ |
| assistant_* | ✅ | ✅ | ❌ | ❌ |
| *_lecture | ✅ | ❌ | ❌ | ❌ |

### **Vérification des Permissions**
```php
// Dans vos modules
if (hasPermission('lecture')) {
    // Afficher les données
}

if (hasPermission('ecriture')) {
    // Permettre la modification
}

if (hasPermission('suppression')) {
    // Afficher les options de suppression
}

if (hasPermission('administration')) {
    // Panel d'administration
}
```

## 🔄 Flux de Connexion

### **1. Utilisateur clique sur module actif**
```
Tableau de bord → module_connect.php → Interface profils
```

### **2. Sélection du profil**
```
Choix profil → Vérification permissions → Connexion base module
```

### **3. Accès au module**
```
Session module créée → Redirection vers module → Interface sécurisée
```

## 💾 Structure des Bases de Données

### **Base Principale (comptabilite)**
```sql
-- Tables de gestion globale
users                    -- Utilisateurs ERP
modules                  -- Configuration modules
user_module_access      -- Droits d'accès globaux
user_sessions           -- Sessions ERP
```

### **Bases par Module**
```sql
-- Exemple pour RH (base: rh_paie)
rh_users                -- Profils utilisateurs dans le module
rh_employees            -- Données métier du module
rh_contracts            -- Tables spécifiques au module
rh_payroll              -- etc.
```

## 🎯 Intégration dans vos Modules

### **1. Vérification de Connexion**
```php
<?php
session_start();
$code_module = 'rh_paie'; // Votre module

// Vérifier la connexion au module
if (!isset($_SESSION['module_' . $code_module]['connected'])) {
    header('Location: ../module_connect.php?module=' . $code_module);
    exit();
}

// Récupérer les infos de session
$module_session = $_SESSION['module_' . $code_module];
$profil_module = $module_session['profil'];
$permissions = $module_session['permissions'];
$database_module = $module_session['database'];
?>
```

### **2. Connexion Base Module**
```php
// Connexion à la base spécifique du module
$module_pdo = new PDO(
    "mysql:host=localhost;dbname=" . $database_module,
    "root", "password",
    [PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"]
);
```

### **3. Interface Conditionnelle**
```php
<!-- Fonctionnalité selon permissions -->
<?php if (hasPermission('lecture')): ?>
    <div class="feature-accessible">
        <button onclick="loadData()">Consulter</button>
    </div>
<?php else: ?>
    <div class="feature-restricted">
        <i class="fas fa-lock"></i> Permission requise
    </div>
<?php endif; ?>
```

## 🎨 Styles et Animations

### **CSS pour Modules Actifs/Inactifs**
```css
/* Modules actifs */
.modules-active .module-card {
    border: 2px solid #e8f4fd;
    background: linear-gradient(135deg, #ffffff 0%, #f8fcff 100%);
}

.module-active:hover {
    transform: translateY(-10px);
    box-shadow: 0 15px 40px rgba(102, 126, 234, 0.2);
}

/* Modules inactifs */
.modules-inactive .module-card {
    opacity: 0.6;
    cursor: not-allowed;
    background: #f5f5f5;
}

.module-inactive::after {
    content: '';
    background: repeating-linear-gradient(45deg, 
        transparent, transparent 10px,
        rgba(255,255,255,0.3) 10px, rgba(255,255,255,0.3) 20px
    );
}
```

## 🚀 URLs et Navigation

### **URLs Principales**
- **Installation :** `http://localhost/saadikERP_secured/install.php`
- **Connexion ERP :** `http://localhost/saadikERP_secured/app/auth/login.php`
- **Tableau de bord :** `http://localhost/saadikERP_secured/app/index.php`
- **Connexion module :** `http://localhost/saadikERP_secured/app/module_connect.php?module=CODE_MODULE`
- **Exemple module :** `http://localhost/saadikERP_secured/app/modules/exemple_module.php`

### **Navigation Utilisateur**
```
1. Connexion ERP (admin/password)
2. Tableau de bord → Modules séparés actifs/inactifs
3. Clic module actif → Interface connexion module
4. Sélection profil → Connexion avec permissions
5. Interface module sécurisée
```

## 🔧 Personnalisation

### **Ajouter un Nouveau Module**
```sql
-- 1. Ajouter en base
INSERT INTO modules (code_module, nom_module, description, url_module, icone) 
VALUES ('mon_module', 'Mon Module', 'Description', 'modules/mon_module', 'img/icon.png');
```

```php
// 2. Configuration profils (module_connect.php)
'mon_module' => [
    'database' => 'ma_base',
    'profils' => [
        'admin_module' => 'Administrateur',
        'utilisateur' => 'Utilisateur'
    ]
]
```

### **Modifier les Permissions**
```php
// Dans module_connect.php, fonction de création des permissions
$permissions = [
    'lecture' => true,
    'ecriture' => in_array($profil_module, ['admin_module', 'manager']),
    'suppression' => strpos($profil_module, 'admin_') === 0,
    'administration' => $profil_module === 'admin_module'
];
```

## 🐛 Dépannage

### **Module ne s'affiche pas**
1. Vérifier que le module est `actif = 1` en base
2. Vérifier les droits d'accès de l'utilisateur
3. Contrôler les erreurs PHP dans les logs

### **Erreur de connexion module**
1. Vérifier que la base de données du module existe
2. Contrôler les paramètres de connexion
3. Vérifier les permissions MySQL

### **Profil non reconnu**
1. Vérifier la configuration dans `module_connect.php`
2. Contrôler la table `{prefix}_users` du module
3. Vérifier les sessions PHP

---

🎉 **Votre système de modules avec profils est opérationnel !**

*Interface moderne • Séparation visuelle • Profils granulaires • Sécurité renforcée*
