Ajoute la vue d'erreur et un validateur

main
Colin FRIZOT 2 years ago
parent 4a59f41859
commit 8118cfe188

@ -7,33 +7,37 @@ namespace Silex\Controller;
use Silex\DI\DI;
use Silex\Http\HttpResponse;
use Silex\Model\User;
use Silex\Validation\UserValidation;
class SecurityController
{
public function login(DI $di): HttpResponse
{
$fail = false;
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$errors = [];
if ($_SERVER['REQUEST_METHOD'] === 'POST' && UserValidation::isValidLogin($_POST,$errors)) {
$success = $di->getSecurity()->initLogin($_POST['login'], $_POST['password']);
if ($success) {
HttpResponse::redirect($di->getRouter()->url(''));
} else {
$errors[] = 'Login or password invalid';
}
$fail = !$success;
}
return HttpResponse::found('login', ['fail' => $fail]);
return HttpResponse::found('login', ['errors' => $errors]);
}
public function register(DI $di): HttpResponse
{
$fail = false;
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$errors = [];
if ($_SERVER['REQUEST_METHOD'] === 'POST' && UserValidation::isValidUser($_POST,$errors)) {
$user = $di->getSecurity()->register(User::fromRawPassword($_POST['login'], $_POST['password']));
if ($user !== null) {
HttpResponse::redirect($di->getRouter()->url(''));
}
$fail = $user === null;
if($user === null){
$errors[] = 'Login is already taken';
}
}
return HttpResponse::found('register', ['fail' => $fail]);
return HttpResponse::found('register', ['errors' => $errors]);
}
public function logout(DI $di): void

@ -0,0 +1,41 @@
<?php
declare(strict_types=1);
namespace Silex\Validation;
final class UserValidation
{
public static function isValidLogin(array &$post, array &$errors): bool
{
if(empty($post['login'])) {
$errors[] = 'Login error';
}
if(empty($post['password'])) {
$errors[] = 'Password error';
}
return empty($errors);
}
public static function isValidUser(array &$post, array &$errors): bool
{
if(empty($post['login'])) {
$errors[] = 'Login empty error';
}
if(empty($post['password'])) {
$errors[] = 'Password empty error';
}
if(empty($post['password-confirmation'])) {
$errors[] = 'Password confirmation empty error';
}
if($post['password'] !== $post['password-confirmation']){
$errors[] = 'Password confirmation not matching error';
}
return empty($errors);
}
}

@ -0,0 +1,11 @@
<?php if ($params['errors']) :
foreach ($params['errors'] as $error) { ?>
<article class="message is-danger">
<div class="message-header">
<p>Auth failed</p>
</div>
<div class="message-body">
<?= $error?>
</div>
</article>
<?php } endif ?>

@ -1,13 +1,4 @@
<?php if ($params['fail']) : ?>
<article class="message is-danger">
<div class="message-header">
<p>Auth failed</p>
</div>
<div class="message-body">
Login and/or password is invalid.
</div>
</article>
<?php endif ?>
<?php require 'errors.php' ?>
<form action="<?= $_SERVER['REQUEST_URI'] ?>" method="post">
<div class="field">
<label class="label" for="login">Login</label>

@ -1,13 +1,4 @@
<?php if ($params['fail']) : ?>
<article class="message is-danger">
<div class="message-header">
<p>Registration failed</p>
</div>
<div class="message-body">
Login is already taken.
</div>
</article>
<?php endif ?>
<?php require 'errors.php' ?>
<form action="<?= $_SERVER['REQUEST_URI'] ?>" method="post">
<div class="field">
<label class="label" for="login">Login</label>

Loading…
Cancel
Save