Merge branch 'master' of codefirst.iut.uca.fr:leo.tuaillon/SAE_2A_FA-Reseau_ALICA

merge
alexis-rendu
Baptiste D 1 year ago
commit cebb1aac3a

@ -0,0 +1,372 @@
-- phpMyAdmin SQL Dump
-- version 5.2.0
-- https://www.phpmyadmin.net/
--
-- Hôte : localhost:8889
-- Généré le : lun. 20 nov. 2023 à 20:05
-- Version du serveur : 5.7.39
-- Version de PHP : 8.2.0
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Base de données : `dbAlica`
--
-- --------------------------------------------------------
--
-- Structure de la table `Alumni`
--
CREATE TABLE `Alumni` (
`id` int(11) NOT NULL,
`mail` varchar(128) NOT NULL,
`mdp` varchar(256) NOT NULL,
`role` varchar(16) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Déchargement des données de la table `Alumni`
--
INSERT INTO `Alumni` (`id`, `mail`, `mdp`, `role`) VALUES
(1, 'test', 'test', 'admin'),
(4, 'Admin@alica.com', '$2y$10$f2z.qWTtGhp.nZo0zBlw8Og9GpcQYcBOTIfqAj3UP2MEiN5uXS1Ue', 'Admin'),
(5, 'john@doe', '$2y$10$oOMH01Zxkz4yQPVs44fkHODMc78m8eeIOaSMF84K1w4ikPyUAiwwy', 'Membre'),
(6, 'jack@doe', '$2y$10$sFeUX9.evOansuqwj4nFuOLy9n3j6tkAFHmsL1kTDuUxhgF6WZRZy', 'Membre'),
(7, 'test@gmail.com', '$2y$10$41F6OQz9V1cr2D1rYX9np.5fTKe68dYrJlLpZf7t5G9c8g2mgOF9K', 'Membre'),
(8, 'admin@test', '$2y$10$mHKhDhpN7.Z1UyvE3..ZIuGPbjtmUa9QDhmuQyU1h68d/2z25DUDK', 'Admin'),
(9, 'membre@test', '$2y$10$hVS.BcHq.b/oneN0KiJI3u6CXGeb2UXRw5mJtvZByJG1./mIG4QbK', 'Membre'),
(10, 'test@e', '$2y$10$K3LBNsukXWvBqsbEid5Px.PnNQmomNa0tlnNvFlxDxRYdSbfOWdcK', 'Membre'),
(11, 'emma.dupont@email.com', '$2y$10$eg7ARpvdTqnpJ1tMi.AhcufFZtBQxkhnE8GF1/z4RRrTg3C1wpCsC', 'Membre'),
(12, 'lucas.martin@email.com', '$2y$10$yk7/MCHif6niCjqWrFxA2u1C69ThVb9tpduyTZtcDjnW.V.gM51Iu', 'Membre'),
(13, 'chloe.bernard@mail', '$2y$10$p0BjmKiuFbd3zBzBo6sWJ.tZi./2J7c3MZ9unCn/OkW6LBBvnC.FC', 'Membre'),
(14, 'ines.leroy@email.com', '$2y$10$QDoHq2B7m6WseAPe6kH6MuoaCREBWqChO95NxUVMrZDH1aShHD7zW', 'Membre'),
(15, 'te@te', '$2y$10$.kM.SFMvZnDEGuE8rxclc.UaJbKYesqzNNkE5VdE7NAPEwWOTS4u6', 'Membre'),
(16, 'lea.simon@email.com', '$2y$10$AckHtFDM3C.O.ACQlqh5FuVqSr3bB2.IjcPmdrrM/fYRYU6lU6OdW', 'Membre'),
(17, 'gabriel.michel@email.com', '$2y$10$bNoO9pNylyCL2hznrZ7OyO7aWVJUrZieda2uwnYo/Ly8TB7Nl7fLS', 'Membre'),
(18, 'Sarah@email', '$2y$10$50o/3cFzapPB90apopD5b.tWrRxCG0sYOni6TinI41cwHCzYFiUFO', 'Membre'),
(19, 'raphael.garcia@email.fr', '$2y$10$m2dHfABuizTRBGymKfO60eyzo13BPTSSH/EdEhXcDkauzuRuk7HR.', 'Membre'),
(20, 'Alice@a', '$2y$10$atRfojz7W0mQzv9l0IgRhOF5WWn7FjTRZtSbZkzQveYdInMsy5RrS', 'Membre'),
(21, 'maxime.pichon@email.com', '$2y$10$sA3N6D01ATFdCKqJ6fflNe484KMKejFIfaTYHGOH9AoPHOnRmSvi2', 'Membre'),
(22, 'zoe.Gauthier@gmail.com', '$2y$10$bVaPrdlcYOHcclq0OjZUTOwoLkmMXLw9Ww6OTSDnhFAujDL4nqBqG', 'Membre');
-- --------------------------------------------------------
--
-- Structure de la table `Article`
--
CREATE TABLE `Article` (
`id` int(11) NOT NULL,
`auteur` int(11) NOT NULL,
`Titre` varchar(64) NOT NULL,
`sousTitre` varchar(64) NOT NULL,
`description` varchar(1024) NOT NULL,
`image` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Structure de la table `Evenement`
--
CREATE TABLE `Evenement` (
`id` int(11) NOT NULL,
`organisateur` int(11) NOT NULL,
`titre` varchar(64) NOT NULL,
`description` varchar(512) NOT NULL,
`image` varchar(256) NOT NULL,
`date` date NOT NULL,
`nbPlaceMax` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Déchargement des données de la table `Evenement`
--
INSERT INTO `Evenement` (`id`, `organisateur`, `titre`, `description`, `image`, `date`, `nbPlaceMax`) VALUES
(1, 1, 'Laser Game', 'Evement laser game avec tous les membres du réseau ALICA, vous êtes la bienvenue..', '18044Laser Game PBOB9302.jpg', '2023-11-18', 20),
(2, 1, 'Rencontre Annuelle des Anciens d\'Alica', 'Un rassemblement annuel pour tous les anciens étudiants, avec des discours inspirants, des ateliers de réseautage et un dîner de gala\r\nLieu : Centre de conférence de l\'IUT dAubière', '16494Bandeau CreerAsso.jpg', '2023-11-24', 30);
-- --------------------------------------------------------
--
-- Structure de la table `Experience`
--
CREATE TABLE `Experience` (
`id` int(11) NOT NULL,
`profil` int(11) NOT NULL,
`intitule` varchar(256) NOT NULL,
`dateDebut` date NOT NULL,
`dateFin` date NOT NULL,
`nomEntreprise` varchar(64) NOT NULL,
`currentJob` tinyint(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Structure de la table `Formation`
--
CREATE TABLE `Formation` (
`id` int(11) NOT NULL,
`profil` int(11) NOT NULL,
`nom` varchar(64) NOT NULL,
`ville` varchar(32) NOT NULL,
`dateDeb` date NOT NULL,
`dateFin` date NOT NULL,
`currentFormation` tinyint(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Structure de la table `Image`
--
CREATE TABLE `Image` (
`id` int(5) NOT NULL,
`nom` varchar(50) NOT NULL,
`taille` varchar(25) NOT NULL,
`type` varchar(25) NOT NULL,
`blob` longblob NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Structure de la table `Offre`
--
CREATE TABLE `Offre` (
`id` int(11) NOT NULL,
`offreur` int(11) NOT NULL,
`titre` varchar(128) NOT NULL,
`description` varchar(1024) NOT NULL,
`image` varchar(100) NOT NULL,
`logo` varchar(100) NOT NULL,
`typeContrat` varchar(16) NOT NULL,
`ville` varchar(64) NOT NULL,
`entreprise` varchar(64) NOT NULL,
`descriptifPoste` varchar(2028) NOT NULL,
`profil` varchar(2028) NOT NULL,
`experience` varchar(512) NOT NULL,
`niveauEtudes` varchar(16) NOT NULL,
`mailContact` varchar(128) NOT NULL,
`numero` varchar(12) NOT NULL,
`websiteURL` varchar(256) NOT NULL,
`remote` tinyint(1) NOT NULL,
`date` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Structure de la table `Participer`
--
CREATE TABLE `Participer` (
`alumni` int(11) NOT NULL,
`evenement` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Structure de la table `Profil`
--
CREATE TABLE `Profil` (
`id` int(11) NOT NULL,
`alumni` int(11) NOT NULL,
`email` varchar(128) NOT NULL,
`cv` varchar(256) DEFAULT NULL,
`nom` varchar(64) NOT NULL,
`prenom` varchar(32) NOT NULL,
`linkedinURL` varchar(256) DEFAULT NULL,
`githubURL` varchar(256) DEFAULT NULL,
`portfolioURL` varchar(256) DEFAULT NULL,
`image` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Déchargement des données de la table `Profil`
--
INSERT INTO `Profil` (`id`, `alumni`, `email`, `cv`, `nom`, `prenom`, `linkedinURL`, `githubURL`, `portfolioURL`, `image`) VALUES
(4, 4, 'Admin@alica.com', NULL, 'TUAILLON', 'Leo', NULL, NULL, NULL, '19879.png'),
(5, 5, 'john@doe', NULL, 'Doe', 'John', NULL, NULL, NULL, '2.jpg'),
(6, 6, 'jack@doe', NULL, 'Doe', 'Jack', NULL, NULL, NULL, NULL),
(7, 7, 'test@gmail.com', NULL, 'test', 'test', NULL, NULL, NULL, NULL),
(8, 8, 'admin@test', NULL, 'Admin', 'CompteTest', NULL, NULL, NULL, '1.png'),
(9, 9, 'membre@test', NULL, 'Membre', 'compteTest', NULL, NULL, NULL, '3.jpg'),
(10, 10, 'test@e', NULL, 'nom', 'prénom', NULL, NULL, NULL, NULL),
(11, 11, 'emma.dupont@email.com', NULL, 'Dupont', 'Emma', NULL, NULL, NULL, NULL),
(12, 12, 'lucas.martin@email.com', NULL, 'Martin', 'Lucas', NULL, NULL, NULL, NULL),
(13, 13, 'chloe.bernard@mail', NULL, 'Bernard', 'Chloé', NULL, NULL, NULL, '1.png'),
(14, 14, 'ines.leroy@email.com', NULL, 'Leroy', 'Ines', NULL, NULL, NULL, NULL),
(15, 15, 'te@te', NULL, 'Moreau', 'Alexandre', NULL, NULL, NULL, NULL),
(16, 16, 'lea.simon@email.com', NULL, 'Simon', 'Léa', NULL, NULL, NULL, '3.jpg'),
(17, 17, 'gabriel.michel@email.com', NULL, 'Michel', 'Gabriel', NULL, NULL, NULL, NULL),
(18, 18, 'Sarah@email', NULL, 'Lefevre', 'Sarah', NULL, NULL, NULL, NULL),
(19, 19, 'raphael.garcia@email.fr', NULL, 'Garcia', 'Raphaël', NULL, NULL, NULL, NULL),
(20, 20, 'Alice@a', NULL, 'Alice', 'Alice', NULL, NULL, NULL, '2.jpg'),
(21, 21, 'maxime.pichon@email.com', NULL, 'Pichon', 'Maxime', NULL, NULL, NULL, NULL),
(22, 22, 'zoe.Gauthier@gmail.com', NULL, 'Gauthier', 'zoé', NULL, NULL, NULL, '3.jpg');
--
-- Index pour les tables déchargées
--
--
-- Index pour la table `Alumni`
--
ALTER TABLE `Alumni`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `mail` (`mail`);
--
-- Index pour la table `Article`
--
ALTER TABLE `Article`
ADD PRIMARY KEY (`id`),
ADD KEY `image` (`image`),
ADD KEY `auteur` (`auteur`);
--
-- Index pour la table `Evenement`
--
ALTER TABLE `Evenement`
ADD PRIMARY KEY (`id`),
ADD KEY `organisateur` (`organisateur`);
--
-- Index pour la table `Experience`
--
ALTER TABLE `Experience`
ADD PRIMARY KEY (`id`);
--
-- Index pour la table `Formation`
--
ALTER TABLE `Formation`
ADD PRIMARY KEY (`id`);
--
-- Index pour la table `Image`
--
ALTER TABLE `Image`
ADD PRIMARY KEY (`id`);
--
-- Index pour la table `Offre`
--
ALTER TABLE `Offre`
ADD PRIMARY KEY (`id`),
ADD KEY `offreur` (`offreur`);
--
-- Index pour la table `Profil`
--
ALTER TABLE `Profil`
ADD PRIMARY KEY (`id`),
ADD KEY `alumni` (`alumni`);
--
-- AUTO_INCREMENT pour les tables déchargées
--
--
-- AUTO_INCREMENT pour la table `Alumni`
--
ALTER TABLE `Alumni`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=30;
--
-- AUTO_INCREMENT pour la table `Article`
--
ALTER TABLE `Article`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT pour la table `Evenement`
--
ALTER TABLE `Evenement`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
--
-- AUTO_INCREMENT pour la table `Experience`
--
ALTER TABLE `Experience`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT pour la table `Formation`
--
ALTER TABLE `Formation`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT pour la table `Image`
--
ALTER TABLE `Image`
MODIFY `id` int(5) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT pour la table `Offre`
--
ALTER TABLE `Offre`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
--
-- AUTO_INCREMENT pour la table `Profil`
--
ALTER TABLE `Profil`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=28;
--
-- Contraintes pour les tables déchargées
--
--
-- Contraintes pour la table `Article`
--
ALTER TABLE `Article`
ADD CONSTRAINT `article_ibfk_1` FOREIGN KEY (`image`) REFERENCES `Image` (`id`),
ADD CONSTRAINT `article_ibfk_2` FOREIGN KEY (`auteur`) REFERENCES `Alumni` (`id`);
--
-- Contraintes pour la table `Evenement`
--
ALTER TABLE `Evenement`
ADD CONSTRAINT `evenement_ibfk_1` FOREIGN KEY (`organisateur`) REFERENCES `Alumni` (`id`);
--
-- Contraintes pour la table `Offre`
--
ALTER TABLE `Offre`
ADD CONSTRAINT `offre_ibfk_1` FOREIGN KEY (`offreur`) REFERENCES `Alumni` (`id`);
--
-- Contraintes pour la table `Profil`
--
ALTER TABLE `Profil`
ADD CONSTRAINT `fk_profil_alumni` FOREIGN KEY (`alumni`) REFERENCES `Alumni` (`id`);
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 467 KiB

@ -1,44 +1,36 @@
<?php <?php
namespace App\controleur; namespace App\controleur;
use App\controleur\UtilisateurModele; use App\gateway\ImageSaver;
use App\controleur\ImageSaver;
use App\config\Validation; use App\config\Validation;
use App\modele\AdminModele;
use Exception;
class AdminControleur extends ModerateurControleur class AdminControleur extends ModerateurControleur
{ {
public function __construct() public function supprimerCompte(?array $params)
{ {
global $twig; global $twig;
if (!isset($_REQUEST["action"])) { $adminModel = new AdminModele();
$action = NULL; $dVueErreur = [];
} else {
$action = \App\config\Validation::nettoyerString($_REQUEST["action"]);
}
switch ($action) { if (isset($params['id'])) {
case "supprimerCompte": $profilId = Validation::validerIntPossitif($params['id']);
$this->supprimerCompte();
break; try{
case "consulterSignalement": $adminModel->deleteAccount($profilId);
$this->consulterSignalement(); echo $twig->render('profil.html', []);
break; } catch (Exception $e) {
case "creerEvenement": $dVueErreur[] = "Erreur lors de la suppression du compte";
$this->creerEvenement(); echo $twig->render("erreur.html", ['dVueErreur' => $dVueErreur]);
break;
case "supprimerEvenement":
$this->supprimerEvenement();
break;
case "supprimerOffre":
$this->supprimerOffre();
break;
default:
parent::__construct();
} }
} else {
$dVueErreur[] = "ID du profil non spécifié.";
echo $twig->render("erreur.html", ['dVueErreur' => $dVueErreur]);
} }
protected function supprimerCompte()
{
//TODO
} }
protected function consulterSignalement() protected function consulterSignalement()
@ -54,7 +46,7 @@ class AdminControleur extends ModerateurControleur
$img = ImageSaver::SaveImage('image'); $img = ImageSaver::SaveImage('image');
if (!Validation::validerEvenement($_POST["titre"], $_POST["description"], $_POST["date"], $_POST["nbPlaceMax"], $img[1])) { if (!Validation::validerEvenement($_POST["titre"], $_POST["description"], $_POST["date"], $_POST["nbPlaceMax"], $img[1])) {
$mdl = new UtilisateurModele(); $mdl = new AdminModele();
$mdl->ajouterEvenement($_POST["titre"], $_POST["description"], $_POST["date"], $_POST["nbPlaceMax"], $img[1]); $mdl->ajouterEvenement($_POST["titre"], $_POST["description"], $_POST["date"], $_POST["nbPlaceMax"], $img[1]);
$this->listerEvenement(); $this->listerEvenement();
@ -69,8 +61,8 @@ class AdminControleur extends ModerateurControleur
public function supprimerEvenement(?array $params) public function supprimerEvenement(?array $params)
{ {
$mdl = new UtilisateurModele(); $mdl = new AdminModele();
$mdl->deleteEvenement($params["id"]); $mdl->deleteEvenement($params["id2"]);
$this->listerEvenement(); $this->listerEvenement();
} }

@ -12,14 +12,19 @@ class FrontControleur
{ {
global $twig; global $twig;
session_start(); session_start();
//var_dump($_SESSION['utilisateur']);
if(!isset($_SESSION['nom']) && !isset($_SESSION['prenom']) && !isset($_SESSION['role']) && !isset($_SESSION['id']))
if ($_SESSION['utilisateur'] != NULL) { {
// echo on y passe $_SESSION['nom'] = NULL;
$twig->addGlobal('nom', $_SESSION['utilisateur']->getNom()); $_SESSION['prenom'] = NULL;
$twig->addGlobal('prenom', $_SESSION['utilisateur']->getPrenom()); $_SESSION['role'] = "guest";
$twig->addGlobal('role', $_SESSION['utilisateur']->getRole()); $_SESSION['id'] = NULL;
$twig->addGlobal('id', $_SESSION['utilisateur']->getId()); }
else{
$twig->addGlobal('nom', $_SESSION['nom']);
$twig->addGlobal('prenom', $_SESSION['prenom']);
$twig->addGlobal('role', $_SESSION['role']);
$twig->addGlobal('id', $_SESSION['id']);
} }
@ -35,10 +40,14 @@ class FrontControleur
$router->map('GET','/[a:action]/[i:id]?','UtilisateurControleur'); $router->map('GET','/[a:action]/[i:id]?','UtilisateurControleur');
$router->map('GET|POST', '/user/[a:action]?', 'MembreControleur');
$router->map('GET|POST', '/user/[i:id]/[a:action]?', 'MembreControleur'); $router->map('GET|POST', '/user/[i:id]/[a:action]?', 'MembreControleur');
$router->map('GET|POST', '/admin/[i:id]/[a:action]?', 'AdminControleur'); $router->map('GET|POST', '/admin/[i:id]/[a:action]?', 'AdminControleur');
$router->map('GET|POST', '/admin/[i:id]/[a:action]/[i:id2]?', 'AdminControleur');
$id = 0; $id = 0;
$match = $router->match(); $match = $router->match();
@ -65,11 +74,7 @@ class FrontControleur
try { try {
if ($controller == "MembreControleur") { if ($controller == "MembreControleur") {
if ($_SESSION["role"] != "Membre" && $_SESSION["role"] != "Admin") {
echo " on est passés ici";
echo "role ".$_SESSION["utilisateur"]->getRole();
if ($_SESSION["utilisateur"]->getRole() != "Membre") {
echo $twig->render("connection.html",['msg' => 'Vous devez vous connecter pour effectuer cette action']); echo $twig->render("connection.html",['msg' => 'Vous devez vous connecter pour effectuer cette action']);
} }
@ -79,20 +84,24 @@ class FrontControleur
echo "controller : ".$controller; echo "controller : ".$controller;
$controller = new $controller(); $controller = new $controller();
} }
} }
if ($controller == "AdminControleur") { if ($controller == "AdminControleur") {
$Alumni = $_SESSION["utilisateur"]; if ($_SESSION["role"] != "Admin") {
if ($Alumni->getRole() != "Admin") {
$dVueErreur = ["Erreur : Vous n'avez pas les privileges pour cette action"]; $dVueErreur = ["Erreur : Vous n'avez pas les privileges pour cette action"];
global $twig; global $twig;
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]); echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
return; return;
} }
else{
$controller = "AdminControleur";
$controller = $namespace . $controller;
$controller = new $controller();
} }
}
if($controller == "UtilisateurControleur") if($controller == "UtilisateurControleur")
{ {
$controller = $namespace . $controller; $controller = $namespace . $controller;
@ -104,9 +113,8 @@ class FrontControleur
call_user_func(array($controller, $action), $match['params']); call_user_func(array($controller, $action), $match['params']);
} else { } else {
$dVueErreur = ['Erreur : Action inconnue'];
echo $twig->render('accueil.html', ['dVueErreur' => $dVueErreur]); echo $twig->render('accueil.html');
} }
} catch (Error $error) { } catch (Error $error) {

@ -11,8 +11,15 @@ class MembreControleur extends UtilisateurControleur
{ {
} }
public function deconnexion()
{
global $twig;
session_unset();
session_destroy();
header("Location: /SAE_2A_FA-Reseau_ALICA/php/");
exit();
}
public function createOfferForm() public function createOfferForm()
{ {
global $twig; global $twig;

@ -27,10 +27,17 @@ class UtilisateurControleur
$utilisateur = $userModel->connection($email, $motDePasse); $utilisateur = $userModel->connection($email, $motDePasse);
if ($utilisateur instanceof Alumni) { if ($utilisateur instanceof Alumni) {
$_SESSION['utilisateur'] = $utilisateur; $_SESSION['nom'] = $utilisateur->getNom();
$_SESSION['prenom'] = $utilisateur->getPrenom();
// echo $twig->render('accueil.html',[]); $_SESSION['role'] = $utilisateur->getRole();
header('Location: accueil'); $_SESSION['id'] = $utilisateur->getId();
echo $twig->render('accueil.html',[
'nom' => $_SESSION['nom'],
'prenom' => $_SESSION['prenom'],
'role' => $_SESSION['role'],
'id' => $_SESSION['id'
]]);
return; return;
} else { } else {
@ -254,7 +261,7 @@ class UtilisateurControleur
global $twig; global $twig;
$dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant $dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant
$userModel = new UtilisateurModele(); $userModel = new UtilisateurModele();
$nbParPage = 10; $nbParPage = 6;
$nombreTotalPages = ceil(($userModel->getNbTotalPages())/$nbParPage); $nombreTotalPages = ceil(($userModel->getNbTotalPages())/$nbParPage);
if (isset($params['id'] ) && $params['id'] != null) { if (isset($params['id'] ) && $params['id'] != null) {
$page = Validation::validerIntPossitif($params['id']); $page = Validation::validerIntPossitif($params['id']);
@ -277,13 +284,5 @@ class UtilisateurControleur
} }
} }
public function deconnexion()
{
session_destroy();
header('Location: accueil');
// global $twig;
// $twig->render('accueil.html',[]);
exit();
}
} }

@ -76,5 +76,26 @@ class AlumniGateway
return $res[0]['id']; return $res[0]['id'];
} }
public function deleteUser(int $accountId)
{
// Supprimer les enregistrements liés dans AutreTable
$query = 'DELETE FROM Profil WHERE alumni=:i';
$this->con->executeQuery($query, array(
':i' => array($accountId, PDO::PARAM_INT)
));
$query = 'DELETE FROM Offre WHERE offreur=:i';
$this->con->executeQuery($query, array(
':i' => array($accountId, PDO::PARAM_INT)
));
// Ensuite, supprimer l'enregistrement dans Alumni
$query = 'DELETE FROM Alumni WHERE id=:i';
$this->con->executeQuery($query, array(
':i' => array($accountId, PDO::PARAM_INT)
));
return $this->con->getResults();
}
} }

@ -34,7 +34,7 @@ class Alumni{
$this->email = $email; $this->email = $email;
$this->motDePasse = $motDePasse; $this->motDePasse = $motDePasse;
$this->role = $role; $this->role = $role;
$this->profil = new Profil($nom, $prenom, $email, "","", "", "",""); $this->profil = new Profil($id,$nom, $prenom, $email, "","", "", "","");
} }
/** /**

@ -51,9 +51,9 @@ class Profil
* @param string $githubUrl * @param string $githubUrl
* @param string $portfolioUrl * @param string $portfolioUrl
*/ */
public function __construct(string $nom, string $prenom, string $email, ?string $image,string $cv, string $linkedinUrl, string $githubUrl, string $portfolioUrl) public function __construct(int $alumni,string $nom, string $prenom, string $email, ?string $image,string $cv, string $linkedinUrl, string $githubUrl, string $portfolioUrl)
{ {
$this->id = $alumni;
$this->nom = $nom; $this->nom = $nom;
$this->prenom = $prenom; $this->prenom = $prenom;
$this->image = $image; $this->image = $image;
@ -65,7 +65,10 @@ class Profil
} }
public function getId(): int
{
return $this->id;
}
public function getImage(): ?string public function getImage(): ?string
{ {
return $this->image ?? 'logo.png'; return $this->image ?? 'logo.png';

@ -2,6 +2,7 @@
namespace App\modele; namespace App\modele;
use App\gateway\Connection;
use App\metier\Alumni; use App\metier\Alumni;
class AdminModele extends MembreModele class AdminModele extends MembreModele
@ -10,9 +11,21 @@ class AdminModele extends MembreModele
* @description supprimer un compte * @description supprimer un compte
* @param Alumni $account compte à supprimer * @param Alumni $account compte à supprimer
*/ */
public function deleteAccount(\App\metier\Alumni $account) public function deleteAccount(int $accountId)
{ {
// TO DO global $twig;
$dVueErreur = [];
$con = new Connection(DB_HOST, DB_USER, DB_PASS);
$gate = new \App\gateway\AlumniGateway($con);
$result = $gate->deleteUser($accountId);
/* try {
var_dump($result);
} catch (\Exception $e) {
$dVueErreur[] = "Erreur lors de la suppression du compte";
echo $twig->render("erreur.html", ['dVueErreur' => $dVueErreur]);
}*/
} }
/** /**

@ -88,9 +88,9 @@ class UtilisateurModele
$gate = new AlumniGateway($con); $gate = new AlumniGateway($con);
// Récupérez l'utilisateur avec l'email donné en utilisant AlumniGateway // Récupérez l'utilisateur avec l'email donné en utilisant AlumniGateway
$utilisateur = $gate->findByEmail($email); $utilisateur = $gate->findByEmail($email);
if ($utilisateur instanceof Alumni) { if (isset($utilisateur[0])) {
// L'utilisateur existe, retournez-le // L'utilisateur existe, retournez-le
return $utilisateur; return new Alumni($utilisateur[0]['id'],$utilisateur[0]['mail'], $utilisateur[0]['mdp'], $utilisateur[0]['role'],$utilisateur[0]['nom'],$utilisateur[0]['prenom']);
} else { } else {
// L'utilisateur n'existe pas, renvoyez null // L'utilisateur n'existe pas, renvoyez null
return null; return null;
@ -196,6 +196,7 @@ class UtilisateurModele
$profils = array(); $profils = array();
foreach ($data as $row) { foreach ($data as $row) {
$profils[] = new Profil( $profils[] = new Profil(
$row['alumni'],
$row['nom'], $row['nom'],
$row['prenom'], $row['prenom'],
$row['email'], $row['email'],

@ -97,8 +97,9 @@
<div class="col-md-8 offset-md-2"> <div class="col-md-8 offset-md-2">
{% if offre is not empty %}
{% for offre in offres %} {% for offre in offres %}
<article class="mb-4"> <article class="list-group-item">
<div class="row1"> <div class="row1">
<img src="{{dir}}/public/uploads/{{offre.getLogo()}}" class="img-fluid rounded" alt="logo"> <!-- Ajoutez la classe "rounded" pour arrondir les coins --> <img src="{{dir}}/public/uploads/{{offre.getLogo()}}" class="img-fluid rounded" alt="logo"> <!-- Ajoutez la classe "rounded" pour arrondir les coins -->
<h4>{{ offre.getNom() }}</h4> <h4>{{ offre.getNom() }}</h4>
@ -115,8 +116,10 @@
<button type="button" class="btn btn-outline-primary btn-sm mb-2 custom-button" <button type="button" class="btn btn-outline-primary btn-sm mb-2 custom-button"
onclick="window.location.href = '{{dir}}/displayOffer/{{offre.getId()}}'">En savoir plus</button> onclick="window.location.href = '{{dir}}/displayOffer/{{offre.getId()}}'">En savoir plus</button>
</article> </article>
{% endfor %} {% endfor %}
{% else %}
<li class="list-group-item">Aucune offre trouvée.</li>
{% endif %}
<nav style="text-align: center;"> <nav style="text-align: center;">
<nav style="text-align: center;"> <nav style="text-align: center;">

@ -1,51 +1,51 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css" href="css/accueil.css"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="{{dir}}/public/css/accueil.css">
<title>Alica - Accueil</title> <title>Alica - Accueil</title>
</head> </head>
<body>
<header>
<!-- balise center provisoire c'est pour mes yeux -->
<body>
<header>
{% include 'menu.html' %} {% include 'menu.html' %}
</header> </header>
<h1>Accueil</h1>
<!-- Bienvenu suivie du mail des informations sessions de l'utilisateur --> <div class="container mt-5">
<p>{% if prenom and nom %} <h1 class="text-center">Accueil</h1>
Bienvenue, {{ prenom }} {{ nom }} {{id}}! <p class="text-center">
{% if prenom and nom %}
Bienvenue, {{ prenom }} {{ nom }} {{id}} {{role}}!
{% else %} {% else %}
Bienvenue, invité! Bienvenue, invité!
{% endif %}</p> {% endif %}
<p>Vous êtes sur la page d'accueil</p> </p>
{% if dVueErreur is not empty %} {% if dVueErreur is not empty %}
<div class="CadreInput"> <div class="alert alert-danger">
<div class="box">
<div class="error">
<ul> <ul>
{% for erreur in dVueErreur %} {% for erreur in dVueErreur %}
<li>{{ erreur }}</li> <li>{{ erreur }}</li>
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
</div>
</div>
{% endif %} {% endif %}
<div class="main">
<div class="row">
<div class="col-md-12">
<div class="banner"> <div class="banner">
<img class="banner-img" src="assets/bandeau.png"> <img class="img-fluid" src="{{dir}}/public/assets/bandeau.png">
<div class="title-banner"> <div class="banner-content">
<div class="subtitle">Le réseau Alica te souhaite la bienvenue !</div> <h2>Le réseau Alica te souhaite la bienvenue !</h2>
<div class="title">Alica Info</div> <p>Nous sommes danciens étudiants à lIUT dAubière qui aimerions créer un réseau d'anciens étudiants au travers d'un réseau alumni du département Informatique.</p>
<div class="description">Nous sommes danciens étudiants à lIUT dAubière qui aimerions créer un réseau d'anciens étudiants au travers d'un réseau alumni du département Informatique.</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!--
<div class="slideshow-container" id="evenements"> <div class="slideshow-container" id="evenements">
{% for event in eventsList %} {% for event in eventsList %}
<div class="slide"> <div class="slide">
@ -56,7 +56,6 @@
<div class="slide-date">{{event.date}}</div> <div class="slide-date">{{event.date}}</div>
<div class="slide-title">{{event.titre}}</div> <div class="slide-title">{{event.titre}}</div>
<div class="slide-description">{{event.description}}</div> <div class="slide-description">{{event.description}}</div>
<a href="index.php?action=" class="button">S'inscrire</a>
</div> </div>
</div> </div>
{% endfor %} {% endfor %}
@ -71,9 +70,14 @@
</div> </div>
</div> </div>
</body> </body>
<footer> <footer> -->
{% include 'footer.html' %} {% include 'footer.html' %}
</footer> </footer>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</html> </html>
<script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script> <script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script>
<script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script> <script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>

@ -9,7 +9,7 @@
<body> <body>
<div class="container mt-5"> <div class="container mt-5">
<h1 class="text-center">Créer un Événement</h1> <h1 class="text-center">Créer un Événement</h1>
<form action="creerEvenement" method="post" enctype="multipart/form-data"> <form action="{{dir}}/admin/{{id}}/creerEvenement" method="post" enctype="multipart/form-data">
<div class="form-group"> <div class="form-group">
<label for="titre">Titre de l'Événement :</label> <label for="titre">Titre de l'Événement :</label>

@ -22,7 +22,12 @@
</button> </button>
</form> </form>
<h1>Liste des Événements</h1> <h1>Liste des Événements</h1>
<a href="{{dir}}/user/{{id}}/creerEvenement" class="btn btn-primary">Publier événement</a> {% if role == 'Admin' %}
<a href="{{dir}}/admin/{{id}}/creerEvenement" class="btn btn-primary">Publier événement</a>
{% else %}
<div>
</div>
{% endif %}
</div> </div>
<ul class="list-group"> <ul class="list-group">
@ -38,11 +43,16 @@
<p><strong>Places disponibles:</strong> {{ evenement.nbPlaceMax }}</p> <p><strong>Places disponibles:</strong> {{ evenement.nbPlaceMax }}</p>
<a href="{{dir}}/avoirDetailEvenement/{{ evenement.id }}" class="btn btn-primary">Détails</a> <a href="{{dir}}/avoirDetailEvenement/{{ evenement.id }}" class="btn btn-primary">Détails</a>
</div> </div>
<form action="{{dir}}/supprimerEvenement/{{ evenement.id }}" method="get"> {% if role == 'Admin' %}
<form action="{{dir}}/admin/{{id}}/supprimerEvenement/{{ evenement.id }}" method="get">
<button type="submit" class="btn btn-primary" id="deleteButton"> <button type="submit" class="btn btn-primary" id="deleteButton">
<img src="{{dir}}/public/assets/close.png" alt="Supprimer" width="20px"> <img src="{{dir}}/public/assets/close.png" alt="Supprimer" width="20px">
</button> </button>
</form> </form>
{% else %}
<div>
</div>
{% endif %}
</li> </li>
{% endfor %} {% endfor %}
{% else %} {% else %}

@ -27,7 +27,7 @@
<!-- Afficher boutons de connexion et d'inscription --> <!-- Afficher boutons de connexion et d'inscription -->
{% if nom and prenom %} {% if nom and prenom %}
<!-- Afficher bouton de déconnexion --> <!-- Afficher bouton de déconnexion -->
<a href="{{dir}}/deconnexion" class="button">Déconnexion</a> <a href="{{dir}}/user/deconnexion" class="button">Déconnexion</a>
{% else %} {% else %}
<div class="login-register"> <div class="login-register">
<a href="{{dir}}/connection" class="button">Connexion</a> <a href="{{dir}}/connection" class="button">Connexion</a>

@ -19,14 +19,18 @@
{% for profil in profils %} {% for profil in profils %}
<div class="profile d-flex"> <div class="profile d-flex">
<div class="profile-image-container"> <div class="profile-image-container">
<img src="{{ dir }}/public/assets/{{ profil.image ?: 'default.png' }}" alt="Image de profil"> <img src=" {{dir}}/public/uploads/{{ profil.getImage() ?: 'logo.png'}}" alt="Image de profil">
</div> </div>
<div class="profile-details"> <div class="profile-details">
<p>{{ profil.prenom }} {{ profil.nom }}</p> <p>{{ profil.prenom }} {{ profil.nom }}</p>
<p class="job-title">Développeur web chez CGI FRANCE</p> {% if profil.experience is defined %}
<a href="{{ 'voir_profil.php?id=' ~ profil.id }}" class="btn btn-primary">Voir le détail du profil</a> <p class="job-title">{{ profil.experience }}</p>
{% if user.role == 'admin' %} {% else %}
<a href="{{ 'bloquer_profil.php?id=' ~ profil.id }}" class="btn btn-danger">Bannir l'utilisateur</a> <p class="job-title">Cet utilisateur n'a pas renseigné son poste</p>
{% endif %}
<a href="#" class="btn btn-primary">Voir le détail du profil</a>
{% if role == 'Admin' %}
<button onclick="fetch('{{ dir }}/admin/{{ profil.id }}/supprimerCompte');window.location.reload()" class="btn btn-danger">Bannir l'utilisateur</button>
{% endif %} {% endif %}
</div> </div>
</div> </div>
@ -62,7 +66,7 @@
</ul> </ul>
</nav> </nav>
<script></script>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>

Loading…
Cancel
Save