diff --git a/api.php b/api.php index ffb0ba9..4c4920f 100644 --- a/api.php +++ b/api.php @@ -45,9 +45,10 @@ $query = isset($_GET["req"]) ? $_GET["req"] : ""; $length = isset($_GET["duree"]) ? $_GET["duree"] : ""; $themes = isset($_GET["themes"]) ? explode(",", $_GET["themes"]) : []; + $tout_les_insa = isset($_GET["tout_les_insa"]) ? true : false; //print_r($_GET); try { - $results = RechercheExercices($query, $length, $themes); + $results = RechercheExercices($query, $length, $themes,$tout_les_insa); echo json_encode(["status" => "1", "resultats" => $results]); } catch (Exception $e) { echo json_encode(["status" => "0", "msg" => $e->getMessage()]); @@ -161,10 +162,10 @@ case "aj_doc": if($user_auth){ - if(!$csrf->validate($context='televersement',$_POST["jeton-csrf"])){ + /*if(!$csrf->validate($context='televersement',$_POST["jeton-csrf"])){ echo( json_encode(["status"=> "2","msg"=>"jeton csrf manquant ou invalide. ( contenu du champ : ".$_POST["jeton-csrf"]." )"]) ); break; - } + }*/ try{ ajouter_doc($_POST); @@ -249,10 +250,11 @@ $username = $_POST['username']; $password = $_POST['password']; + $nom_insa = $_POST['nom_insa']; $password_hash = password_hash($password, PASSWORD_DEFAULT); - $succes = inscription_utilisateur(htmlspecialchars($username),$password_hash); + $succes = inscription_utilisateur(htmlspecialchars($username),$password_hash,$nom_insa); if($succes){ echo( json_encode(["status"=> 1,"msg"=> "Utilisateur inscrit !" ]) ); }else{ diff --git a/bdd.php b/bdd.php index 696228f..0c7b800 100644 --- a/bdd.php +++ b/bdd.php @@ -53,14 +53,14 @@ function ajouter_doc($request){ die("Connection failed: " . $conn->connect_error); } - $sql = "INSERT INTO ensembles (commentaire_auteur,corrige_inclu,date_conception) VALUES(?,?,?)"; + $sql = "INSERT INTO ensembles (commentaire_auteur,corrige_inclu,date_conception,id_auteur) VALUES(?,?,?,?)"; try{ $stm = $conn->prepare($sql); $request['commentaire_auteur'] = htmlspecialchars($request["commentaire_auteur"]); $request["corrige_inclu"] = boolval($request["corrige_inclu"]); $request["date_conception"] = htmlspecialchars($request["date_conception"]); - $stm->bind_param("sis",$request['commentaire_auteur'],$request["corrige_inclu"],$request["date_conception"]); + $stm->bind_param("sisi",$request['commentaire_auteur'],$request["corrige_inclu"],$request["date_conception"],$_SESSION["user_id"]); $stm->execute(); //$conn->execute_query($sql,array(htmlspecialchars($request['commentaire_auteur']),boolval($request["corrige_inclu"]))); @@ -218,12 +218,16 @@ function saveFilesFromPost($postData,$id_ensemble) { } } -function RechercheExercices($query, $length, $tags) +function RechercheExercices($query, $length, $tags,$tout_les_insa) { global $conn; // Build the SQL query based on the search parameters - $sql = "SELECT * FROM documents AS d INNER JOIN ensembles AS e ON d.ensemble_id = e.id WHERE e.valide=TRUE "; + $sql = "SELECT * FROM documents AS d INNER JOIN ensembles AS e ON d.ensemble_id = e.id JOIN users as u ON u.id=e.id_auteur WHERE e.valide=TRUE"; + + if(!$tout_les_insa){ + $sql = $sql." AND u.nom_insa='".$_SESSION["nom_insa"]."'"; + } $conditions = []; @@ -352,20 +356,22 @@ function connecter_utilisateur($username,$password){ $ret = 0; - $stmt = $conn->prepare("SELECT password_hash,admin FROM users WHERE username = ?"); + $stmt = $conn->prepare("SELECT id,password_hash,admin,nom_insa FROM users WHERE username = ?"); $stmt->bind_param("s", $username); $stmt->execute(); $stmt->store_result(); if ($stmt->num_rows > 0) { - $stmt->bind_result($password_hash,$admin); + $stmt->bind_result($id,$password_hash,$admin,$nom_insa); $ret = $stmt->fetch(); if (password_verify($password, $password_hash)) { $_SESSION["utilisateur_authentifie"] = true; $_SESSION["username"] = $username; $_SESSION["admin"] = $admin; + $_SESSION["nom_insa"] = $nom_insa; + $_SESSION["user_id"] = $id; $ret = 1; } else { $ret = 0; @@ -379,12 +385,12 @@ function connecter_utilisateur($username,$password){ } -function inscription_utilisateur($username,$password_hash){ +function inscription_utilisateur($username,$password_hash,$nom_insa){ global $conn; - $stmt = $conn->prepare("INSERT INTO users (username, password_hash) VALUES (?, ?)"); - $stmt->bind_param("ss", $username, $password_hash); + $stmt = $conn->prepare("INSERT INTO users (username, password_hash,nom_insa) VALUES (?, ?,?)"); + $stmt->bind_param("sss", $username, $password_hash,$nom_insa); $ret = $stmt->execute(); @@ -395,6 +401,8 @@ function inscription_utilisateur($username,$password_hash){ $_SESSION["utilisateur_authentifie"] = true; $_SESSION["username"] = $username; $_SESSION["admin"] = 0; + $_SESSION["nom_insa"] = $nom_insa; + $_SESSION["user_id"] = $conn->insert_id; } return $ret; diff --git a/css/index.css b/css/index.css index 2ba7da2..0027294 100644 --- a/css/index.css +++ b/css/index.css @@ -195,4 +195,14 @@ .secondary-text { font-size: 14px; color: #777; +} + +#recherche_input{ + height: 4vw; +} + + +.checkbox{ + height: 20px; + width: 20px; } \ No newline at end of file diff --git a/css/inscription.css b/css/inscription.css index 8b60efd..1dd5e96 100644 --- a/css/inscription.css +++ b/css/inscription.css @@ -118,3 +118,10 @@ margin-right: auto; display: block; } + +.label-input{ + margin-left: auto; + margin-right: auto; + font-size: larger; + margin-top: 1vw; +} \ No newline at end of file diff --git a/index.php b/index.php index 99cf576..b0513a3 100644 --- a/index.php +++ b/index.php @@ -24,9 +24,18 @@

Comme vous pouvez le constater, on cherche quelqu'un pour le design (html + css) du site :D club.info@amicale-insat.fr

- S'inscrire - Se connecter - Se déconnecter + + Se déconnecter + + S'inscrire + Se connecter +

@@ -42,7 +51,9 @@
- + + +
diff --git a/init_db.php b/init_db.php index b91ba18..36faa18 100644 --- a/init_db.php +++ b/init_db.php @@ -12,6 +12,15 @@ if ($conn->connect_error) { // Create tables $sql = " + + CREATE TABLE IF NOT EXISTS users ( + id INT AUTO_INCREMENT PRIMARY KEY, + username VARCHAR(50) NOT NULL UNIQUE, + password_hash VARCHAR(255) NOT NULL, + nom_insa VARCHAR(25) NOT NULL, + admin BOOLEAN DEFAULT 0 + ); + CREATE TABLE IF NOT EXISTS themes ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL @@ -23,7 +32,9 @@ $sql = " valide BOOLEAN NOT NULL DEFAULT FALSE, corrige_inclu BOOLEAN NOT NULL DEFAULT FALSE, date_televersement DATETIME DEFAULT CURRENT_TIMESTAMP, - date_conception VARCHAR(9) + date_conception VARCHAR(10), + id_auteur INT, + FOREIGN KEY (id_auteur) REFERENCES users(id) ); CREATE TABLE IF NOT EXISTS documents ( @@ -60,13 +71,6 @@ $sql = " FOREIGN KEY (theme_id) REFERENCES themes(id) ); - CREATE TABLE IF NOT EXISTS users ( - id INT AUTO_INCREMENT PRIMARY KEY, - username VARCHAR(50) NOT NULL UNIQUE, - password_hash VARCHAR(255) NOT NULL, - admin BOOLEAN DEFAULT 0 - ); - "; if ($conn->multi_query($sql) === TRUE) { diff --git a/inscription.php b/inscription.php index 565a750..13c115a 100644 --- a/inscription.php +++ b/inscription.php @@ -25,6 +25,21 @@ session_start();
+ +

Selectionne ton INSA

+ +

Oui c'est vide oui ~\_(^-^)_/~

diff --git a/js/index.js b/js/index.js index 7cddbc6..d2cc621 100644 --- a/js/index.js +++ b/js/index.js @@ -1,4 +1,7 @@ + async function rechercher(){ + + console.log("recherche !!"); var req = document.getElementById("recherche_input").value; var themes = []; Array.from(document.getElementsByClassName("theme")).forEach(function (el) { @@ -7,22 +10,29 @@ async function rechercher(){ }); var duree =document.getElementById("duree_input").value - var url = "api.php/rechercher?req="+req; if(themes.toString() != ""){ url = url +"&themes="+themes.toString(); } if(duree != ""){ - url = url +"duree="+duree; + url = url +"&duree="+duree; } console.log(url); + + var tout_les_insa_switch = document.getElementById("tout_les_insa_switch").checked; + if(tout_les_insa_switch){ + url = url+"&tout_les_insa=1" + } + resp = await fetch(url); data = await resp.json(); + console.log(data); + // vide d'abord les éléments présents dans la liste sur la page document.getElementById("liste_resultats").innerHTML = ""; @@ -129,7 +139,6 @@ async function gen_chronologie(){ resp = await fetch(url); data = await resp.json(); - console.log(data); // vide d'abord les éléments présents dans la liste sur la page document.getElementById("liste_resultats").innerHTML = ""; @@ -240,17 +249,21 @@ document.addEventListener("DOMContentLoaded", (event)=>{ gen_chronologie(); test_auth(); - document.getElementById("recherche_input").onkeydown =function(event) { + document.getElementById("recherche_input").addEventListener("keypress", (event)=>{ + console.log("???"); if (event.key === "Enter"){ + event.preventDefault(); rechercher(); } - } + }); document.getElementById("recherche_form").onsubmit = function(event){ event.preventDefault(); // faire tomber le clavier sur mobile document.activeElement.blur(); rechercher(); + + } document.getElementById("themes_input").onkeydown =function(event) { @@ -276,5 +289,6 @@ document.addEventListener("DOMContentLoaded", (event)=>{ window.location.pathname = "/archinsa"; }); + }); diff --git a/js/inscription.js b/js/inscription.js index 89d0e45..412eb9b 100644 --- a/js/inscription.js +++ b/js/inscription.js @@ -4,7 +4,8 @@ function inscription(){ formData.append("username",document.getElementById("username-input").value); formData.append("password",document.getElementById("password-input").value); - + console.log(document.getElementById("insa-input").value); + formData.append("nom_insa",document.getElementById("insa-input").value) formData.append("jeton-csrf",jeton_csrf); fetch('api.php/inscription', { diff --git a/js/televerser.js b/js/televerser.js index f50ac73..8d1aa24 100644 --- a/js/televerser.js +++ b/js/televerser.js @@ -44,7 +44,7 @@ function televerser_fichiers() { formData.append("type",document.getElementById("select_type").value); - formData.append("titre",concatenater_titre_inputs()); + formData.append("titre",concatener_titre_inputs()); formData.append("commentaire_auteur",document.getElementById("commentaire_auteur").value); formData.append("corrige_inclu",document.getElementById("corrige_checkbox").value); diff --git a/readme.md b/readme.md index 7c34e7c..717fb74 100644 --- a/readme.md +++ b/readme.md @@ -59,7 +59,9 @@ D'autres fonctionnalités seront ajoutées petit à petit. (si vous avez des sug ## TOUDOU : -> Tester le code qui a été séparé en plusieurs fichiers différents (les pages pour utilisateurs) +> choisir un insa à l'inscription +> rajouter automatiquement l'insa de celui qui dépose un truc dans la table des ensembles +> mettre un switch pour activer une recherche sur tout les insa ### téléverser.php : @@ -70,10 +72,4 @@ let ex = [{duree:"10",themes:["algèbre","analyse"],commentaire_exo:"cci est un ; `` -### _partials/_head.php -- définir la variable $titre_page avant de l'inclure -- va s'occuper de generer tout ce qu'on met dans les tags ainsi que d'importer un fichier css du même nom que la page depuis css/.css (s'il existe) -### _partials/_footer.php -- tout ce qu'on veut faire en fin de chargement de page -- va inclure un script depuis js/.js (s'il existe). diff --git a/validation.php b/validation.php index a46282c..48a7049 100644 --- a/validation.php +++ b/validation.php @@ -6,16 +6,15 @@ session_start(); $csrf = new CSRF(); - -include("session_verif.php"); - - +// Check if user is logged in and is an admin +if (!isset($_SESSION["utilisateur_authentifie"]) || $_SESSION["utilisateur_authentifie"] !== true || !$_SESSION["admin"]) { + header("Location: index.php"); + exit; +} include("test_creds.php"); $conn = new mysqli($servername, $username, $password,$dbname); -admin_seulement(); - // Function to fetch and display documents function generer_chronologie() {