feat: add MVC base, with auth to ldap
This commit is contained in:
42
controllers/auth.php
Normal file
42
controllers/auth.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
session_start();
|
||||
|
||||
require_once __DIR__ . '/../models/LDAPAuth.php';
|
||||
|
||||
class AuthController
|
||||
{
|
||||
private $auth_model;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->auth_model = new LDAPAuth();
|
||||
}
|
||||
|
||||
public function login()
|
||||
{
|
||||
if (isset($_POST['user_pseudo']) && isset($_POST['user_password'])) {
|
||||
$result = $this->auth_model->authenticate(
|
||||
$_POST['user_pseudo'],
|
||||
$_POST['user_password']
|
||||
);
|
||||
|
||||
if ($result['success']) {
|
||||
$_SESSION['login'] = true;
|
||||
$_SESSION['user_pseudo'] = $_POST['user_pseudo'];
|
||||
$_SESSION['is_admin'] = $result['is_admin'];
|
||||
$_SESSION['ldap_token'] = base64_encode($_POST['user_pseudo'] . ':' . $_POST['user_password']);
|
||||
header('Location: index.php');
|
||||
exit;
|
||||
} else {
|
||||
$error_message = 'Identifiants incorrects';
|
||||
require_once __DIR__ . '/views/auth.php';
|
||||
}
|
||||
} else {
|
||||
require_once __DIR__ . '/views/auth.php';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
session_start(); // Assure-toi que la session est bien démarrée
|
||||
$controller = new AuthController();
|
||||
$controller->login();
|
||||
60
controllers/controllerAdmin.php
Normal file
60
controllers/controllerAdmin.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
function listAllOU()
|
||||
{
|
||||
if (session_status() == PHP_SESSION_NONE) {
|
||||
session_start();
|
||||
}
|
||||
|
||||
// Vérifier si le token est présent dans la session
|
||||
if (!isset($_SESSION['ldap_token'])) {
|
||||
die("Token d'authentification manquant. Veuillez vous reconnecter.");
|
||||
}
|
||||
|
||||
$ldapconn = ldap_connect("ldap://intranet.epul3a.local")
|
||||
or die("Could not connect to LDAP server.");
|
||||
|
||||
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
|
||||
ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
|
||||
|
||||
// Décoder le token et extraire les informations
|
||||
$token = base64_decode($_SESSION['ldap_token']);
|
||||
if ($token === false) {
|
||||
die("Token d'authentification invalide.");
|
||||
}
|
||||
|
||||
list($ldap_user, $ldap_password) = explode(':', $token);
|
||||
if (count(explode(':', $token)) !== 2) {
|
||||
die("Format de token invalide.");
|
||||
}
|
||||
|
||||
$ldap_user = "CN=$ldap_user,CN=Users,DC=epul3a,DC=local";
|
||||
|
||||
if (!@ldap_bind($ldapconn, $ldap_user, $ldap_password)) {
|
||||
die("Could not bind to LDAP server: " . ldap_error($ldapconn));
|
||||
}
|
||||
|
||||
$searchBase = "DC=epul3a,DC=local";
|
||||
$filter = "(objectClass=organizationalUnit)";
|
||||
$attributes = array("ou", "distinguishedName");
|
||||
|
||||
$result = @ldap_search($ldapconn, $searchBase, $filter, $attributes);
|
||||
|
||||
if ($result) {
|
||||
$entries = ldap_get_entries($ldapconn, $result);
|
||||
echo "<h3>Liste des OUs:</h3>";
|
||||
if ($entries['count'] > 0) {
|
||||
foreach ($entries as $key => $entry) {
|
||||
if (is_numeric($key)) {
|
||||
echo "OU: " . $entry['ou'][0] . "<br>";
|
||||
echo "DN: " . $entry['distinguishedname'][0] . "<br><br>";
|
||||
}
|
||||
}
|
||||
} else {
|
||||
echo "Aucune OU trouvée.";
|
||||
}
|
||||
} else {
|
||||
echo "Error: " . ldap_error($ldapconn);
|
||||
}
|
||||
|
||||
ldap_close($ldapconn);
|
||||
}
|
||||
33
controllers/create_user.php
Normal file
33
controllers/create_user.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
session_start();
|
||||
|
||||
// Check if user is logged in and is admin
|
||||
if (!isset($_SESSION["login"]) || !$_SESSION["is_admin"]) {
|
||||
header("Location: ../index.php");
|
||||
exit;
|
||||
}
|
||||
|
||||
// Initialize form variables
|
||||
$nom = isset($_POST['nom']) ? $_POST['nom'] : '';
|
||||
$prenom = isset($_POST['prenom']) ? $_POST['prenom'] : '';
|
||||
$pseudo = isset($_POST['pseudo']) ? $_POST['pseudo'] : '';
|
||||
$email = isset($_POST['email']) ? $_POST['email'] : '';
|
||||
$password = isset($_POST['password']) ? $_POST['password'] : '';
|
||||
|
||||
// Display form
|
||||
echo "<h2>Création d'un utilisateur</h2>";
|
||||
echo "<form method=post>";
|
||||
echo "Nom <input type=text name=nom value='$nom' required><br>";
|
||||
echo "Prénom <input type=text name=prenom value='$prenom' required><br>";
|
||||
echo "Nom d'utilisateur <input type=text name=pseudo value='$pseudo' required><br>";
|
||||
echo "E-Mail <input type=text name=email value='$email' required><br>";
|
||||
echo "Mot de passe <input type=password name=password value='$password' required><br>";
|
||||
echo "Rôle dans l'OU <select name=role>";
|
||||
echo "<option value='user'>Utilisateur standard</option>";
|
||||
echo "<option value='admin'>Administrateur</option>";
|
||||
echo "</select><br>";
|
||||
echo "<input type=submit value='Créer'>";
|
||||
echo "</form>";
|
||||
|
||||
require_once 'controllerAdmin.php';
|
||||
listAllOU();
|
||||
Reference in New Issue
Block a user