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');
|
||||
}
|
||||
|
||||
28
controllers/auth_utilities.php
Normal file → Executable file
28
controllers/auth_utilities.php
Normal file → Executable file
|
|
@ -1,19 +1,31 @@
|
|||
<?php
|
||||
|
||||
// Vérifie si l'utilisateur est connecté
|
||||
// True if user is logged (auth is right)
|
||||
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) {
|
||||
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 = '') {
|
||||
if (!has_role($role) && !($role == '' && is_logged())) {
|
||||
|
||||
function verify_grants(string $route, string $role='') {
|
||||
if (! has_role($role) && ! ($role == '' && is_logged())) {
|
||||
header('Location: index.php?route=auth&ask=' . $route);
|
||||
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
|
||||
#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) {
|
||||
#require('header.php');
|
||||
|
|
@ -9,7 +10,7 @@ function login_form_view(?string $route) {
|
|||
echo '<h2>Page d\'authentification</h2>';
|
||||
echo '<form action="index.php?route=auth&ask=' . $route . '" method="post">';
|
||||
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>';
|
||||
|
||||
#require('footer.php');
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue