# Module Auto-Inscription (Suscribe) 📝

## Description

Le module **Auto-Inscription** permet aux visiteurs de créer eux-mêmes leur compte utilisateur sur le site ZwiiCampus. Le processus d'inscription inclut une validation par email et peut optionnellement nécessiter une approbation par un administrateur.

## 🔄 Workflow du processus d'inscription

### Scénario 1 : Sans approbation administrateur

```
1. 👤 Visiteur remplit le formulaire
   ↓
2. 📧 Email de confirmation envoyé
   ↓
3. ✅ Visiteur clique sur le lien dans l'email
   ↓
4. 🔐 Visiteur définit son mot de passe
   ↓
5. ✨ Compte activé automatiquement
   ↓
6. 🚀 L'utilisateur peut se connecter
```

### Scénario 2 : Avec approbation administrateur

```
1. 👤 Visiteur remplit le formulaire
   ↓
2. 📧 Email de confirmation envoyé au visiteur
   📨 Notification envoyée aux administrateurs
   ↓
3. ✅ Visiteur clique sur le lien dans l'email
   ↓
4. 🔐 Visiteur définit son mot de passe
   ↓
5. ⏳ Statut : En attente d'approbation
   ↓
6. 👨‍💼 Administrateur approuve l'inscription
   ↓
7. 📧 Email de validation envoyé au nouveau membre
   ↓
8. ✨ Compte activé
   ↓
9. 🚀 L'utilisateur peut se connecter
```

### ⚠️ Cas d'erreur

- **Lien expiré** : Si le visiteur ne clique pas sur le lien dans le délai configuré (2, 5 ou 10 minutes), il doit recommencer l'inscription
- **Domaine invalide** : Si l'email utilise un domaine non autorisé, l'inscription est refusée immédiatement
- **Email déjà utilisé** : Si l'email est déjà associé à un compte, l'inscription est refusée

## ✨ Fonctionnalités principales

### 📋 Processus d'inscription

1. **Formulaire de saisie** : Le visiteur remplit le formulaire avec ses informations (prénom, nom, identifiant/email, adresse électronique)
2. **Validation de l'email** : Un email de confirmation est envoyé avec un lien d'activation
3. **Création du mot de passe** : Après validation de l'email, l'utilisateur définit son mot de passe
4. **Approbation (optionnelle)** : Un administrateur peut approuver manuellement l'inscription
5. **Activation du compte** : Le compte devient actif et l'utilisateur peut se connecter

### 🔒 Sécurité

- ✅ Validation obligatoire de l'adresse email
- 🌐 Filtrage possible par domaines autorisés (ex: seulement les emails @ecole.fr)
- ⏱️ Délai de validité du lien de confirmation (2, 5 ou 10 minutes)
- 🔐 Double saisie du mot de passe pour confirmation
- 👨‍💼 Option d'approbation manuelle par un administrateur

## ⚙️ Configuration

### 📐 Paramètres généraux

#### 🎨 Disposition du formulaire

Choisissez le nombre d'éléments affichés par ligne :
- **Un élément par ligne** : Affichage vertical, idéal pour mobile 📱
- **Deux éléments par ligne** : Affichage en colonnes (avec 4 champs) 💻
- **Trois éléments par ligne** : Affichage compact (avec 3 champs) 🖥️
- **Quatre éléments par ligne** : Affichage très compact (avec 4 champs) 🖥️

#### 📏 Marges et largeur

- **Marge à gauche** : Décalage du formulaire (de 0 à 4 colonnes) ⬅️
- **Largeur du formulaire** : Largeur totale du conteneur (de 4 à 12 colonnes) ↔️

> **💡 Note** : La largeur maximale disponible est automatiquement ajustée en fonction de la marge gauche pour respecter la limite de 12 colonnes.

**Exemples de mise en page :**
- `offset0` + `col12` = Pleine largeur ⬛
- `offset2` + `col8` = Formulaire centré avec marges latérales ⬜⬛⬜
- `offset3` + `col6` = Formulaire étroit centré ⬜⬛⬜⬜

#### 🆔 Identifiant de connexion

- **Utiliser l'email comme identifiant** : Si activé, le champ "Identifiant de connexion" est masqué et l'adresse email sert d'identifiant de connexion (3 champs au lieu de 4) 📧

> **💡 Note** : Lorsque cette option est activée, les options de disposition disponibles sont automatiquement ajustées (1 ou 3 éléments par ligne).

#### 🔀 Redirections

- **Redirection après confirmation** : Page vers laquelle rediriger l'utilisateur après une inscription réussie ✅
- **Redirection après erreur** : Page vers laquelle rediriger l'utilisateur en cas d'erreur ❌

### 💬 Communication

#### 📧 Validation de l'email

- **Validité du lien** : Durée pendant laquelle le lien de confirmation reste valide (2, 5 ou 10 minutes) ⏱️
- **Domaines acceptés** : Liste des domaines d'email autorisés, séparés par des points-virgules (ex: `ecole.fr; universite.fr`). Laissez vide pour accepter tous les domaines. 🌐

#### 📝 Messages d'inscription

- **Message d'inscription** : Contenu de l'email envoyé lors de l'inscription initiale (avec le lien de validation) 📨
- **Message de validation** : Contenu de l'email envoyé après approbation par un administrateur ✅

### 👥 Gestion des inscriptions

#### ✋ Approbation manuelle

- **Approbation nécessaire** : Si activé, un administrateur doit approuver chaque nouvelle inscription avant que le compte ne soit activé 👨‍💼

#### 📋 Liste des inscriptions en attente

Accédez à la liste des inscriptions depuis le bouton **"Inscriptions"** dans la page de configuration. Vous pouvez :
- 👀 Voir le statut de chaque inscription (Email non confirmé, Email valide, En attente d'approbation, etc.)
- ✅ Approuver manuellement une inscription
- 🗑️ Supprimer une inscription en attente

## 📖 Utilisation

### 👨‍💼 Pour les administrateurs

1. 📦 **Installer le module** sur une page de votre site
2. ⚙️ **Configurer les paramètres** selon vos besoins (validation, approbation, domaines autorisés, etc.)
3. ✏️ **Personnaliser les messages** d'email envoyés aux utilisateurs
4. 📋 **Gérer les inscriptions** en attente depuis la page "Inscriptions"

### 👤 Pour les visiteurs

1. 🌐 **Accéder à la page** contenant le formulaire d'inscription
2. 📝 **Remplir le formulaire** avec les informations demandées
3. 📧 **Valider l'email** en cliquant sur le lien reçu par email
4. 🔐 **Définir le mot de passe** sur la page de validation
5. ⏳ **Attendre l'approbation** (si nécessaire) puis se connecter 🚀

## 📊 Statuts des inscriptions

- 📧 **Email non confirmé** : L'utilisateur n'a pas encore cliqué sur le lien de validation
- ✅ **Email valide** : L'email a été validé mais le mot de passe n'est pas encore défini
- ⏳ **Email valide, en attente de confirmation** : L'inscription est complète et attend l'approbation d'un administrateur
- ✨ **Email valide, compte activé** : Le compte est actif et l'utilisateur peut se connecter

## 🔔 Notifications

Le module envoie automatiquement des emails :
- 📧 **À l'utilisateur** : Lien de validation lors de l'inscription, confirmation après approbation
- 👨‍💼 **Aux administrateurs** : Notification lors de chaque nouvelle inscription

## 💡 Conseils d'utilisation

### 🎨 Disposition du formulaire

- Pour un **site mobile-first**, privilégiez "Un élément par ligne" 📱
- Pour un **site desktop**, "Deux éléments par ligne" offre un bon équilibre 💻
- Pour un **formulaire compact**, utilisez "Trois éléments par ligne" avec l'option email comme identifiant 🖥️

### 🔒 Sécurité

- 🛡️ **Activez l'approbation manuelle** pour les sites sensibles ou les inscriptions restreintes
- 🌐 **Limitez les domaines** acceptés si vous souhaitez restreindre l'accès à une organisation spécifique
- ⏱️ **Réduisez la validité du lien** (2 minutes) pour renforcer la sécurité

### 😊 Expérience utilisateur

- ✏️ **Personnalisez les messages** d'email pour qu'ils soient clairs et accueillants
- 🔀 **Configurez des redirections** pertinentes (page d'accueil, page de bienvenue, etc.)
- 🧪 **Testez le processus** complet avant de le mettre en production

## 🆘 Support technique

Pour toute question ou problème :
- 📚 Consultez la documentation de ZwiiCampus
- 💬 Visitez le forum communautaire
- 📧 Contactez le support technique

## 📄 Licence

Ce module fait partie de ZwiiCampus et est distribué sous licence GNU General Public License v3.0 ou ultérieure.

## 👥 Auteurs

- Frédéric Tempez <frederic.tempez@outlook.com>
- Copyright (C) 2026, Frédéric Tempez

## 🏷️ Version

Version actuelle : **3.00**

Consultez le fichier [changes.md](changes.md) pour l'historique complet des modifications.
