web: Ajoute une fixture pour le premier utilisateur

This commit is contained in:
2022-12-02 15:23:18 +01:00
parent 78a307aa07
commit 215387e233
6 changed files with 37 additions and 31 deletions

7
web/autoload.php Normal file
View File

@@ -0,0 +1,7 @@
<?php
require __DIR__ . '/src/Oki/Config/SplClassLoader.php';
require __DIR__ . '/src/Oki/Config/Config.php';
$loader = new SplClassLoader('Oki', __DIR__ . '/src');
$loader->register();

View File

@@ -0,0 +1,10 @@
<?php
use Oki\DI\DI;
use Oki\Model\User;
require __DIR__ . '/../autoload.php';
$user = User::fromRawPassword('test', 'test');
$security = (new DI())->getSecurity();
$security->register($user);

View File

@@ -1,10 +1,6 @@
<?php <?php
require __DIR__ . '/../src/Oki/Config/SplClassLoader.php'; require __DIR__ . '/../autoload.php';
require __DIR__ . '/../src/Oki/Config/Config.php';
$loader = new SplClassLoader('Oki', __DIR__ . '/../src');
$loader->register();
$home = new \Oki\Controller\HomeController(); $home = new \Oki\Controller\HomeController();
$api = new \Oki\Controller\ApiController(); $api = new \Oki\Controller\ApiController();

View File

@@ -47,30 +47,14 @@ class UserController
public function register(DI $di): HttpResponse public function register(DI $di): HttpResponse
{ {
$fail = false;
$errors = [];
if ($_SERVER['REQUEST_METHOD'] === 'POST') { if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$user = $di->getSecurity()->register(User::fromRawPassword($_POST['login'], $_POST['password']));
print_r($_POST); if ($user !== null) {
//HttpResponse::redirect($di->getRouter()->url(''));
if (empty($_POST['login']) || empty($_POST['password']) || empty($_POST['password_confirmation'])) { }
$html_code = 400; $fail = $user === null;
$errors[] = 'Fields are empty'; }
} else { return new HtmlResponse(200, 'register', ['fail' => $fail]);
$login = $_POST['login'];
$password = $_POST['password'];
$password_confirmation = $_POST['password_confirmation'];
if ($this->insertUser($login, $password, $password_confirmation, $di) != 200) {
$html_code = 400;
$errors[] = 'Failed to register';
}
}
if ($html_code == 200 || $html_code == 400) {
return new HtmlResponse($html_code, 'register', ['register' => $errors]);
}
}
return new HtmlResponse(200, 'register');
} }
} }

View File

@@ -37,6 +37,6 @@ class UserGateway
public function insert(User $user) public function insert(User $user)
{ {
$prep = $this->pdo->prepare("INSERT INTO user (login, password, perm) Values(:login, :password, :perm)"); $prep = $this->pdo->prepare("INSERT INTO user (login, password, perm) Values(:login, :password, :perm)");
$prep->execute(['login' => $user->getLogin(), 'password' => $user->getPassword(), 'perm' => $user->getPerm()]); $prep->execute(['login' => $user->getLogin(), 'password' => $user->getPassword(), 'perm' => $user->getPermissions()]);
} }
} }

View File

@@ -6,19 +6,28 @@ namespace Oki\Model;
class User class User
{ {
private int $id; private int $id_user;
private string $login; private string $login;
private string $password; private string $password;
private int $permissions; private int $permissions;
public static function fromRawPassword(string $login, string $password, int $permissions = 0): User
{
$user = new User();
$user->login = $login;
$user->password = password_hash($password, PASSWORD_DEFAULT);
$user->permissions = $permissions;
return $user;
}
public function setId(int $id) public function setId(int $id)
{ {
$this->id = $id; $this->id_user = $id;
} }
public function getId(): int public function getId(): int
{ {
return $this->id; return $this->id_user;
} }
public function setLogin(string $login) public function setLogin(string $login)