From 125a17cb5fdbe7ce2c7068307003e042cfe7590b Mon Sep 17 00:00:00 2001 From: Moreau Elise <moreau.elise13@gmail.com> Date: Sun, 1 Nov 2020 16:40:04 +0100 Subject: [PATCH] add location when create a new user --- .../Actions/User/CreateUserAction.php | 45 +++++++++++++++++-- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/src/Application/Actions/User/CreateUserAction.php b/src/Application/Actions/User/CreateUserAction.php index 686cf73..fab688b 100755 --- a/src/Application/Actions/User/CreateUserAction.php +++ b/src/Application/Actions/User/CreateUserAction.php @@ -6,6 +6,7 @@ namespace App\Application\Actions\User; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use App\Domain\User\User; +use App\Domain\Location\Location; use GeoIp2\Database\Reader; use DateTime; @@ -16,9 +17,8 @@ class CreateUserAction extends UserAction */ protected function action(): Response { - $parsedRequestBody = (array)$this->request->getParsedBody(); - + $username = $this->checkvalue($parsedRequestBody['username']); $firstname = $this->checkvalue($parsedRequestBody['firstname']); $lastname = $this->checkvalue($parsedRequestBody['lastname']); @@ -26,6 +26,31 @@ class CreateUserAction extends UserAction $password = $this->checkvalue($parsedRequestBody['password']); $confirmPassword = $this->checkvalue($parsedRequestBody['confirmpassword']); $contaminated = isset($parsedRequestBody['contaminated']) ? true : false; + + $hasLatitude = $this->checkFloat($parsedRequestBody['latitude'], 90); + $hasLongitude = $this->checkFloat($parsedRequestBody['longitude'], 180); + + if ((!$hasLatitude) or (!$hasLongitude)) + { + return $this->twig->render( + $this->response, "/user/create_user.twig", + array( + "username" => $username, + "firstname" => $firstname, + "lastname" => $lastname, + "mail" => $mail, + "contaminated" => $contaminated, + "password" => null, + "confirmpassword" => null, + "formstatus" => "error", + "flashMessages" => [['Please allow the geolocation.']] + ) + ); + } + + $latitude = (float) $parsedRequestBody['latitude']; + $longitude = (float) $parsedRequestBody['longitude']; + if ($password != $confirmPassword) { return $this->twig->render( @@ -74,7 +99,6 @@ class CreateUserAction extends UserAction "password" => null, "confirmpassword" => null, "flashMessages" => [["Mail already used"]], - "formstatus" => "error" ) ); } @@ -84,6 +108,10 @@ class CreateUserAction extends UserAction $date = new DateTime('now'); $user = new User(null, $username, $firstname, $lastname, $mail, $password, $date, $contaminated); + $location = new Location(null, $latitude, $longitude); + $user->setLocation($location); + + $this->em->persist($location); $this->em->persist($user); $this->em->flush(); @@ -106,4 +134,15 @@ class CreateUserAction extends UserAction return $value; } + protected function checkFloat($value, $number): bool + { + if (empty($value)) { return false; } + if (! is_numeric($value)) { return false; } + if (( (float) $value > $number) or ( (float) $value < $number * -1)) + { + return false; + } + return true; + } + } -- GitLab