diff --git a/app/CheckinWebhook.php b/app/CheckinWebhook.php index 62c18fb..b518f5b 100644 --- a/app/CheckinWebhook.php +++ b/app/CheckinWebhook.php @@ -7,6 +7,9 @@ use Illuminate\Support\Str; class CheckinWebhook extends Model { + /** @var int ユーザーごとの作成数制限 */ + const PER_USER_LIMIT = 10; + public $incrementing = false; protected $keyType = 'string'; diff --git a/app/Http/Controllers/SettingController.php b/app/Http/Controllers/SettingController.php index b3a46ba..f57d897 100644 --- a/app/Http/Controllers/SettingController.php +++ b/app/Http/Controllers/SettingController.php @@ -79,8 +79,9 @@ class SettingController extends Controller public function webhooks() { $webhooks = Auth::user()->checkinWebhooks; + $webhooksLimit = CheckinWebhook::PER_USER_LIMIT; - return view('setting.webhooks')->with(compact('webhooks')); + return view('setting.webhooks')->with(compact('webhooks', 'webhooksLimit')); } public function storeWebhooks(Request $request) @@ -89,6 +90,11 @@ class SettingController extends Controller 'name' => 'required|string|max:255' ]); + if (Auth::user()->checkinWebhooks()->count() >= CheckinWebhook::PER_USER_LIMIT) { + return redirect()->route('setting.webhooks') + ->with('status', CheckinWebhook::PER_USER_LIMIT . '件以上のWebhookを作成することはできません。'); + } + Auth::user()->checkinWebhooks()->create($validated); return redirect()->route('setting.webhooks')->with('status', '作成しました。'); diff --git a/resources/views/setting/webhooks.blade.php b/resources/views/setting/webhooks.blade.php index 83281db..7e62d73 100644 --- a/resources/views/setting/webhooks.blade.php +++ b/resources/views/setting/webhooks.blade.php @@ -13,15 +13,19 @@
Webhook APIは予告なく仕様変更を行う場合がございます。また、サーバに対する過剰なリクエストや、不審な公開チェックインを繰り返している場合には管理者の裁量によって予告なく無効化(削除)する場合があります。
通常利用と同様、1分以内のチェックインは禁止されていることを考慮してください。また、テスト目的であれば非公開チェックインをご活用ください。
1ユーザーが作成可能なWebhookは、{{ $webhooksLimit }}件までに制限されています。
+ @else + + @endif @if (!empty($webhooks))