premice inscription + refonte autoload et ajout de la librairie PDO

pull/35/head
Leo Tuaillon 1 year ago
parent 68bdbc2afe
commit ca79f102cf

@ -1,12 +1,11 @@
{
"require": {
"twig/twig": "^3.0"
"twig/twig": "^3.0",
"ext-pdo": "*"
},
"autoload": {
"psr-4": {
"controleur\\": "controleur/",
"config\\": "config/",
"modeles\\": "modeles/"
"App\\": "src/"
}
}
}

6
php/composer.lock generated

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "6a6772df2521c6860a448e9115f2793a",
"content-hash": "e4bbfb6f07dd88c6288177f48b9cb54c",
"packages": [
{
"name": "symfony/polyfill-ctype",
@ -249,7 +249,9 @@
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform": {
"ext-pdo": "*"
},
"platform-dev": [],
"plugin-api-version": "2.6.0"
}

@ -1,61 +0,0 @@
<?php
namespace controleur;
use config\Validation;
class UtilisateurControleur
{
public function __construct()
{
global $twig;
if (!isset($_REQUEST["action"])) {
$action = NULL;
} else {
$action = Validation::nettoyerString($_REQUEST["action"]);
}
switch ($action) {
case NULL:
case "accueil":
$this->accueil();
break;
case "connection":
$this->connection();
break;
case "inscription":
$this->inscription();
break;
case "consulterProfilLimite":
$this->consulterProfilLimite();
break;
default:
$dVueErreur[] ="Action inconnue ou non autorisée";
echo $twig->render("erreur.html",['dVueErreur' => $dVueErreur]);
}
}
protected function connection()
{
global $twig;
echo $twig->render('connexion.html', []);
}
protected function inscription()
{
global $twig;
echo $twig->render('inscription.html', []);
}
protected function accueil()
{
global $twig;
echo $twig->render('accueil.html', []);
}
protected function consulterProfilLimite()
{
//TODO
}
}

@ -2,9 +2,9 @@
/** PC IUT - PHP 8.1 */
/** Chargement config */
require_once __DIR__ . '/config/config.php';
require_once __DIR__ . '/src/config/config.php';
require __DIR__ . '/vendor/autoload.php';
use controleur\FrontControleur;
/** Configuration twig */
$loader = new \Twig\Loader\FilesystemLoader('vues');
@ -13,4 +13,4 @@ $twig = new \Twig\Environment($loader, [
'debug' => true
]);
$cont = new \controleur\FrontControleur();
$cont = new App\controleur\FrontControleur();

@ -1,41 +0,0 @@
<?php
namespace modeles;
class UtilisateurModele
{
/**
* @description Charger le flux d'activiter
* @return array flux
*/
public function LoadFeed() : array
{
// TO DO
return [];
}
/**
* @description se connecter
* @param string email
* @param string hash
* @return \Alumni
*/
public function Login(string $email,string $hash) : \Alumni
{
// TO DO
return new \Alumni(null,null,null);
}
/**
* @description s'inscrire
* @param string email
* @param string hash
* @param string $pseudo
* @return \Alumni chargé
*/
public function signIn(string $email,string $pseudo,string $hash) : \Alumni
{
// TO DO
return new Compte(null,null,null);
}
}

@ -1,5 +1,5 @@
<?php
namespace config;
namespace App\config;
class Validation
{

@ -1,7 +1,7 @@
<?php
namespace App\config;
//gen
$rep = __DIR__ . '/../';
$rep = __DIR__ . '/php/';
// liste des modules à inclure
$dConfig['includes']= array('controleur/Validation.php');

@ -1,8 +1,6 @@
<?php
namespace controleur;
use config\Validation;
namespace App\controleur;
class AdminControleur extends ModerateurControleur
{
@ -12,7 +10,7 @@ class AdminControleur extends ModerateurControleur
if (!isset($_REQUEST["action"])) {
$action = NULL;
} else {
$action = Validation::nettoyerString($_REQUEST["action"]);
$action = \App\config\Validation::nettoyerString($_REQUEST["action"]);
}
switch ($action) {
case "supprimerCompte":

@ -1,7 +1,5 @@
<?php
namespace controleur;
use config\Validation;
namespace App\controleur;
class FrontControleur
{
@ -25,7 +23,7 @@ class FrontControleur
]
);
$action = Validation::nettoyerString($_GET["action"] ?? "");
$action = \App\config\Validation::nettoyerString($_GET["action"] ?? "");
if(in_array($action,$actions['Admin'])) {
if (!isset($_SESSION["role"]) || $_SESSION["role"]!="admin") {
$dVueErreur[] = 'Veuillez vous connecter';

@ -1,9 +1,6 @@
<?php
namespace controleur;
use config\Validation;
namespace App\controleur;
class MembreControleur extends UtilisateurControleur
{
public function __construct()
@ -12,7 +9,7 @@ class MembreControleur extends UtilisateurControleur
if (!isset($_REQUEST["action"])) {
$action = NULL;
} else {
$action = Validation::nettoyerString($_REQUEST["action"]);
$action = \App\config\Validation::nettoyerString($_REQUEST["action"]);
}
switch ($action) {
case "deconnexion":

@ -1,8 +1,7 @@
<?php
namespace controleur;
namespace App\controleur;
use config\Validation;
class ModerateurControleur extends MembreControleur
{
@ -12,7 +11,7 @@ class ModerateurControleur extends MembreControleur
if (!isset($_REQUEST["action"])) {
$action = NULL;
} else {
$action = Validation::nettoyerString($_REQUEST["action"]);
$action = \App\config\Validation::nettoyerString($_REQUEST["action"]);
}
switch ($action) {
default:

@ -0,0 +1,87 @@
<?php
namespace App\controleur;
class UtilisateurControleur
{
public function __construct()
{
global $twig;
if (!isset($_REQUEST["action"])) {
$action = NULL;
} else {
$action = \App\config\Validation::nettoyerString($_REQUEST["action"]);
}
switch ($action) {
case NULL:
case "accueil":
$this->accueil();
break;
case "connection":
$this->connection();
break;
case "inscription":
$this->inscription();
break;
case "consulterProfilLimite":
$this->consulterProfilLimite();
break;
default:
$dVueErreur[] ="Action inconnue ou non autorisée";
echo $twig->render("erreur.html",['dVueErreur' => $dVueErreur]);
}
}
protected function connection()
{
global $twig;
echo $twig->render('connexion.html', []);
}
protected function inscription()
{
global $twig;
$dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant
if (isset($_POST['email'], $_POST['username'], $_POST['password'])) {
$email = \App\config\Validation::nettoyerString($_POST['email']);
$motDePasse = \App\config\Validation::nettoyerString($_POST['password']);
// Validez les données d'inscription, par exemple, vérifiez si l'email est unique
// Vous pouvez également effectuer d'autres validations nécessaires
$userModel = new \App\models\UtilisateurModele();
$nouvelUtilisateur = $userModel->inscription($email, $motDePasse);
// Si l'inscription a réussi, redirigez l'utilisateur vers une page de confirmation
// Vous pouvez également gérer les erreurs ici en cas d'échec de l'inscription
if ($nouvelUtilisateur instanceof \App\metier\Alumni) {
// L'inscription a réussi, redirigez l'utilisateur vers une page de confirmation
// par exemple :
header('Location: index.php?action=inscription_success');
exit();
} else {
// L'inscription a échoué, ajoutez un message d'erreur
$dVueErreur[] = "L'inscription a échoué, veuillez réessayer.";
}
}
// Affichez le formulaire d'inscription ou les erreurs le cas échéant
echo $twig->render('inscription.html', ['dVueErreur' => $dVueErreur]);
}
protected function accueil()
{
global $twig;
echo $twig->render('accueil.html', []);
}
protected function consulterProfilLimite()
{
//TODO
}
}

@ -1,6 +1,7 @@
<?php
class Connection extends PDO {
namespace App\dal;
use PDO;
class Connection extends \PDO {
/**
* @var Statement

@ -1,20 +1,20 @@
<?php
namespace App\dal\gateway;
use PDO;
class AlumniGateway
{
private Connection $con;
private \App\dal\Connection $con;
/**
* @param $con
*/
public function __construct(Connection $con){
public function __construct(\App\dal\Connection $con){
$this->con = $con;
}
public function insert(string $email, int $id, string $motDePasse, Role $role){
$query='INSERT INTO Alumni VALUES (:i, :e, :m, :r)';
$this->con->executeQuery($query, array(
':i' => array($id, PDO::PARAM_INT),
public function insert(string $email, string $motDePasse, string $role){
$query='INSERT INTO Alumni VALUES (:e, :m, :r)';
return $this->con->executeQuery($query, array(
':e' => array($email, PDO::PARAM_STR),
':m' => array($motDePasse, PDO::PARAM_STR),
':r' => array($role, PDO::PARAM_STR)

@ -1,13 +1,13 @@
<?php
namespace App\dal\gateway;
class EvenementGateway
{
private Connection $con;
private \App\dal\Connection $con;
/**
* @param $con
*/
public function __construct(Connection $con){
public function __construct(\App\dal\Connection $con){
$this->con = $con;
}

@ -1,13 +1,13 @@
<?php
namespace App\dal\gateway;
class OffreGateway
{
private Connection $con;
private \App\dal\Connection $con;
/**
* @param $con
*/
public function __construct(Connection $con){
public function __construct(\App\dal\Connection $con){
$this->con = $con;
}

@ -1,19 +1,8 @@
<?php
enum Role
{
case Admin;
case Moderateur;
case Utilisateur;
}
namespace App\metier;
class Alumni{
/**
* @var int Identifiant
*/
private int $id;
/**
* @var string Email
*/
@ -25,32 +14,22 @@ class Alumni{
private string $motDePasse;
/**
* @var Role Role
* @var String Role
*/
private Role $role;
private String $role;
/**
* @param int $id
* @param string $email
* @param string $motDePasse
* @param Role $role
* @param String $role
*/
public function __construct(int $id, string $email, string $motDePasse, Role $role)
public function __construct(string $email, string $motDePasse, String $role)
{
$this->id = $id;
$this->email = $email;
$this->motDePasse = $motDePasse;
$this->role = $role;
}
/**
* @return string
*/
public function getId() : string
{
return $this->id;
}
/**
* @return string
*/
@ -67,7 +46,7 @@ class Alumni{
return $this->motDePasse;
}
public function getRole(): Role
public function getRole(): String
{
return $this->role;
}

@ -1,5 +1,5 @@
<?php
namespace App\metier;
class Article
{
/**

@ -1,5 +1,5 @@
<?php
namespace App\metier;
class Evenement
{
/**

@ -1,5 +1,5 @@
<?php
namespace App\metier;
class Experience
{
/**

@ -1,5 +1,5 @@
<?php
namespace App\metier;
class Formation
{
/**

@ -1,5 +1,5 @@
<?php
namespace App\metier;
enum TypeContrat
{
case CDI;

@ -1,4 +1,5 @@
<?php
namespace App\metier;
class Profil
{
/**

@ -0,0 +1,8 @@
<?php
namespace App\metier;
enum Role
{
case Admin;
case Moderateur;
case Utilisateur;
}

@ -1,14 +1,17 @@
<?php
namespace modeles;
namespace App\models;
use App\metier\Alumni;
use App\metier\Offre;
class AdminModele extends MembreModele
{
/**
* @description supprimer un compte
* @param \Alumni $account compte à supprimer
* @param Alumni $account compte à supprimer
*/
public function deleteAccount(\Alumni $account)
public function deleteAccount(\App\metier\Alumni $account)
{
// TO DO
}
@ -25,9 +28,9 @@ class AdminModele extends MembreModele
/**
* @description supprimer une offre spécifique
* @param \Offre $offer offre à supprimer
* @param Offre $offer offre à supprimer
*/
public function deleteOffer(\Offre $offer)
public function deleteOffer(Offre $offer)
{
// TO DO
}

@ -1,6 +1,6 @@
<?php
namespace modeles;
namespace App\models;
class MembreModele extends UtilisateurModele
{

@ -1,6 +1,6 @@
<?php
namespace modeles;
namespace App\models;
class ModerateurControleur
{

@ -0,0 +1,53 @@
<?php
namespace App\models;
class UtilisateurModele
{
/**
* @description Charger le flux d'activiter
* @return array flux
*/
public function LoadFeed() : array
{
// TO DO
return [];
}
/**
* @description se connecter
* @param string email
* @param string hash
* @return \App\metier\Alumni
*/
public function Login(string $email,string $hash) : \App\metier\Alumni
{
// TO DO
return new \App\metier\Alumni(null,null,null);
}
/**
* @description s'inscrire
* @param string email
* @param string hash
* @param string $pseudo
* @return \Alumni chargé
*/
public function inscription(string $email, string $hashpassword): \App\metier\Alumni
{
$dsn = "mysql:host=localhost;dbname=dbAlumni";
$username = "root";
$password = "";
$role = "Utilisateur";
$con = new \App\dal\Connection($dsn, $username, $password);
$gate = new \App\dal\gateway\AlumniGateway($con);
// Insérez le nouvel utilisateur dans la base de données en utilisant AlumniGateway
if ($gate->insert($email, $hashpassword, $role)) {
// L'insertion a réussi, retournez le nouvel utilisateur
$nouvelUtilisateur = new \App\metier\Alumni($email, $hashpassword, $role);
return $nouvelUtilisateur;
} else {
// L'insertion a échoué, renvoyez un utilisateur vide pour indiquer l'échec
return new \App\metier\Alumni(null, null, null);
}
}
}

BIN
php/vendor/.DS_Store vendored

Binary file not shown.

@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) {
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInita6287a55fe354aae4af95d1e4395c915::getLoader();
return ComposerAutoloaderInite4bbfb6f07dd88c6288177f48b9cb54c::getLoader();

@ -6,10 +6,8 @@ $vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
'modeles\\' => array($baseDir . '/modeles'),
'controleur\\' => array($baseDir . '/controleur'),
'config\\' => array($baseDir . '/config'),
'Twig\\' => array($vendorDir . '/twig/twig/src'),
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
'App\\' => array($baseDir . '/src'),
);

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInita6287a55fe354aae4af95d1e4395c915
class ComposerAutoloaderInite4bbfb6f07dd88c6288177f48b9cb54c
{
private static $loader;
@ -24,16 +24,16 @@ class ComposerAutoloaderInita6287a55fe354aae4af95d1e4395c915
require __DIR__ . '/platform_check.php';
spl_autoload_register(array('ComposerAutoloaderInita6287a55fe354aae4af95d1e4395c915', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInite4bbfb6f07dd88c6288177f48b9cb54c', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
spl_autoload_unregister(array('ComposerAutoloaderInita6287a55fe354aae4af95d1e4395c915', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInite4bbfb6f07dd88c6288177f48b9cb54c', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInita6287a55fe354aae4af95d1e4395c915::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInite4bbfb6f07dd88c6288177f48b9cb54c::getInitializer($loader));
$loader->register(true);
$filesToLoad = \Composer\Autoload\ComposerStaticInita6287a55fe354aae4af95d1e4395c915::$files;
$filesToLoad = \Composer\Autoload\ComposerStaticInite4bbfb6f07dd88c6288177f48b9cb54c::$files;
$requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;

@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInita6287a55fe354aae4af95d1e4395c915
class ComposerStaticInite4bbfb6f07dd88c6288177f48b9cb54c
{
public static $files = array (
'320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
@ -12,15 +12,6 @@ class ComposerStaticInita6287a55fe354aae4af95d1e4395c915
);
public static $prefixLengthsPsr4 = array (
'm' =>
array (
'modeles\\' => 8,
),
'c' =>
array (
'controleur\\' => 11,
'config\\' => 7,
),
'T' =>
array (
'Twig\\' => 5,
@ -30,21 +21,13 @@ class ComposerStaticInita6287a55fe354aae4af95d1e4395c915
'Symfony\\Polyfill\\Mbstring\\' => 26,
'Symfony\\Polyfill\\Ctype\\' => 23,
),
'A' =>
array (
'App\\' => 4,
),
);
public static $prefixDirsPsr4 = array (
'modeles\\' =>
array (
0 => __DIR__ . '/../..' . '/modeles',
),
'controleur\\' =>
array (
0 => __DIR__ . '/../..' . '/controleur',
),
'config\\' =>
array (
0 => __DIR__ . '/../..' . '/config',
),
'Twig\\' =>
array (
0 => __DIR__ . '/..' . '/twig/twig/src',
@ -57,6 +40,10 @@ class ComposerStaticInita6287a55fe354aae4af95d1e4395c915
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
),
'App\\' =>
array (
0 => __DIR__ . '/../..' . '/src',
),
);
public static $classMap = array (
@ -66,9 +53,9 @@ class ComposerStaticInita6287a55fe354aae4af95d1e4395c915
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInita6287a55fe354aae4af95d1e4395c915::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInita6287a55fe354aae4af95d1e4395c915::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInita6287a55fe354aae4af95d1e4395c915::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInite4bbfb6f07dd88c6288177f48b9cb54c::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInite4bbfb6f07dd88c6288177f48b9cb54c::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInite4bbfb6f07dd88c6288177f48b9cb54c::$classMap;
}, null, ClassLoader::class);
}

@ -1,9 +1,9 @@
<?php return array(
'root' => array(
'name' => '__root__',
'pretty_version' => '1.0.0+no-version-set',
'version' => '1.0.0.0',
'reference' => NULL,
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '68bdbc2afe49996b3ceec196c42f5e25b3edec96',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@ -11,9 +11,9 @@
),
'versions' => array(
'__root__' => array(
'pretty_version' => '1.0.0+no-version-set',
'version' => '1.0.0.0',
'reference' => NULL,
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '68bdbc2afe49996b3ceec196c42f5e25b3edec96',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save