Skip to content

Commit

Permalink
add validations
Browse files Browse the repository at this point in the history
  • Loading branch information
srgoogle23 committed Dec 28, 2024
1 parent 3dbf72b commit a1e43a6
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 50 deletions.
65 changes: 53 additions & 12 deletions app/Controller/UserController.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,43 +13,84 @@
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'];
$user->email = $validated['email'];
$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);
}
}
38 changes: 0 additions & 38 deletions app/Request/AddUserRequest.php

This file was deleted.

0 comments on commit a1e43a6

Please sign in to comment.