Skip to content

Commit

Permalink
Merge pull request #55 from mathias73/dev
Browse files Browse the repository at this point in the history
PR dev into master #3
  • Loading branch information
mathiiii-dev authored Oct 15, 2020
2 parents 3ef6b53 + 8960c84 commit 67323e0
Show file tree
Hide file tree
Showing 11 changed files with 327 additions and 92 deletions.
6 changes: 4 additions & 2 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions index.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
$router = new Router($_GET['url']);
$router->get('/', 'Home#show');
$router->get('/sign-up', 'Signup#show');
$router->get('/sign-in', 'Signin#show');
$router->post('/signUp', 'Signup#signUp');
$router->post('/signIn', 'Signin#signIn');
$router->post('/sendmail', 'Mail#sendMail');
$router->get('/exit', 'Signin#disconnect');
$router->run();
12 changes: 3 additions & 9 deletions src/Controller/HomeController.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,12 @@

namespace App\Controller;

use Twig\Environment;
use Twig\Loader\FilesystemLoader;
use App\Model\Twig;

class HomeController
class HomeController extends Twig
{
public function show() : void
{
$loader = new FilesystemLoader('src/View');
$twig = new Environment($loader,[
'cache' => false//'src/tmp',
]);

echo $twig->render('home.html.twig');
$this->twig('home.html.twig', [''=>'']);
}
}
45 changes: 45 additions & 0 deletions src/Controller/SigninController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?php

namespace App\Controller;

use App\Model\Twig;
use App\Model\User;
use App\Model\UserManager;

class SigninController extends Twig
{
public function show($filter = null) : void
{
$this->twig('signin.html.twig',['erreur'=>''.$filter.'']);
}

public function signIn() : void
{
$user = new User([
'pseudo' => $_POST['pseudo'],
'password' => $_POST['password']
]);
$userManager = new UserManager();
if (empty($_POST["password"]) || empty($_POST["pseudo"])){
$this->show('Veuillez remplir tout les champs');
}
elseif (!$userManager->checkIfPseudoExist($user)){
$this->show('Pseudo incorrect');
}
elseif (!$userManager->checkPasswordHash($user)){
$this->show('Mauvais mot de passe');
}
else{
$userManager->connectUser($user);
$home = new HomeController();
$home->show();
}
}

public function disconnect(){
$userManager = new UserManager();
$userManager->userDisconnect();
$home = new HomeController();
$home->show();
}
}
33 changes: 23 additions & 10 deletions src/Controller/SignupController.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,18 @@

namespace App\Controller;

use App\Model\Repository\UserRepository;
use App\Model\Twig;
use App\Model\User;
use App\Model\UserManager;
use Twig\Environment;
use Twig\Loader\FilesystemLoader;

class SignupController
class SignupController extends Twig
{
public function show() : void
public function show($filter = null) : void
{
$loader = new FilesystemLoader('src/View');
$twig = new Environment($loader, [
'cache' => false//'src/tmp',
]);

echo $twig->render('signup.html.twig');
$this->twig('signup.html.twig', ['erreur'=>''.$filter.'']);
}

public function signUp() : void
Expand All @@ -32,7 +29,23 @@ public function signUp() : void
]);

$userManager = new UserManager();
$userManager->addUser($user);
$this->show();
if (!$userManager->isNotEmpty($user)){
$this->show('Veuillez remplir tout les champs');
}
elseif (!$userManager->checkPasswordLength()){
$this->show('Mot de passe trop court');
}
elseif (!$userManager->checkPseudo($user)){
$this->show('Pseudo déjà pris');
}
elseif (!$userManager->checkEmail($user)){
$this->show('Email déjà pris');
}else{
$userRepo = new UserRepository();
$userRepo->addUser($user);
$signin = new SigninController();
$signin->show();
}

}
}
74 changes: 74 additions & 0 deletions src/Model/Repository/UserRepository.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
<?php

namespace App\Model\Repository;

use App\Model\DbManager;
use App\Model\User;
use App\Model\UserManager;

class UserRepository extends DbManager
{
public function __construct()
{
$this->dbConnect();
}

public function addUser(User $user): void
{
$userManager = new UserManager();
if ($userManager->isNotEmpty($user) && $userManager->checkPasswordLength() && $userManager->checkPseudo($user) && $userManager->checkEmail($user)) {

$addUser = $this->dbConnect()->prepare(
'INSERT INTO User (firstname, lastname, email, pseudo, password, type, createdAt)
VALUES (:firstname, :lastname, :email, :pseudo, :password, :type, :createdAt)'
);

$addUser->bindValue(':firstname', $user->getFirstname(), \PDO::PARAM_STR);
$addUser->bindValue(':lastname', $user->getLastname(), \PDO::PARAM_STR);
$addUser->bindValue(':email', $user->getEmail(), \PDO::PARAM_STR);
$addUser->bindValue(':pseudo', $user->getPseudo(), \PDO::PARAM_STR);
$addUser->bindValue(':password', $user->getPassword(), \PDO::PARAM_STR);
$addUser->bindValue(':type', $user->getType(), \PDO::PARAM_STR);
$addUser->bindValue(':createdAt', $user->getCreatedAt(), \PDO::PARAM_STR);

$addUser->execute();
}
}

public function getUserByPseudo($pseudo)
{
$userPseudo = $this->dbConnect()->prepare("SELECT * FROM User WHERE pseudo = :pseudo");
$userPseudo->bindValue(':pseudo', $pseudo);
$userPseudo->execute();
$userPseudo->setFetchMode(\PDO::FETCH_CLASS | \PDO::FETCH_PROPS_LATE, '\Model\User');
return $userPseudo->fetch();
}

public function getUserByEmail($email)
{
$userEmail = $this->dbConnect()->prepare("SELECT * FROM User WHERE email = :email");
$userEmail->bindValue(':email', $email);
$userEmail->execute();
$userEmail->setFetchMode(\PDO::FETCH_CLASS | \PDO::FETCH_PROPS_LATE, '\Model\User');
return $userEmail->fetch();
}

public function getUserById($id)
{
$userId = $this->dbConnect()->prepare("SELECT * FROM User WHERE id = :id");
$userId->bindValue(':id', $id);
$userId->execute();
$userId->setFetchMode(\PDO::FETCH_CLASS | \PDO::FETCH_PROPS_LATE, '\Model\User');
return $userId->fetch();
}

public function getPasswordHash($user)
{
$userHash = $this->dbConnect()->prepare("SELECT password FROM User WHERE pseudo = :pseudo");
$userHash->bindValue(':pseudo', $user->getPseudo());
$userHash->execute();
$userHash->setFetchMode(\PDO::FETCH_CLASS | \PDO::FETCH_PROPS_LATE, '\Model\User');
$rslt = $userHash->fetch();
return $rslt["password"] ?? null;
}
}
28 changes: 28 additions & 0 deletions src/Model/Twig.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

namespace App\Model;

use Twig\Environment;
use Twig\Loader\FilesystemLoader;

class Twig
{
public function twig(string $view, array $filter) : void
{
$loader = new FilesystemLoader('src/View');
$twig = new Environment($loader, [
'cache' => false//'src/tmp',
]);

if(!isset($_SESSION))
{
session_start();
}
$userManager = new UserManager();
$userManager->getRememberMe();

$twig->addGlobal('session', $_SESSION ?? $userManager);

echo $twig->render($view, $filter);
}
}
Loading

0 comments on commit 67323e0

Please sign in to comment.