+
[ ALERTE ] : {error}
)}
-
-
-
- Aucun accès réseau ?
S'enregistrer >
+
+ Aucun accès réseau ?{' '}
+
+ S'enregistrer >
diff --git a/src/pages/public/Register.jsx b/src/pages/public/Register.jsx
index 8022bd9..5f8ced0 100644
--- a/src/pages/public/Register.jsx
+++ b/src/pages/public/Register.jsx
@@ -3,9 +3,6 @@ import { useNavigate, Link } from 'react-router-dom';
import { registerUnifiedClient } from '../../services/api';
import NotificationModal from '../../components/ui/NotificationModal';
-// ============================================================================
-// COMPOSANT PRINCIPAL : REGISTER
-// ============================================================================
export default function Register() {
const [firstName, setFirstName] = useState('');
const [lastName, setLastName] = useState('');
@@ -15,7 +12,7 @@ export default function Register() {
const [confirmPassword, setConfirmPassword] = useState('');
const [loading, setLoading] = useState(false);
- const [customAlert, setCustomAlert] = useState(null); // Remplace l'état "error" et "alert()"
+ const [customAlert, setCustomAlert] = useState(null);
const navigate = useNavigate();
const handleRegister = async (e) => {
@@ -23,119 +20,81 @@ export default function Register() {
setCustomAlert(null);
const passwordPolicy = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/;
-
- // VÉRIFICATIONS FRONTEND (Affiche le Modal d'Erreur)
if (!passwordPolicy.test(password)) {
setCustomAlert({ type: 'error', title: 'Sécurité compromise', message: "Le mot de passe doit contenir 8 caractères min, une majuscule, une minuscule, un chiffre et un caractère spécial." });
return;
}
-
if (password !== confirmPassword) {
- setCustomAlert({ type: 'error', title: 'Erreur de saisie', message: "Les clés d'accès (mots de passe) ne correspondent pas." });
+ setCustomAlert({ type: 'error', title: 'Erreur de saisie', message: "Les clés d'accès ne correspondent pas." });
return;
}
-
- const validUsername = /^[a-zA-Z0-9]{3,12}$/.test(username);
- if (!validUsername) {
- setCustomAlert({ type: 'error', title: 'Identifiant invalide', message: "Le nom d'utilisateur doit contenir uniquement des lettres ou chiffres (entre 3 et 12 caractères, sans espace)." });
+ if (!/^[a-zA-Z0-9]{3,12}$/.test(username)) {
+ setCustomAlert({ type: 'error', title: 'Identifiant invalide', message: "Le nom d'utilisateur doit contenir uniquement des lettres ou chiffres (entre 3 et 12 caractères)." });
return;
}
setLoading(true);
-
try {
- // API BACKEND
await registerUnifiedClient(email, username, password, firstName, lastName);
-
- // SUCCÈS (Affiche le Modal de Succès)
- setCustomAlert({
- type: 'success',
- title: 'PROVISIONNEMENT RÉUSSI',
- message: "Vos comptes FOSSBilling, HestiaCP et Nextcloud ont été initialisés.\n\nVous pouvez maintenant vous connecter à l'infrastructure."
- });
-
+ setCustomAlert({ type: 'success', title: 'PROVISIONNEMENT RÉUSSI', message: "Vos comptes FOSSBilling, HestiaCP et Nextcloud ont été initialisés.\n\nVous pouvez maintenant vous connecter." });
} catch (err) {
- // ERREUR API (Affiche le Modal d'Erreur API)
- setCustomAlert({ type: 'error', title: 'Échec du Déploiement', message: err.message || "Échec de l'initialisation de l'infrastructure." });
+ setCustomAlert({ type: 'error', title: 'Échec du Déploiement', message: err.message || "Échec de l'initialisation." });
} finally {
setLoading(false);
}
};
- // Fermeture du Modal : Redirige vers le Login SI c'était un succès
const handleCloseModal = () => {
- if (customAlert?.type === 'success') {
- navigate('/login');
- } else {
- setCustomAlert(null);
- }
- };
-
- // Styles
- const inputStyle = {
- width: '100%', padding: '10px', marginBottom: '15px',
- backgroundColor: '#1A1A1A', color: '#00E5FF',
- border: '1px solid #333', fontFamily: 'monospace', outline: 'none',
- boxSizing: 'border-box'
- };
-
- const buttonStyle = {
- width: '100%', padding: '12px', backgroundColor: loading ? '#333' : '#00E5FF',
- color: loading ? '#888' : '#000', border: 'none', cursor: loading ? 'not-allowed' : 'pointer',
- fontFamily: 'monospace', fontWeight: 'bold', textTransform: 'uppercase', letterSpacing: '1px',
- marginTop: '10px'
+ if (customAlert?.type === 'success') navigate('/login');
+ else setCustomAlert(null);
};
return (
-
-
-
+
+
+
Créer un accès réseau
-
- [ INITIALISATION DU PROVISIONNEMENT TRIPLE EN CASCADE ]
+
+ [ INITIALISATION DU PROVISIONNEMENT TRIPLE ]
-