format and fix phpstan
continuous-integration/drone/push Build is passing Details

pull/12/head
samuel 1 year ago
parent e0e57b4d65
commit c1fec9243b

@ -2,9 +2,8 @@ import React, { CSSProperties, useState } from "react"
import "../style/visualizer.css" import "../style/visualizer.css"
import Court from "../assets/basketball_court.svg" import Court from "../assets/basketball_court.svg"
export default function Visualizer({ id, name }: { id: number; name: string }) {
export default function Visualizer({id, name}: { id: number; name: string }) { const [style, setStyle] = useState<CSSProperties>({})
const [style, setStyle] = useState<CSSProperties>({});
return ( return (
<div id="main"> <div id="main">
@ -20,5 +19,5 @@ export default function Visualizer({id, name}: { id: number; name: string }) {
/> />
</div> </div>
</div> </div>
); )
} }

@ -8,10 +8,10 @@ use App\Http\HttpResponse;
use App\Http\ViewHttpResponse; use App\Http\ViewHttpResponse;
use App\Model\AuthModel; use App\Model\AuthModel;
use App\Validation\FieldValidationFail; use App\Validation\FieldValidationFail;
use App\Validation\ValidationFail;
use App\Validation\Validators; use App\Validation\Validators;
use Twig\Environment; use Twig\Environment;
class AuthController { class AuthController {
private AuthModel $model; private AuthModel $model;
@ -26,7 +26,12 @@ class AuthController {
return ViewHttpResponse::twig("display_register.html.twig", []); return ViewHttpResponse::twig("display_register.html.twig", []);
} }
private function displayBadFields(string $viewName, array $fails): HttpResponse{ /**
* @param string $viewName
* @param ValidationFail[] $fails
* @return HttpResponse
*/
private function displayBadFields(string $viewName, array $fails): HttpResponse {
$bad_fields = []; $bad_fields = [];
foreach ($fails as $err) { foreach ($fails as $err) {
if ($err instanceof FieldValidationFail) { if ($err instanceof FieldValidationFail) {
@ -36,48 +41,54 @@ class AuthController {
return ViewHttpResponse::twig($viewName, ['bad_fields' => $bad_fields]); return ViewHttpResponse::twig($viewName, ['bad_fields' => $bad_fields]);
} }
/**
* @param mixed[] $request
* @return HttpResponse
*/
public function confirmRegister(array $request): HttpResponse { public function confirmRegister(array $request): HttpResponse {
$fails = []; $fails = [];
$request = HttpRequest::from($request, $fails, [ $request = HttpRequest::from($request, $fails, [
"username" => [Validators::name(), Validators::lenBetween(2, 32)], "username" => [Validators::name(), Validators::lenBetween(2, 32)],
"password" => [Validators::lenBetween(6, 256)], "password" => [Validators::lenBetween(6, 256)],
"confirmpassword" => [Validators::lenBetween(6, 256)], "confirmpassword" => [Validators::lenBetween(6, 256)],
"email" => [Validators::regex("/^\\S+@\\S+\\.\\S+$/"),Validators::lenBetween(5, 256)] "email" => [Validators::regex("/^\\S+@\\S+\\.\\S+$/"),Validators::lenBetween(5, 256)],
]); ]);
if (!empty($fails)) { if (!empty($fails)) {
return $this->displayBadFields("display_register.html.twig",$fails); return $this->displayBadFields("display_register.html.twig", $fails);
} }
$fails = $this->model->register($request['username'], $request["password"], $request['confirmpassword'], $request['email']); $fails = $this->model->register($request['username'], $request["password"], $request['confirmpassword'], $request['email']);
if (empty($fails)) { if (empty($fails)) {
$results = $this->model->getUserFields($request['email']); $results = $this->model->getUserFields($request['email']);
return ViewHttpResponse::twig("display_auth_confirm.html.twig", ['username' => $results['username'], 'email' => $results['email']]); return ViewHttpResponse::twig("display_auth_confirm.html.twig", ['username' => $results['username'], 'email' => $results['email']]);
} }
return $this->displayBadFields("display_register.html.twig",$fails); return $this->displayBadFields("display_register.html.twig", $fails);
} }
public function displayLogin():HttpResponse{ public function displayLogin(): HttpResponse {
return ViewHttpResponse::twig("display_login.html.twig", []); return ViewHttpResponse::twig("display_login.html.twig", []);
} }
/**
public function confirmLogin(array $request):HttpResponse{ * @param mixed[] $request
* @return HttpResponse
*/
public function confirmLogin(array $request): HttpResponse {
$fails = []; $fails = [];
$request = HttpRequest::from($request, $fails, [ $request = HttpRequest::from($request, $fails, [
"password" => [Validators::lenBetween(6, 256)], "password" => [Validators::lenBetween(6, 256)],
"email" => [Validators::regex("/^\\S+@\\S+\\.\\S+$/"),Validators::lenBetween(5, 256)] "email" => [Validators::regex("/^\\S+@\\S+\\.\\S+$/"),Validators::lenBetween(5, 256)],
]); ]);
if (!empty($fails)) { if (!empty($fails)) {
return $this->displayBadFields("display_login.html.twig",$fails); return $this->displayBadFields("display_login.html.twig", $fails);
} }
$fails = $this->model->login($request['email'],$request['password']); $fails = $this->model->login($request['email'], $request['password']);
if (empty($fails)){ if (empty($fails)) {
$results = $this->model->getUserFields($request['email']); $results = $this->model->getUserFields($request['email']);
return ViewHttpResponse::twig("display_auth_confirm.html.twig",['username' => $results['username'], 'email' => $results['email']]); return ViewHttpResponse::twig("display_auth_confirm.html.twig", ['username' => $results['username'], 'email' => $results['email']]);
} }
return $this->displayBadFields("display_login.html.twig",$fails); return $this->displayBadFields("display_login.html.twig", $fails);
} }
} }

@ -3,7 +3,7 @@
namespace App\Gateway; namespace App\Gateway;
use App\Connexion; use App\Connexion;
use \PDO; use PDO;
class AuthGateway { class AuthGateway {
private Connexion $con; private Connexion $con;
@ -16,23 +16,27 @@ class AuthGateway {
} }
public function mailExist(string $email):bool{ public function mailExist(string $email): bool {
return $this->getUserFields($email) != null; return $this->getUserFields($email) != null;
} }
public function insertAccount(string $username, string $hash, string $email):void{ public function insertAccount(string $username, string $hash, string $email): void {
$this->con->exec("INSERT INTO AccountUser VALUES (:username,:hash,:email)", [':username' => [$username, PDO::PARAM_STR],':hash'=> [$hash, PDO::PARAM_STR],':email'=>[$email, PDO::PARAM_STR]]); $this->con->exec("INSERT INTO AccountUser VALUES (:username,:hash,:email)", [':username' => [$username, PDO::PARAM_STR],':hash' => [$hash, PDO::PARAM_STR],':email' => [$email, PDO::PARAM_STR]]);
} }
public function getUserHash(string $email):string{ public function getUserHash(string $email): string {
$results = $this->con->fetch ("SELECT hash FROM AccountUser WHERE email = :email",[':email'=>[$email, PDO::PARAM_STR]]); $results = $this->con->fetch("SELECT hash FROM AccountUser WHERE email = :email", [':email' => [$email, PDO::PARAM_STR]]);
return $results[0]['hash']; return $results[0]['hash'];
} }
public function getUserFields (string $email): ?array { /**
$results = $this->con->fetch ("SELECT username,email FROM AccountUser WHERE email = :email",[':email'=>[$email, PDO::PARAM_STR]]); * @param string $email
* @return array<string,string>|null
*/
public function getUserFields(string $email): ?array {
$results = $this->con->fetch("SELECT username,email FROM AccountUser WHERE email = :email", [':email' => [$email, PDO::PARAM_STR]]);
$firstRow = $results[0] ?? null; $firstRow = $results[0] ?? null;
return $firstRow; return $firstRow;
} }

@ -5,10 +5,9 @@ namespace App\Model;
use App\Controller\AuthController; use App\Controller\AuthController;
use App\Gateway\AuthGateway; use App\Gateway\AuthGateway;
use App\Validation\FieldValidationFail; use App\Validation\FieldValidationFail;
use App\Validation\ValidationFail;
class AuthModel { class AuthModel {
private AuthGateway $gateway; private AuthGateway $gateway;
/** /**
* @param AuthGateway $gateway * @param AuthGateway $gateway
@ -18,31 +17,47 @@ class AuthModel {
} }
public function register(string $username, string $password, string $confirmPassword,string $email): array { /**
* @param string $username
* @param string $password
* @param string $confirmPassword
* @param string $email
* @return ValidationFail[]
*/
public function register(string $username, string $password, string $confirmPassword, string $email): array {
$errors = []; $errors = [];
if ($password != $confirmPassword) { if ($password != $confirmPassword) {
$errors[] = new FieldValidationFail("confirmpassword","password and password confirmation are not equals"); $errors[] = new FieldValidationFail("confirmpassword", "password and password confirmation are not equals");
} }
if ($this->gateway->mailExist($email)){ if ($this->gateway->mailExist($email)) {
$errors[] = new FieldValidationFail("email","email already exist"); $errors[] = new FieldValidationFail("email", "email already exist");
} }
if(empty($errors)){ if(empty($errors)) {
$hash = password_hash($password,PASSWORD_DEFAULT); $hash = password_hash($password, PASSWORD_DEFAULT);
$this->gateway->insertAccount($username,$hash,$email); $this->gateway->insertAccount($username, $hash, $email);
} }
return $errors; return $errors;
} }
public function getUserFields(string $email):array{ /**
* @param string $email
* @return array<string,string>|null
*/
public function getUserFields(string $email): ?array {
return $this->gateway->getUserFields($email); return $this->gateway->getUserFields($email);
} }
public function login(string $email,string $password): array{ /**
* @param string $email
* @param string $password
* @return ValidationFail[] $errors
*/
public function login(string $email, string $password): array {
$errors = []; $errors = [];
if (!$this->gateway->mailExist($email)) { if (!$this->gateway->mailExist($email)) {

Loading…
Cancel
Save