fixed merge conflicts

visitor-controller
Nicolas FRANCO 2 years ago
commit 4516560c70

@ -0,0 +1,33 @@
<?php
class Validation {
static function val_form_texte(&$texte, &$TMessage) {
if (!isset($texte)||$texte=="") {
$TMessage[] ="Empty fields";
$texte="";
}
if ($texte != filter_var($texte, FILTER_SANITIZE_STRING))
{
$TMessage[]="Attempt to inject code (security attack)";
$texte="";
}
}
static function val_form_mdp(&$mdp, &$TMessage) {
if (!isset($mdp)||$mdp=="") {
$TMessage[] ="Password not specified";
$mdp="";
}
if ($mdp != filter_var($mdp, FILTER_SANITIZE_SPECIAL_CHARS))
{
$TMessage[] ="Password must not contain special characters";
$mdp="";
}
}
}
?>

@ -3,8 +3,17 @@
$rep=__DIR__.'/../'; $rep=__DIR__.'/../';
$con = new Connection('mysql:host=localhost;dbname=phpproject', 'nifranco', 'achanger'); //$con = new Connection('mysql:host=localhost;dbname=phpproject', 'nifranco', 'achanger');
//$con = new Connection('mysql:host=localhost;dbname=dbanboudoul', 'anboudoul', 'mdpMYSQL'); $con = new Connection('mysql:host=localhost;dbname=dbanboudoul', 'anboudoul', 'mdpMYSQL');
$TMessage = array(); $TMessage = array();
$TabVues = array();
$TabVues["erreur"] = "view/erreur.php";
$TabVues["home"] = "view/home.php";
$TabVues["connection"] = "view/connection.php";
$TabVues["register"] = "view/register.php";
$TabVues["newList"] = "view/newList.php";
$TabVues["liste"] = "view/liste.php";
?> ?>

@ -1,4 +1,5 @@
<?php <?php
require_once("config/config.php");
require("model/UserModel.php"); require("model/UserModel.php");
class FrontCtrl class FrontCtrl
@ -6,23 +7,22 @@ class FrontCtrl
private UserModel $usrMdl; private UserModel $usrMdl;
private $action_User; private $action_User;
private bool $isUser; private bool $isUser;
private $TabVues;
function __construct(&$con){ function __construct(&$con, $TabVues){
session_start(); session_start();
$this->TabVues = $TabVues;
$this->usrMdl = new UserModel($con); $this->usrMdl = new UserModel($con);
$this->action_User = array('deconnexion','loadListePriv','newListPrivate'); $this->action_User = array('deconnexion','loadListePriv','newListPrivate');
try{ try{
$this->isUser = $this->usrMdl->isConnected(); // cette fonction retourne quoi? $this->isUser = $this->usrMdl->isConnected(); // cette fonction retourne quoi?
if(isset($_REQUEST['action'])) $action = $_REQUEST['action'] ?? null;
$action = $_REQUEST['action'];
else
$action = null;
if(($i = array_search($action,$this->action_User)) !== false){ # si action dans la liste d'actions user if(($i = array_search($action,$this->action_User)) !== false){ # si action dans la liste d'actions user
if(!$this->isUser){ # si pas conncter if(!$this->isUser){ # si pas conncter
# appel controlleur visiteur avec action connecter # appel controlleur visiteur avec action connecter
require("VisitorCtrl.php"); require("VisitorCtrl.php");
$visitCtrl = new VisitorCtrl($con); $visitCtrl = new VisitorCtrl($con, $this->TabVues);
$visitCtrl->goconnexion(); $visitCtrl->goconnexion();
} else { # sinon } else { # sinon
# handle action avec controlleur user # handle action avec controlleur user
@ -33,10 +33,10 @@ class FrontCtrl
} else { # sinon forcement action visiteur } else { # sinon forcement action visiteur
# appel controlleur visiteur avec l'action # appel controlleur visiteur avec l'action
require("VisitorCtrl.php"); require("VisitorCtrl.php");
$visitCtrl = new VisitorCtrl($con,$this->isUser); $visitCtrl = new VisitorCtrl($con, $this->TabVues, $this->isUser);
} }
} catch (Exception $e){ // verifier si catch bon } catch (Exception $e){ // verifier si catch bon
require("../view/erreur.php"); require($this->TabVues["erreur"]);
} }
} }
} }

@ -7,32 +7,38 @@ class UserCtrl
private $con; private $con;
private $taskModel; private $taskModel;
private $userModel; private $userModel;
private $TabVues;
public function __construct(Connection $con){ public function __construct(Connection $con, $TabVues){
$this->TabVues = $TabVues;
$this->con = $con; $this->con = $con;
$this->userModel = new UserModel($this->con); $this->userModel = new UserModel($this->con);
$this->taskModel = new TaskModel($this->con); $this->taskModel = new TaskModel($this->con);
// try{ try{
// $action=$_REQUEST['action']; $action=$_REQUEST['action'];
// switch($action){ switch($action){
// // voir les listes privees // voir les listes privees
// case 'voirListePriv': case 'voirListePriv':
// $this->loadListePriv(); $this->loadListePriv();
// break; break;
// // ajouter une liste privee // ajouter une liste privee
// case 'creerListePriv': case 'creerListePriv':
// $this->newListPrivate(); $this->newListPrivate();
// break; break;
// case 'deconnecter': case 'deconnecter':
// $this->deconnexion(); $this->deconnexion();
// break; break;
default:
$TMessage[] = 'Unexpected error';
require($this->TabVues["erreur"]);
break;
// } }
// } catch(Exception $e) { } catch(Exception $e) {
// require("../view/erreur.php"); require($this->TabVues["erreur"]);
// } }
} }
public function loadListePriv(){ public function loadListePriv(){
@ -40,7 +46,7 @@ class UserCtrl
// $TabList[] = new ListTask(0, "Projet PHP"); // $TabList[] = new ListTask(0, "Projet PHP");
// $TabList[] = new ListTask(1, "Projet Blazor"); // $TabList[] = new ListTask(1, "Projet Blazor");
$TabList = $this->taskModel->loadPrivateLists($_SESSION['login']); $TabList = $this->taskModel->loadPrivateLists($_SESSION['login']);
require("../view/liste.php"); require($this->TabVues["liste"]);
} }
public function newListPrivate(){ public function newListPrivate(){
@ -52,7 +58,7 @@ class UserCtrl
function loadHome(){ function loadHome(){
$user = false; $user = false;
$public_lists = $this->taskModel->loadPublicLists(); $public_lists = $this->taskModel->loadPublicLists();
require("../view/home.php"); require($this->TabVues["home"]);
} }
public function deconnexion(){ public function deconnexion(){

@ -1,12 +1,15 @@
<?php <?php
require("model/TaskModel.php"); require("model/TaskModel.php");
class VisitorCtrl class VisitorCtrl
{ {
private $taskModel; private $taskModel;
private $userModel; private $userModel;
private $isUser; private $isUser;
private $TabVues;
function __construct($con,$isUser){ function __construct($con, $TabVues, $isUser){
$this->TabVues = $TabVues;
$this->isUser = $isUser; $this->isUser = $isUser;
$dvueErreur = array(); $dvueErreur = array();
$this->taskModel = new TaskModel($con); $this->taskModel = new TaskModel($con);
@ -71,24 +74,24 @@ class VisitorCtrl
default: default:
# #
$dvueErreur[] = 'Erreur inattendue'; $TMessage[] = 'Unexpected error';
require($rep.$vues['']); require($this->TabVues["erreur"]);
break; break;
} }
} catch (Exception $e) { } catch (Exception $e) {
require("view/erreur.php"); require($this->TabVues["erreur"]);
} }
} }
function loadHome(){ function loadHome(){
$public_lists = $this->taskModel->loadPublicLists(); $public_lists = $this->taskModel->loadPublicLists();
$user = $this->isUser; $user = $this->isUser;
require("view/home.php"); require($this->TabVues["home"]);
} }
function go_connection(){ function go_connection(){
$user = $this->isUser; $user = $this->isUser;
require("view/connection.php"); require($this->TabVues["connection"]);
} }
function connection(){ function connection(){
@ -98,7 +101,7 @@ class VisitorCtrl
function go_register(){ function go_register(){
$user = $this->isUser; $user = $this->isUser;
require("view/register.php"); require($this->TabVues["register"]);
} }
function register(){ function register(){
@ -107,7 +110,6 @@ class VisitorCtrl
function go_list(){ function go_list(){
$user = $this->isUser; $user = $this->isUser;
$dataVue['newList'] = null;
require("view/newList.php"); require("view/newList.php");
} }

@ -1,8 +1,9 @@
<?php <?php
require_once("config/config.php"); require("config/config.php");
require('config/Validation.php');
require("view/erreur.php");
require_once("controller/FrontCtrl.php"); require_once("controller/FrontCtrl.php");
//var_dump($_GET);
$fc = new FrontCtrl($con);
$fc = new FrontCtrl($con, $TabVues);
?> ?>

@ -43,6 +43,7 @@ class TaskModel
/* LIST FUNCTIONS */ /* LIST FUNCTIONS */
public function addList($nom,$owner="",$dc=0,$id=0) public function addList($nom,$owner="",$dc=0,$id=0)
{ {
Validation::val_form_texte($owner, $TMessage);
$l = new ListTask($nom,$owner,$dc); $l = new ListTask($nom,$owner,$dc);
$this->gtw->insertL($l); $this->gtw->insertL($l);
// retourne quoi? con->lastInsertId() ?? // retourne quoi? con->lastInsertId() ??

@ -1,6 +1,8 @@
<?php <?php
require('business/User.php'); require('business/User.php');
require('dal/UserGateway.php'); require('dal/UserGateway.php');
require_once("config/config.php");
class UserModel{ class UserModel{
private $con; private $con;
private $gat; private $gat;
@ -11,12 +13,14 @@
} }
function connexion($login, $mdp){ function connexion($login, $mdp){
Validation::val_form_texte($login, $TMessage);
Validation::val_form_mdp($mdp, $TMessage);
$result = $this->gat->findUser($login, $mdp); $result = $this->gat->findUser($login, $mdp);
if(!isset($result)) echo 'not set works'; if(!isset($result)) echo 'not set works';
// if (isset($result)) else
// { {
// $_SESSION['login'] = $result; $_SESSION['login'] = $result;
// } }
} }
function deconnexion(){ function deconnexion(){
@ -26,6 +30,7 @@
} }
function isConnected(){ //teste rôle dans la session, retourne instance dobjet ou booleen function isConnected(){ //teste rôle dans la session, retourne instance dobjet ou booleen
Validation::val_form_texte($_SESSION['login'], $TMessage);
if(isset($_SESSION['login'])){ if(isset($_SESSION['login'])){
return true; return true;
} else { } else {
@ -34,20 +39,26 @@
} }
function ajouter($login, $mdp){ function ajouter($login, $mdp){
Validation::val_form_texte($login, $TMessage);
Validation::val_form_mdp($mdp, $TMessage);
$user = $this->findByLogin($login); $user = $this->findByLogin($login);
if (empty($user)) if (empty($user))
$this->gat->create($login, $mdp); $this->gat->create($login, $mdp);
} }
function supprimer($login){ function supprimer($login){
Validation::val_form_texte($login, $TMessage);
$this->gat->delete($login); $this->gat->delete($login);
} }
function modifMdp($login, $mdp){ function modifMdp($login, $mdp){
Validation::val_form_texte($login, $TMessage);
Validation::val_form_mdp($mdp, $TMessage);
$this->gat->updateMdp($login, $mdp); $this->gat->updateMdp($login, $mdp);
} }
function findByLogin($login){ function findByLogin($login){
Validation::val_form_texte($login, $TMessage);
$user = null; $user = null;
if ($login !== " " && $login != null ) if ($login !== " " && $login != null )
{ {
@ -60,6 +71,8 @@
} }
function modifLogin($oldLogin, $newLogin){ function modifLogin($oldLogin, $newLogin){
Validation::val_form_texte($oldLogin, $TMessage);
Validation::val_form_texte($newLogin, $TMessage);
$user = $this->findByLogin($oldLogin); $user = $this->findByLogin($oldLogin);
if (empty($user)) if (empty($user))
$this->gat->updateLogin($oldLogin, $newLogin); $this->gat->updateLogin($oldLogin, $newLogin);

@ -0,0 +1,74 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="description" content="" />
<meta name="author" content="" />
<!-- Core theme CSS (includes Bootstrap)-->
<link href="../view/css/home.css" rel="stylesheet" />
</head>
<body>
<div class="d-flex" id="wrapper">
<!-- Sidebar-->
<div class="border-end bg-white" id="sidebar-wrapper">
<div class="sidebar-heading border-bottom bg-light">2do</div>
<div class="list-group list-group-flush">
<a class="list-group-item list-group-item-action list-group-item-light p-3" href="#!">Home</a>
<a class="list-group-item list-group-item-action list-group-item-light p-3" href="#!">New List +</a>
<?php
if($user){
echo '<a class="list-group-item list-group-item-action list-group-item-light p-3" href="#!">My Lists &#128274;</a>';
}
?>
<a class="list-group-item list-group-item-action list-group-item-light p-3" href="#!">About</a>
</div>
</div>
<!-- Page content wrapper-->
<div id="page-content-wrapper">
<!-- Top navigation-->
<nav class="navbar navbar-expand-lg navbar-light bg-light border-bottom">
<div class="container-fluid">
<button class="btn btn-primary" id="sidebarToggle">Toggle Menu</button>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ms-auto mt-2 mt-lg-0">
<?php
if($user){
echo '<li class="nav-item"><a class="nav-link" href="#!">Log out</a></li>';
} else {
echo '<li class="nav-item"><a class="nav-link" href="#!">Log In</a></li>';
echo '<li class="nav-item"><a class="nav-link" href="#!">Register</a></li>';
}
?>
</ul>
</div>
</div>
</nav>
<!--Contenu de la page ici-->
<div class="container-fluid">
<center>
<div class="col-lg-4 mb-5 mb-lg-0 text-center">
<div>
<div class="rounded-5 shadow-3-soft p-4" style="background-color: #fff9f2">
<div class="border-top border-dark mx-auto" style="width: 100px"></div>
<p class="text-muted mt-4 mb-2">2Do</p>
<p class="h5 mb-4" style="color: #344e41">A PHP project</p>
<p class="pb-4 mb-4">
A little PHP project realised by two french students studying Computer Science at the IUT of
Clermont Auvergne in France. The main goal of this project was to create a little To Do List
using the PHP language. We hope that you will find it useful.
</p>
</div>
</div>
</div>
</center>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<!-- Core theme JS-->
<script src="../view/js/home.js"></script>
</body>
</html>

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css"
rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65"
crossorigin="anonymous">
</head>
<body>
<?php
foreach($TMessage as $err) {
echo '<div class="alert alert-danger alert-dismissible d-flex align-items-center fade show">
<i class="bi-exclamation-octagon-fill"></i>
<strong class="mx-2">Error!</strong>' . $err . "</div>";
}
?>
</body>
</html>

@ -0,0 +1,87 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="description" content="" />
<meta name="author" content="" />
<!-- Core theme CSS (includes Bootstrap)-->
<link href="../view/css/home.css" rel="stylesheet" />
</head>
<body>
<div class="d-flex" id="wrapper">
<!-- Sidebar-->
<div class="border-end bg-white" id="sidebar-wrapper">
<div class="sidebar-heading border-bottom bg-light">2do</div>
<div class="list-group list-group-flush">
<a class="list-group-item list-group-item-action list-group-item-light p-3" href="#!">Home</a>
<a class="list-group-item list-group-item-action list-group-item-light p-3" href="#!">New List +</a>
<?php
if($user){
echo '<a class="list-group-item list-group-item-action list-group-item-light p-3" href="#!">My Lists &#128274;</a>';
}
?>
<a class="list-group-item list-group-item-action list-group-item-light p-3" href="#!">About</a>
</div>
</div>
<!-- Page content wrapper-->
<div id="page-content-wrapper">
<!-- Top navigation-->
<nav class="navbar navbar-expand-lg navbar-light bg-light border-bottom">
<div class="container-fluid">
<button class="btn btn-primary" id="sidebarToggle">Toggle Menu</button>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ms-auto mt-2 mt-lg-0">
<?php
if($user){
echo '<li class="nav-item"><a class="nav-link" href="#!">Log out</a></li>';
} else {
echo '<li class="nav-item"><a class="nav-link" href="#!">Log In</a></li>';
echo '<li class="nav-item"><a class="nav-link" href="#!">Register</a></li>';
}
?>
</ul>
</div>
</div>
</nav>
<!--Contenue de la page ici-->
<div class="container-fluid">
<h4 class="text-center my-3 pb-3">New Task</h4>
<form>
<div class="form-outline mb-4 align-items-center">
<input type="title" id="form2title" class="form-control" required minlength="0" maxlength="250"/>
<label class="form-label" for="form2title">Title</label>
</div>
<div class="form-outline mb-4">
<input type="text" id="form2description" class="form-control" minlength="0" maxlength="250">
<label class="form-label" for="form2description">Description</label>
</div>
<div class="form-outline mb-4">
<input type="date" id="form2dateDeb" class="form-control">
<label class="form-label" for="form2dateDeb">Starting date</label>
</div>
<div class="form-outline mb-4">
<input type="date" id="form2dateFin" class="form-control">
<label class="form-label" for="form2dateFin">Ending date</label>
</div>
<div class="form-outline mb-4">
<input type="text" id="form2importance" class="form-control" />
<label class="form-label" for="form2importance">Importance</label>
</div>
<!-- Submit button -->
<button type="button" class="btn btn-primary btn-block mb-4" action="connecter">Save</button>
</form>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<!-- Core theme JS-->
<script src="../view/js/home.js"></script>
</body>
</html>
Loading…
Cancel
Save