From a1e43a658f7ced6cf70786a836d6eea6e9544294 Mon Sep 17 00:00:00 2001 From: Leonardo Oliveira <62403037+srgoogle23@users.noreply.github.com> Date: Sat, 28 Dec 2024 17:12:34 -0300 Subject: [PATCH] add validations --- app/Controller/UserController.php | 65 +++++++++++++++++++++++++------ app/Request/AddUserRequest.php | 38 ------------------ 2 files changed, 53 insertions(+), 50 deletions(-) delete mode 100644 app/Request/AddUserRequest.php diff --git a/app/Controller/UserController.php b/app/Controller/UserController.php index 34e432c..97d9ff1 100644 --- a/app/Controller/UserController.php +++ b/app/Controller/UserController.php @@ -13,29 +13,61 @@ namespace App\Controller; use App\Model\User; -use App\Request\AddUserRequest; +use Hyperf\Di\Annotation\Inject; use Hyperf\HttpServer\Contract\RequestInterface; use Hyperf\HttpServer\Contract\ResponseInterface; +use Hyperf\Validation\Contract\ValidatorFactoryInterface; use Ramsey\Uuid\Uuid; class UserController { + /** + * @Inject + * @var ValidatorFactoryInterface + */ + protected $validationFactory; + + public function __construct(ValidatorFactoryInterface $validationFactory) + { + $this->validationFactory = $validationFactory; + } + public function index(ResponseInterface $response) { - return $response->json(User::all()); + return $response->json(User::all())->withStatus(200); } - public function show(RequestInterface $request, ResponseInterface $response) + public function show(string $id, ResponseInterface $response) { - return $response->json(User::find($request->input('id'))); + if (! Uuid::isValid($id)) { + return $response->json(['status' => 'error', 'message' => 'Invalid user ID.'])->withStatus(422); + } + + $user = User::find($id); + if (! $user) { + return $response->json(['status' => 'error', 'message' => 'User not found.'])->withStatus(404); + } + return $response->json($user)->withStatus(200); } - public function store(AddUserRequest $request, ResponseInterface $response) + public function store(RequestInterface $request, ResponseInterface $response) { - // Valida os dados da requisição - $validated = $request->validated(); + $validator = $this->validationFactory->make( + $request->all(), + [ + 'name' => 'required|regex:/^[A-Za-z\s]+$/|min:2|max:255', + 'email' => 'required|email|unique:users,email|max:255', + 'password' => 'required|regex:/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[@$!%*#?&]).{8,}$/', + ] + ); + + if ($validator->fails()) { + $errorMessage = $validator->errors()->first(); + return $response->json(['status' => 'error', 'message' => $errorMessage])->withStatus(422); + } + + $validated = $validator->validated(); - // Cria um novo usuário $user = new User(); $user->id = Uuid::uuid4()->toString(); $user->name = $validated['name']; @@ -43,13 +75,22 @@ public function store(AddUserRequest $request, ResponseInterface $response) $user->password = $validated['password']; $user->save(); - return $response->json($user, 201); + unset($user->password); + + return $response->json($user)->withStatus(201); } - public function delete(RequestInterface $request, ResponseInterface $response) + public function delete(string $id, ResponseInterface $response) { - $user = User::find($request->input('id')); + if (! Uuid::isValid($id)) { + return $response->json(['status' => 'error', 'message' => 'Invalid user ID.'])->withStatus(422); + } + + $user = User::find($id); + if (! $user) { + return $response->json(['status' => 'error', 'message' => 'User not found.'])->withStatus(404); + } $user->delete(); - return $response->json($user); + return $response->json(['status' => 'success', 'message' => 'User deleted.'])->withStatus(200); } } diff --git a/app/Request/AddUserRequest.php b/app/Request/AddUserRequest.php deleted file mode 100644 index f7b303e..0000000 --- a/app/Request/AddUserRequest.php +++ /dev/null @@ -1,38 +0,0 @@ - 'required|alpha|min:2|max:255', - 'email' => 'required|email|unique:users,email|max:255', - 'password' => 'required|min:8|regex:/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[@$!%*#?&]).{8,}$/', - ]; - } -}