66 lines
2.3 KiB
PHP
66 lines
2.3 KiB
PHP
<?php
|
|
require_once __DIR__ . '/../models/LDAPAuth.php';
|
|
|
|
if (session_status() == PHP_SESSION_NONE) {
|
|
session_start();
|
|
}
|
|
|
|
// Vérifier les permissions
|
|
if (!isset($_SESSION["login"]) || !$_SESSION["is_admin"]) {
|
|
header('Location: ../auth.php');
|
|
exit;
|
|
}
|
|
|
|
// Récupérer les données de la session et du formulaire
|
|
$admin_username = $_SESSION['sAMAccountName']; // sAMAccountName de l'admin connecté
|
|
$ou_dn = $_POST['ou_dn']; // OU cible pour la création
|
|
$role = $_POST['role']; // Rôle de l'utilisateur
|
|
|
|
$crypted_password = iconv('UTF-8', 'UTF-16LE', '"' . $_POST['password'] . '"');
|
|
|
|
// Récupérer les attributs du nouvel utilisateur depuis le formulaire
|
|
$entry = [
|
|
'objectClass' => ['top', 'person', 'organizationalPerson', 'user'],
|
|
'cn' => $_POST['username'],
|
|
'givenName' => $_POST['firstname'],
|
|
'sn' => $_POST['lastname'],
|
|
'mail' => $_POST['email'],
|
|
'sAMAccountName' => $_POST['username'],
|
|
'userAccountControl' => '512', // Activer le compte
|
|
'displayName' => $_POST['firstname'] . ' ' . $_POST['lastname'],
|
|
'userPrincipalName' => $_POST['username'] . '@epul3a.local',
|
|
'unicodePwd' => $crypted_password
|
|
];
|
|
|
|
// Vérifier que l'admin a les droits sur l'OU cible
|
|
$ldapAuth = new LDAPAuth();
|
|
if (!in_array($ou_dn, $_SESSION['admin_ous'])) {
|
|
die("Accès non autorisé");
|
|
}
|
|
|
|
// Tenter la création
|
|
try {
|
|
$user_dn = "CN=" . $_POST['username'] . "," . $ou_dn;
|
|
if ($ldapAuth->addUserWithAdminAuth($user_dn, $entry, $admin_username, $_SESSION['password'])) {
|
|
// Ajouter l'utilisateur au groupe d'administration si nécessaire
|
|
if ($role === 'admin') {
|
|
$group_dn = '';
|
|
if ($ou_dn === 'OU=3AFISA,DC=epul3a,DC=local') {
|
|
$group_dn = 'CN=Domain Admins,CN=Users,DC=epul3a,DC=local';
|
|
} elseif ($ou_dn === 'CN=Users,DC=epul3a,DC=local') {
|
|
$group_dn = 'CN=Enterprise Admins,CN=Users,DC=epul3a,DC=local';
|
|
}
|
|
|
|
if (!empty($group_dn)) {
|
|
$ldapAuth->addUserToGroup($user_dn, $group_dn, $admin_username, $_SESSION['password']);
|
|
}
|
|
}
|
|
|
|
header("Location: ../views/list_users.php?ou=" . urlencode($ou_dn));
|
|
} else {
|
|
die("Erreur lors de la création.");
|
|
}
|
|
} catch (Exception $e) {
|
|
die("Erreur : " . $e->getMessage());
|
|
}
|