la j'en ai vraiment ras le cul

main
Thomas Chazot 2 years ago
parent bf87945b9e
commit 9eed54bb12

@ -0,0 +1,178 @@
@import url('https://fonts.googleapis.com/css?family=Raleway:400,700');
* {
box-sizing: border-box;
margin: 0;
padding: 0;
font-family: Raleway, sans-serif;
}
body {
background: linear-gradient(90deg, #C7C5F4, #776BCC);
}
.container {
display: flex;
align-items: center;
justify-content: center;
min-height: 100vh;
}
.screen {
background: linear-gradient(90deg, #5D54A4, #7C78B8);
position: relative;
height: 600px;
width: 360px;
box-shadow: 0px 0px 24px #5C5696;
}
.screen__content {
z-index: 1;
position: relative;
height: 100%;
}
.screen__background {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 0;
-webkit-clip-path: inset(0 0 0 0);
clip-path: inset(0 0 0 0);
}
.screen__background__shape {
transform: rotate(45deg);
position: absolute;
}
.screen__background__shape1 {
height: 520px;
width: 520px;
background: #FFF;
top: -50px;
right: 120px;
border-radius: 0 72px 0 0;
}
.screen__background__shape2 {
height: 220px;
width: 220px;
background: #6C63AC;
top: -172px;
right: 0;
border-radius: 32px;
}
.screen__background__shape3 {
height: 540px;
width: 190px;
background: linear-gradient(270deg, #5D54A4, #6A679E);
top: -24px;
right: 0;
border-radius: 32px;
}
.screen__background__shape4 {
height: 400px;
width: 200px;
background: #7E7BB9;
top: 420px;
right: 50px;
border-radius: 60px;
}
.login {
width: 320px;
padding: 30px;
padding-top: 156px;
}
.login__field {
padding: 20px 0px;
position: relative;
}
.login__icon {
position: absolute;
top: 30px;
color: #7875B5;
}
.login__input {
border: none;
border-bottom: 2px solid #D1D1D4;
background: none;
padding: 10px;
padding-left: 24px;
font-weight: 700;
width: 75%;
transition: .2s;
}
.login__input:active,
.login__input:focus,
.login__input:hover {
outline: none;
border-bottom-color: #6A679E;
}
.login__submit {
background: #fff;
font-size: 14px;
margin-top: 30px;
padding: 16px 20px;
border-radius: 26px;
border: 1px solid #D4D3E8;
text-transform: uppercase;
font-weight: 700;
display: flex;
align-items: center;
width: 100%;
color: #4C489D;
box-shadow: 0px 2px 2px #5C5696;
cursor: pointer;
transition: .2s;
}
.login__submit:active,
.login__submit:focus,
.login__submit:hover {
border-color: #6A679E;
outline: none;
}
.button__icon {
font-size: 24px;
margin-left: auto;
color: #7875B5;
}
.social-login {
position: absolute;
height: 140px;
width: 160px;
text-align: center;
bottom: 0px;
right: 0px;
color: #fff;
}
.social-icons {
display: flex;
align-items: center;
justify-content: center;
}
.social-login__icon {
padding: 20px 10px;
color: #fff;
text-decoration: none;
text-shadow: 0px 0px 8px #7875B5;
}
.social-login__icon:hover {
transform: scale(1.5);
}

@ -27,9 +27,6 @@
<?php
$dataView[]=new Liste(12, "test", false, null, array());
$dataView[]=new Liste(12, "belle bite", false, null, array());
if (isset($dataView)):
?>
@ -42,10 +39,13 @@
<?php
foreach ($dataView as $list){
?>
?>
<li class="table-row">
<div class="col col-1" data-label="Customer Name"><?php echo $list->getName(); ?></div>
<button class="col col-2">Modify</button>
<div class="col col-1" data-label="listName"><?php echo $list->getName(); ?></div>
<form method="POST" id="modifyList" name="modifyList" class="col col-2">
<input value="Modify" type="submit"/>
<input type="hidden" name="list" value="<?=$list->getId()?>"/></input>
</form>
</li>
<?php

@ -32,6 +32,8 @@
$tabTaches[]=new Tache(1, "wesh", "bonjour bonjour", false);
$tabTaches[]=new Tache(2, "wesh wesh", "au revoir", true);
$tabTaches[]=new Tache(3, "Bonjour", "au revoir", true);
$dataView[]=new Liste(12, "test", false, null, $tabTaches);
@ -54,7 +56,10 @@
if ($dataView[0]->getCreator()!=null){
if ($dataView[0]->getPrivate()){
?>
<input type="checkbox" id="private" checked class="col col-4"></input>
<form method="POST" id="changePrivate" name="changePrivate">
<input type="checkbox" id="private" checked class="col col-4"></input>
<input type="hidden" name="list" value="<?=$dataView[0]->getId()?>"/></input>
</form>
<?php
}
else{
@ -64,8 +69,12 @@
<?php
}
}
?>
<button class="col col-5"><i class="fa fa-trash"></i></button>
?>
<form method="POST" id="deleteList" name="deleteList" class="col col-5">
<input type="submit" value="Delete"/>
<input type="hidden" name="list" value="<?=$dataView[0]->getId()?>"/>
</form>
</li>
</ul>
@ -89,19 +98,35 @@
<?php
if ($tache->getCompleted()){
?>
<input type="checkbox" id="completed" checked class="col col-3"></input>
<form method="POST" id="changeCompleted" name="changeCompleted" class="col col-3">
<input type="checkbox" id="completed" checked />
<input type="hidden" name="list" value="<?=$dataView[0]->getId()?>"/>
<input type="hidden" name="tache" value="<?=$tache->getId()?>"/>
</form>
<?php
}
else{
?>
<input type="checkbox" id="completed" class="col col-3"></input>
<form method="POST" id="changeCompleted" name="changeCompleted" class="col col-3">
<input type="checkbox" id="completed" checked />
<input type="hidden" name="list" value="<?=$dataView[0]->getId()?>"/>
<input type="hidden" name="tache" value="<?=$tache->getId()?>"/>
</form>
<?php
}
?>
<button class="col col-4" data-label="Task content">Modify</button>
<button class="col col-5"><i class="fa fa-trash"></i></button>
<form method="POST" id="modifyTask" name="modifyTask" class="col col-4">
<input type="submit" value="Modify"/>
<input type="hidden" name="list" value="<?=$dataView[0]->getId()?>"/>
<input type="hidden" name="tache" value="<?=$tache->getId()?>"/>
</form>
<form method="POST" id="deleteTask" name="deleteTask" class="col col-5">
<input type="submit" value="Delete"/>
<input type="hidden" name="list" value="<?=$dataView[0]->getId()?>"/>
<input type="hidden" name="tache" value="<?=$tache->getId()?>"/>
</form>
</li>
@ -109,7 +134,10 @@
}
?>
<li class="table-row">
<button class="col col-6" data-label="add Task">Add Task</button>
<form method="POST" id="addTask" name="addTask" class="col col-6">
<input type="submit" value="Add task" />
<input type="hidden" name="list" value="<?=$dataView[0]->getId()?>"/>
</form>
</li>

@ -0,0 +1,45 @@
<!DOCTYPE html>
<html>
<head>
<title>Slide Navbar</title>
<link rel="stylesheet" type="text/css" href="slide navbar style.css">
<link href="Style/signInStyle.css" rel="stylesheet">
</head>
<div class="container">
<div class="screen">
<div class="screen__content">
<form class="login">
<div class="login__field">
<i class="login__icon fas fa-user"></i>
<input type="text" class="login__input" name="username" placeholder="Username">
</div>
<div class="login__field">
<i class="login__icon fas fa-lock"></i>
<input type="password" class="login__input" name="password" placeholder="Password">
</div>
<button class="button login__submit">
<span class="button__text">Log In Now</span>
<i class="button__icon fas fa-chevron-right"></i>
</button>
</form>
<div class="social-login">
<h3>log in via</h3>
<div class="social-icons">
<a href="#" class="social-login__icon fab fa-instagram"></a>
<a href="#" class="social-login__icon fab fa-facebook"></a>
<a href="#" class="social-login__icon fab fa-twitter"></a>
</div>
</div>
</div>
<div class="screen__background">
<span class="screen__background__shape screen__background__shape4"></span>
<span class="screen__background__shape screen__background__shape3"></span>
<span class="screen__background__shape screen__background__shape2"></span>
<span class="screen__background__shape screen__background__shape1"></span>
</div>
</div>
</div>
</html>

@ -3,36 +3,47 @@
<head>
<title>Slide Navbar</title>
<link rel="stylesheet" type="text/css" href="slide navbar style.css">
<link href="Style/signUp.css" rel="stylesheet">
<link href="Style/signInStyle.css" rel="stylesheet">
</head>
<body>
<div class="main">
<input type="checkbox" id="chk" aria-hidden="true">
<div class="signup">
<form>
<label for="chk" aria-hidden="true">Login</label>
<input type="txt" name="username" placeholder="Username" required="">
<input type="password" name="password" placeholder="Password" required="">
<button>Login</button>
</form>
<div class="container">
<div class="screen">
<div class="screen__content">
<form class="login">
<div class="login__field">
<i class="login__icon fas fa-user"></i>
<input type="text" class="login__input" name="username" placeholder="Username">
</div>
<div class="login__field">
<i class="login__icon fas fa-lock"></i>
<input type="password" class="login__input" name="password" placeholder="Password">
</div>
<div class="login__field">
<i class="login__icon fas fa-lock"></i>
<input type="password" class="login__input" name="passwordconf" placeholder="Password confirmation">
</div>
<button class="button login__submit">
<span class="button__text">Sign up now</span>
<i class="button__icon fas fa-chevron-right"></i>
</button>
</form>
<div class="social-login">
<h3>log in via</h3>
<div class="social-icons">
<a href="#" class="social-login__icon fab fa-instagram"></a>
<a href="#" class="social-login__icon fab fa-facebook"></a>
<a href="#" class="social-login__icon fab fa-twitter"></a>
</div>
</div>
<div class="login">
<form>
<label for="chk" aria-hidden="true">Sign up</label>
<input type="txt" name="username" placeholder="Username" required="">
<input type="password" name="password" placeholder="Password" required="">
<input type="password" name="paswwordConf" placeholder="Password confirmation" required="">
<button>Sign up</button>
</form>
</div>
</div>
<div class="screen__background">
<span class="screen__background__shape screen__background__shape4"></span>
<span class="screen__background__shape screen__background__shape3"></span>
<span class="screen__background__shape screen__background__shape2"></span>
<span class="screen__background__shape screen__background__shape1"></span>
</div>
</div>
</body>
</html>
</div>
</html>

@ -2,24 +2,66 @@
class Validation{
static function val_action($action){
if (!isset($action)){
throw new Exceptionb('Pas d\'action');
}
}
static function val_connexion($usrName,$mdp,$dataVueEreur) {
if (!isset($usrName)||$usrName=="") {
$dataVueEreur[] ="Username or password missing";
}
if ($usrName != Validation::clear_string($usrName)){
$dataVueEreur[] = "Forbidden characters";
$usrName="";
}
if (!isset($mdp)||$mdp=="") {
$dataVueEreur[] ="Username or password missing";
}
if($mdp != Validation::clear_string($mdp)){
$dataVueEreur[] = "Forbidden characters";
$mdp="";
}
return $dataVueEreur;
}
static function val_form(string &$chaine, array &$dVueErreur){
static function val_inscription($username,$pwd1,$pwd2,$dataVueEreur){
if (!isset($username)||$username==="") {
$dataVueEreur[] ="All fields are required";
}
if($username != Validation::clear_string($username)){
$dataVueEreur[] = "Forbidden characters";
$username="";
}
if (!isset($pwd1)||$pwd1==="") {
$dataVueEreur[] ="All fields are required";
}
if($pwd1 != Validation::clear_string($pwd1)){
$dataVueEreur[] = "Forbidden characters";
$pwd1="";
}
if (!isset($pwd2)||$pwd2==="") {
$dataVueEreur[] ="All fields are required";
}
if($pwd2 != Validation::clear_string($pwd2)){
$dataVueEreur[] = "Forbidden characters";
$pwd2="";
}
if($pwd1 !== $pwd2){
$dataVueEreur[]="Invalid confirmation";
}
return $dataVueEreur;
}
if (!isset($chaine)||$chaine==""){
$dVueErreuR[] = "pas de chaine de charactère";
$chaine="";
static function val_intitule($name, $dataVueEreur){
if (!isset($name)||$name==="") {
$dataVueEreur[] ="Intitulé manquant";
}
if($name != Validation::clear_string($name)){
$dataVueEreur[] = "Forbidden characters";
$name="";
}
return $dataVueEreur;
}
if (!$chaine != filter_var($chaine, FILTER_SANITIZE_STRING)){
$dVueErreur[] = "tentative d'injection de code (attaque sécurité)";
$chaine="";
}
}
static function clear_string($champ){
return filter_var($champ, FILTER_SANITIZE_STRING);
}
}
?>

@ -4,10 +4,10 @@ $rep = __DIR__ . '/../';
//$location = "Location : http://londres.uca.local/" Finir le chemin du public_html
$base="dbthchazot1"; //nom bdd
$login="thchazot1";
$password="achanger";
$dsn="mysql:host=localhost;dbname=dbthchazot1"; // chemin vers bd (mysql:host=londres.uca.local;dbname=dblibreton => pour l'iut)
$base="bddDeQualite"; //nom bdd
$login="root";
$password="root";
$dsn="mysql:host=localhost;port=8888;dbname=bddDeQualite"; // chemin vers bd (mysql:host=londres.uca.local;dbname=dblibreton => pour l'iut)
$vues['erreur'] = 'Vues/erreur.php';

@ -1,29 +1,26 @@
<?php
class frontController {
class FrontController {
function __construct() {
global $rep, $vues;
public function __construct(){
$liste_actions_utilisateur = array('accessPrivateLists','crerListePv');
$liste_actions_visiteur = array('goHome','changeCompletedTache','accessCreationTachePage','addTache','delTache','accessListInfos','accessCreationListePage','accessInscription','accessConnectionPage','creerListe','delListe','connection','inscription','deconnection');
global $rep,$vues,$bd,$dataView,$styles,$assets;
session_start();
$dVueErreur = array();
$listActionUser=array('delete', 'update', 'ajouterListeU', 'supprimerListeU', 'modifierListeU', 'ajouterTacheU', 'supprimerTacheU', 'modifierTacheU'); // actions à rajouter
try{
$user = new mdlUser();
if (isset($_REQUEST['action'])){
$action = $_REQUEST['action'];
Validation::val_form($action, $dVueErreur);
}
if(in_array($action, $listActionUser)) {
new userController();
$user=$_SESSION??null;
$action = $_REQUEST['action'];
if (in_array($action,$liste_actions_utilisateur)){
if($user == null){
new VisitorController();
} else {
new UserController();
}
} else{
new VisitorController();
}
else {
new visitorController();
}
}
catch (Exception $e){
$dVueErreur[] = "Erreur FrontController";
require $rep.$vues['erreur'];
}
} catch (Exception $e){require ($rep.$vues['erreur']);}
}
}

@ -1,5 +1,5 @@
<?php
class userController {
class UserController {
function __construct()
{

@ -1,5 +1,5 @@
<?php
class visitorController {
class VisitorController {
function __construct()
{
@ -13,18 +13,18 @@ class visitorController {
try {
$action = $_REQUEST['action'];
echo ($action);
switch($action) {
case NULL:
echo ("WESH");
$this->Reinit();
break;
case "connexion":
$this->ValidationFormulaireLogin($dVueEreur);
$this->Connexion($login, $mdp);
break;
case "inscription":
$this->ValidationFormulaireLogin($dVueEreur);
$this->Inscription($login, $mdp);
break;
@ -39,52 +39,62 @@ class visitorController {
}
}
function Reinit() {
global $rep,$vues;
$dVue = array (
'username' => "",
'password' => "",
);
require ($rep.$vues['accueil']);
public function Reinit(){
global $rep,$vues,$dataView,$styles;
$model = new MdlListe();
$dataView = $model->getPublicList();
require($rep.$vues['accueil']);
$vues_erreur= array();
}
function ValidationFormulaireLogin(array $dVueEreur){
global $rep, $vues;
$username = $_POST['username'];
$mdp = $_POST['password'];
Validation::val_form($username, $mdp, $dVueEreur);
$dVue = array (
'username' => $username,
'password' => $mdp,
);
require ($rep.$vues['accueil']); //
}
function Inscription($username, $mdp){
$results = $this->$mdlUsr->insert($username, $mdp);
if($results != NULL) {
$_SESSION['username'] = $username;
$user = $this->$mdlUsr->getUserForConnection($username, $mdp);
require ($rep.$vues['accueil']);
return login ($rep.$vues['connexion']);
public function Inscription(array $vues_erreur){
global $rep,$vues,$dataView;
$username=$_POST['username'];
$password=$_POST['password'];
$confirm=$_POST['passwordconf'];
$model = new MdlUser();
$vues_erreur=Validation::val_inscription($username,$password,$confirm,$vues_erreur);
if($model->existUser($username)){
$vues_erreur[]="Username already taken";
}
if(empty($vues_erreur)){
$hash= password_hash($password,PASSWORD_DEFAULT);
$model->singUp($username,$hash);
$vues_erreur= array();
}
else{
require($rep.$vues['singUp']);
}
$_REQUEST['action']=null;
$this->reinit();
}
function Connexion($username, $mdp){
$user = $this->$mdlUsr->getUserForConnection($username, $mdp);
if($user != NULL) {
$_SESSION['username'] = $username;
require ($rep.$vues['accueil']);
return $username;
public function Connexion(array $vues_erreur){
global $rep,$vues,$dataView;
$username=$_POST['login'];
$password=$_POST['mdp'];
$vues_erreur=Validation::val_connexion($username,$password,$vues_erreur);
if(!empty($vues_erreur)){
require($rep.$vues['signIn']);
}
$model= new MdlUser();
if($model->existUser($username)){
if(password_verify($password,$model->getPasswordHash($username))){
$model->connexion($username);
$_REQUEST['action']=null;
$this->reinit();
$vues_erreur= array();
}
else{
$vues_erreur =array('username'=>$username,'password'=>$password);
require($rep.$vues['signIn']);
}
}
else {
require ($rep.$vues['connexion']);
else{
$vues_erreur =array('username'=>$usrname,'password'=>$pwd);
require($rep.$vues['signIn']);
}
}
}

@ -66,6 +66,45 @@ class ListeGateway
$results=$this->con->getResults();
return $results;
}
public function getPublicLists():array{
$listes = [];
$taches = null;
try {
$query = "SELECT * FROM Liste WHERE idCreator IS NULL";
$co->executeQuery($query, []);
$results = $this->con->getResults();
foreach($results as $row){
$idListe = $row['id'];
$queryTaches = "SELECT * FROM Tache WHERE idListe=:idListe";
$this->con->executeQuery($queryTaches, array(':idListe' => array($idListe, PDO::PARAM_INT)));
$resultsTaches = $co->getResults();
foreach($resultsTaches as $rowTaches){
if($rowTaches['complete']=="0"){
$taches[] = new Tache($rowTaches['id'], $rowTaches['nom'],false,$idListe);
}else{
$taches[] = new Tache($rowTaches['id'], $rowTaches['nom'],true,$idListe);
}
}
$listes[] = new Liste($row['id'], $row['nom'],null, $taches);
$taches = null;
}
}
catch(PDOException $Exception) {
echo 'erreur';
echo $Exception->getMessage();
}
return $listes;
}
}
?>

@ -9,11 +9,21 @@ class UserGateway
$this->con = $con;
}
public function insert(User $u): void{
$query = "INSERT INTO Utilisateur VALUES (null, :username, :password)";
$this->con->executeQuery($query, array(':username' => array($u->getUsername(), PDO::PARAM_STR), ':password' => array($u->getPassword(), PDO::PARAM_STR)));
public function insert(User $u){
try{
$query = "INSERT INTO Utilisateur VALUES (null, :username, :password)";
$this->con->executeQuery($query, array(':username' => array($u->getUsername(), PDO::PARAM_STR), ':password' => array($u->getPassword(), PDO::PARAM_STR)));
}
catch(PDOException $Exception){
echo 'erreur';
echo $Exception->getMessage();
return false;
}
return true;
}
public function delete(User $u): void{
$query = "DELETE FROM Utilisateur where id=:id";
$this->con->executeQuery($query, array(':id' => array($u->getId(), PDO::PARAM_INT)));
@ -24,13 +34,6 @@ class UserGateway
$this->con->executeQuery($query, array(':id' => array($u->getId(), PDO::PARAM_INT), ':username' => array($u->getUsername(), PDO::PARAM_STR), ':password' => array($u->getPassword(), PDO::PARAM_STR)));
}
public function findByNamePassword(string $username, string $password): array{
$query = "SELECT * FROM Utilisateur WHERE username=:username AND password=:password";
$this->con->executeQuery($query, array(':username' => array($username, PDO::PARAM_STR), ':password' => array($password, PDO::PARAM_STR)));
$results=$this->con->getResults();
return $results;
}
public function findByName(string $username): array{
$query = "SELECT * FROM Utilisateur WHERE username=:username";
$this->con->executeQuery($query, array(':username' => array($username, PDO::PARAM_STR)));
@ -45,20 +48,16 @@ class UserGateway
return $results;
}
/*
public function getTacheFromIdList(int $id): array{
$tabTaches=[];
$query = "SELECT * FROM Tache t where idListe=:id";
$this->con->executeQuery($query, array(':id' => array($id, PDO::PARAM_INT)));
$results=$this->con->getResults();
foreach ($results as $row) {
$tabTaches[]=new Tache($row['id'], $row['name'], $row['content'], $row['completed']);
function getHashedPassword(string $usrname):?string{
$truePasswd=null;
$query="SELECT password FROM Utilisateur WHERE name=:name";
$this->con->executeQuery($query,array('name'=>array($usrname,PDO::PARAM_STR)));
$results=$co->getResults();
foreach($res as $row){
$results=$row['pwd'];
}
return $tabTaches;
return $truePasswd;
}
*/
}
?>

@ -1,20 +1,14 @@
<html>
<body>
<?php
require_once(__DIR__.'/controllers/FrontController.php');
require_once('config/Autoload.php');
// Chargement config
require_once(__DIR__.'/config/config.php');
// Autoload des classes
require_once(__DIR__.'/config/Autoload.php');
Autoload::charger();
try{
require("Vues/addTask.php");
}
catch( PDOException $Exception ) {
echo 'erreur';
echo $Exception->getMessage();
}
// Construction du controleur
//$cont=new FrontControleur();
$cont= new FrontController();
?>
</body>
</html>

@ -70,6 +70,11 @@ class MdlListe{
}
return $tabListe;
}
public function getPublicList(){
$gate=new ListeGateway($this->con);
return $gate->getPublicLists();
}
}

@ -9,29 +9,17 @@ class MdlUser{
$this->con = $con;
}
public function getUserForConnection(string $username, string $password): ?User{
if (!empty($username) && !empty($password)){
$gate=new UserGateway($this->con);
$results=$gate->findByNamePassword($username, $password);
if (!empty($results)){
$user=new User($results[0]['id'], $results[0]['username'], $results[0]['password']);
return $user;
}
}
return null;
public function connexion($login){
$_SESSION['role'] = 'Utilisateur';
$_SESSION['login'] = $login;
}
public function insert(string $username, string $password): ?User{
$gate=new UserGateway($this->con);
$results=$gate->findByName($username);
if ($results==null){
$u=new User(0, $username, $password);
$gate->insert($u);
$id=$gate->getLastId();
$u->setId($id[0]['oldId']);
return $u;
public function signUp($login, $mdp){
$result=$this->con->insert($login, $mdp);
if ($result==true){
$_SESSION['role'] = 'Utilisateur';
$_SESSION['login'] = $login;
}
return null;
}
public function delete(User $user){
@ -52,6 +40,18 @@ class MdlUser{
$_SESSION = array();
}
public function existUser(string $name):bool{
$gate=new UserGateway($this->con);
if($gate->findByName($name) != null){
return true;
}
return false;
}
public function getPasswordHash(string $usr){
return $con->getHashedPassword($usr);
}
}

Loading…
Cancel
Save