ajout et modifications de plusieurs pages liées à l'authentification
This commit is contained in:
parent
768461a962
commit
9a3cbdcb81
6 changed files with 232 additions and 10 deletions
63
controllers/auth_ctrl2.php
Normal file
63
controllers/auth_ctrl2.php
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
<?php
|
||||||
|
error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
|
||||||
|
ini_set('display_errors', 1);
|
||||||
|
|
||||||
|
|
||||||
|
function login_ctrl() {
|
||||||
|
$ask_route = null;
|
||||||
|
if (isset($_GET['ask'])) {
|
||||||
|
$ask_route = htmlentities($_GET['ask']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si le formulaire est soumis (POST), on vérifie, sinon on l'affiche
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||||
|
verify_login_ctrl($ask_route);
|
||||||
|
} else {
|
||||||
|
login_form_ctrl($ask_route);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function verify_login_ctrl(?string $route) {
|
||||||
|
|
||||||
|
require('models/user_crud.php');
|
||||||
|
require('config/config.php');
|
||||||
|
|
||||||
|
$login = isset($_POST['login']) ? htmlentities($_POST['login']) : '';
|
||||||
|
$passwd = isset($_POST['password']) ? htmlentities($_POST['password']) : '';
|
||||||
|
$user_data = recuperation_auth($connex, $login);
|
||||||
|
|
||||||
|
if ($user_data && $user_data['passwd'] === $passwd) {
|
||||||
|
|
||||||
|
$_SESSION['login'] = $user_data['login'];
|
||||||
|
$_SESSION['role'] = $user_data['type'];
|
||||||
|
|
||||||
|
// Redirection
|
||||||
|
header('Location: index.php?route=' . $route);
|
||||||
|
exit;
|
||||||
|
} else {
|
||||||
|
|
||||||
|
echo 'Authentication error !!!';
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contrôleur de déconnexion
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
function login_form_ctrl(?string $route) {
|
||||||
|
require('views/login_view.php');
|
||||||
|
login_form_view($route);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Authentication processing
|
||||||
|
*/
|
||||||
|
|
||||||
|
function logout_ctrl() {
|
||||||
|
unset($_SESSION);
|
||||||
|
session_destroy();
|
||||||
|
require('views/welcome_view.php');
|
||||||
|
}
|
||||||
|
|
||||||
26
controllers/auth_utilities.php
Normal file → Executable file
26
controllers/auth_utilities.php
Normal file → Executable file
|
|
@ -1,19 +1,31 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
// Vérifie si l'utilisateur est connecté
|
// True if user is logged (auth is right)
|
||||||
function is_logged() {
|
function is_logged() {
|
||||||
return isset($_SESSION['login']);
|
$status = false;
|
||||||
|
if (isset($_SESSION['login'])) {
|
||||||
|
$status = true;
|
||||||
|
}
|
||||||
|
return $status;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Vérifie si l'utilisateur a un rôle spécifique
|
// True if user has the role $role
|
||||||
function has_role(string $role) {
|
function has_role(string $role) {
|
||||||
return isset($_SESSION['role']) && $_SESSION['role'] == $role;
|
$status = false;
|
||||||
|
|
||||||
|
if (isset($_SESSION['role'])) {
|
||||||
|
if ($_SESSION['role'] == $role) {
|
||||||
|
$status = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $status;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Redirige vers l'authentification si l'utilisateur n'a pas les droits
|
|
||||||
function verify_grants(string $route, string $role = '') {
|
function verify_grants(string $route, string $role='') {
|
||||||
if (!has_role($role) && !($role == '' && is_logged())) {
|
if (! has_role($role) && ! ($role == '' && is_logged())) {
|
||||||
header('Location: index.php?route=auth&ask=' . $route);
|
header('Location: index.php?route=auth&ask=' . $route);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
// Nothing is done so process goes on
|
||||||
}
|
}
|
||||||
16
models/user_crud.php
Normal file
16
models/user_crud.php
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function recuperation_auth(PDO $connex, int $id):array {
|
||||||
|
require('config/config.php');
|
||||||
|
$req = "SELECT login, passwd, type FROM Utilisateur WHERE login = :login";
|
||||||
|
|
||||||
|
$prep = $connex->prepare($req);
|
||||||
|
$prep->bindValue(':id', $id);
|
||||||
|
$prep->execute();
|
||||||
|
$auth = $prep->fetch(PDO::FETCH_ASSOC);
|
||||||
|
$prep->closeCursor();
|
||||||
|
return $auth;
|
||||||
|
}
|
||||||
|
|
||||||
65
views/auth_ctrl.php
Executable file
65
views/auth_ctrl.php
Executable file
|
|
@ -0,0 +1,65 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auth controller
|
||||||
|
*/
|
||||||
|
function login_ctrl() {
|
||||||
|
$ask_route = null;
|
||||||
|
if (isset($_GET['ask'])) {
|
||||||
|
$ask_route = htmlentities($_GET['ask']);
|
||||||
|
}
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||||
|
verify_login_ctrl($ask_route);
|
||||||
|
} else {
|
||||||
|
login_form_ctrl($ask_route);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Authentication form display controller
|
||||||
|
*/
|
||||||
|
function login_form_ctrl(?string $route) {
|
||||||
|
require('views/login_view.php');
|
||||||
|
login_form_view($route);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Authentication processing
|
||||||
|
*/
|
||||||
|
function verify_login_ctrl(?string $route) {
|
||||||
|
// unexpected characters treatment with htmlentities() function
|
||||||
|
$login = htmlentities($_POST['login']);
|
||||||
|
$passwd = htmlentities($_POST['passwd']);
|
||||||
|
|
||||||
|
//Ce code est un exemple, en réalité l'authentification sera faite depuis une base ou annuaire LDAP en interrogeant le CRUD !
|
||||||
|
//Compte admin
|
||||||
|
if ($login == 'admin' && $passwd == 'admin') {
|
||||||
|
$_SESSION['login'] = $login;
|
||||||
|
$_SESSION['role'] = 'admin';
|
||||||
|
//On redirige vers la route demandée qui a provoqué la demande d'authentification
|
||||||
|
header('Location: index.php?route=' . $route);
|
||||||
|
//Compte etudiant
|
||||||
|
} elseif ($login == 'lecteur' && $passwd == 'lecteur') {
|
||||||
|
$_SESSION['login'] = $login;
|
||||||
|
$_SESSION['role'] = '';
|
||||||
|
//On redirige vers la route qui a provoqué la demande d'authentification
|
||||||
|
header('Location: index.php?route=' . $route);
|
||||||
|
} else {
|
||||||
|
echo 'Authentication error !!!';
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logout
|
||||||
|
*/
|
||||||
|
function logout_ctrl() {
|
||||||
|
unset($_SESSION);
|
||||||
|
session_destroy();
|
||||||
|
require('views/welcome_view.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
65
views/auth_ctrl.php~
Executable file
65
views/auth_ctrl.php~
Executable file
|
|
@ -0,0 +1,65 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auth controller
|
||||||
|
*/
|
||||||
|
function login_ctrl() {
|
||||||
|
$ask_route = null;
|
||||||
|
if (isset($_GET['ask'])) {
|
||||||
|
$ask_route = htmlentities($_GET['ask']);
|
||||||
|
}
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||||
|
verify_login_ctrl($ask_route);
|
||||||
|
} else {
|
||||||
|
login_form_ctrl($ask_route);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Authentication form display controller
|
||||||
|
*/
|
||||||
|
function login_form_ctrl(?string $route) {
|
||||||
|
require('views/login_view.php');
|
||||||
|
login_form_view($route);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Authentication processing
|
||||||
|
*/
|
||||||
|
function verify_login_ctrl(?string $route) {
|
||||||
|
// unexpected characters treatment with htmlentities() function
|
||||||
|
$login = htmlentities($_POST['login']);
|
||||||
|
$passwd = htmlentities($_POST['passwd']);
|
||||||
|
|
||||||
|
//Ce code est un exemple, en réalité l'authentification sera faite depuis une base ou annuaire LDAP en interrogeant le CRUD !
|
||||||
|
//Compte admin
|
||||||
|
if ($login == 'admin' && $passwd == 'admin') {
|
||||||
|
$_SESSION['login'] = $login;
|
||||||
|
$_SESSION['role'] = 'admin';
|
||||||
|
//On redirige vers la route demandée qui a provoqué la demande d'authentification
|
||||||
|
header('Location: index.php?route=' . $route);
|
||||||
|
//Compte etudiant
|
||||||
|
} elseif ($login == 'etudiant' && $passwd == 'etudiant') {
|
||||||
|
$_SESSION['login'] = $login;
|
||||||
|
$_SESSION['role'] = '';
|
||||||
|
//On redirige vers la route qui a provoqué la demande d'authentification
|
||||||
|
header('Location: index.php?route=' . $route);
|
||||||
|
} else {
|
||||||
|
echo 'Authentication error !!!';
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logout
|
||||||
|
*/
|
||||||
|
function logout_ctrl() {
|
||||||
|
unset($_SESSION);
|
||||||
|
session_destroy();
|
||||||
|
require('views/welcome_view.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
#ceci est la partie "view" de la page de login, le header et le footer ne sont pour l'instant pas actif
|
#ceci est la partie "view" de la page de login, le header et le footer ne sont pour l'instant pas actif
|
||||||
|
error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
|
||||||
|
ini_set('display_errors', 1);
|
||||||
|
|
||||||
function login_form_view(?string $route) {
|
function login_form_view(?string $route) {
|
||||||
#require('header.php');
|
#require('header.php');
|
||||||
|
|
@ -9,7 +10,7 @@ function login_form_view(?string $route) {
|
||||||
echo '<h2>Page d\'authentification</h2>';
|
echo '<h2>Page d\'authentification</h2>';
|
||||||
echo '<form action="index.php?route=auth&ask=' . $route . '" method="post">';
|
echo '<form action="index.php?route=auth&ask=' . $route . '" method="post">';
|
||||||
echo '<p>Login<input type="text" name="login" /></p>';
|
echo '<p>Login<input type="text" name="login" /></p>';
|
||||||
echo '<p>Mot de passe<input type="password" name="password" /></p>';
|
echo '<p>Mot de passe<input type="passwd" name="password" /></p>';
|
||||||
echo '<p><input type="submit" value="Valider" /></form>';
|
echo '<p><input type="submit" value="Valider" /></form>';
|
||||||
|
|
||||||
#require('footer.php');
|
#require('footer.php');
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue