model = $model; } public function displayRegister(): HttpResponse { return ViewHttpResponse::twig("display_register.html.twig", []); } /** * @param string $viewName * @param ValidationFail[] $fails * @return HttpResponse */ private function displayBadFields(string $viewName, array $fails): HttpResponse { $bad_fields = []; foreach ($fails as $err) { if ($err instanceof FieldValidationFail) { $bad_fields[] = $err->getFieldName(); } } return ViewHttpResponse::twig($viewName, ['bad_fields' => $bad_fields]); } /** * @param mixed[] $request * @return HttpResponse */ public function confirmRegister(array $request): HttpResponse { $fails = []; $request = HttpRequest::from($request, $fails, [ "username" => [Validators::name(), Validators::lenBetween(2, 32)], "password" => [Validators::lenBetween(6, 256)], "confirmpassword" => [Validators::lenBetween(6, 256)], "email" => [Validators::regex("/^\\S+@\\S+\\.\\S+$/"),Validators::lenBetween(5, 256)], ]); if (!empty($fails)) { return $this->displayBadFields("display_register.html.twig", $fails); } $fails = $this->model->register($request['username'], $request["password"], $request['confirmpassword'], $request['email']); if (empty($fails)) { $results = $this->model->getUserFields($request['email']); return ViewHttpResponse::twig("display_auth_confirm.html.twig", ['username' => $results['username'], 'email' => $results['email']]); } return $this->displayBadFields("display_register.html.twig", $fails); } public function displayLogin(): HttpResponse { return ViewHttpResponse::twig("display_login.html.twig", []); } /** * @param mixed[] $request * @return HttpResponse */ public function confirmLogin(array $request): HttpResponse { $fails = []; $request = HttpRequest::from($request, $fails, [ "password" => [Validators::lenBetween(6, 256)], "email" => [Validators::regex("/^\\S+@\\S+\\.\\S+$/"),Validators::lenBetween(5, 256)], ]); if (!empty($fails)) { return $this->displayBadFields("display_login.html.twig", $fails); } $fails = $this->model->login($request['email'], $request['password']); if (empty($fails)) { $results = $this->model->getUserFields($request['email']); return ViewHttpResponse::twig("display_auth_confirm.html.twig", ['username' => $results['username'], 'email' => $results['email']]); } return $this->displayBadFields("display_login.html.twig", $fails); } }