Validação 2
Validação garante a segurança, né?
<?php
// Arquivo: app/Http/Requests/CreateUserRequest.php
namespace App\Http\Requests;
use App\Models\User;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class CreateUserRequest extends FormRequest
{
public function rules(): array
{
return [
'email' => [
'required',
'email',
Rule::unique(User::class),
],
'password' => 'required|string|max:128',
];
}
}<?php
// Arquivo: app/Http/Controllers/UserController.php
namespace App\Http\Controllers;
use App\Http\Requests\CreateUserRequest;
use App\Models\User;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
class UserController extends Controller
{
public function post(CreateUserRequest $request): Response
{
$requestData = $request->all();
$requestData['password'] = password_hash(
$requestData['password'],
PASSWORD_BCRYPT,
);
User::create($requestData);
return response()->noContent();
}
}<?php
namespace App\Models;
use Illuminate\Foundation\Auth\User as UserBase;
use Illuminate\Notifications\Notifiable;
class User extends UserBase
{
use Notifiable;
/**
* The attributes that are mass assignable.
*/
protected array $fillable = [
'email',
'password',
'is_admin',
];
/**
* Warning: Should be used internally only. NEVER USE this
* method on any public API endpoint!
*/
public function createAdminUser(
string $email,
string $password
): self {
return static::create([
'is_admin' => true,
'email' => $email,
'password' => password_hash(
$password,
PASSWORD_BCRYPT,
),
]);
}
}