概要
LaravelでFormを扱うとき、FormValidationを使うことが多いですよね?(app/Requests/xxxRequext.php)
汎用的なRequestではなく、それぞれのFormにあったデータをバリデーションするために作成すると思います。
このとき自動生成されるauthorize
メソッドをとりあえずtrue
にして使っていませんか?
public function authorize(): bool
{
return true; // 何も考えずにtrueにする
}
せっかくなのでここを使ってみましょう
authorize
メソッドの意味
ここは、特定のアクセス以外を弾くときに使ったります。
例えば、ログイン済みユーザ以外はリクエストできなくするなど。
まあRouterでこの程度はやっていると思いますが、ログインしていても「特別な会員のみリクエストできる」などにも使えますね。
特定のアクセスのみ受け付けるようにする
いちばん簡単な「ログインしているユーザのみリクエストできる」を実装してみます。
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;
class HogeFugaRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
$user = Auth::user();
if ($user !== null) {
return true;
}
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
];
}
}
このようにすることで、ログインしているユーザはこのフォームでリクエストできますが、
ログインしていないユーザには403が返ります。
この記事を書いた人
Nな人(えぬなひと)。
Nは本名から取っています。
Laravelが大好きなPHPerで、WEBを作るときはLaravelを技術スタックに絶対推すマン。
PHP、Pythonと、昔はperlを書いていたP言語エンジニア。
最近はNimを書いたりしています。
Nは本名から取っています。
Laravelが大好きなPHPerで、WEBを作るときはLaravelを技術スタックに絶対推すマン。
PHP、Pythonと、昔はperlを書いていたP言語エンジニア。
最近はNimを書いたりしています。