Initial commit

This commit is contained in:
root
2026-05-09 17:28:23 +02:00
commit 9d73f82529
5575 changed files with 281989 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
<?php
namespace App\Http\Requests;
use App\Rules\GoogleRecaptchaRule;
use App\Rules\WebsiteWordfilterRule;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
use RyanChandler\LaravelCloudflareTurnstile\Rules\Turnstile;
class AccountSettingsFormRequest extends FormRequest
{
public function rules(): array
{
$usernameRegex = setting('username_regex', '/^[a-zA-Z0-9_.-]+$/');
return [
'username' => ['sometimes', 'string', sprintf('regex:%s', $usernameRegex), 'min:3', 'max:25', Rule::unique('users')->ignore($this->user()->id), new WebsiteWordfilterRule],
'mail' => ['required', 'email', Rule::unique('users')->ignore($this->user()->id), new WebsiteWordfilterRule],
'motto' => ['nullable', 'string', 'max:127', new WebsiteWordfilterRule],
'g-recaptcha-response' => [new GoogleRecaptchaRule],
'cf-turnstile-response' => [app(Turnstile::class)],
];
}
public function authorize(): bool
{
return true;
}
}
+17
View File
@@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class AccountTopupFormRequest extends FormRequest
{
public function rules(): array
{
return [
'amount' => ['required', 'integer', 'min:1', 'max:250'],
];
}
}
+21
View File
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests;
use App\Rules\WebsiteWordfilterRule;
use Illuminate\Foundation\Http\FormRequest;
class ArticleCommentFormRequest extends FormRequest
{
public function rules(): array
{
return [
'comment' => ['required', 'string', 'min:2', 'max:255', new WebsiteWordfilterRule],
];
}
public function authorize(): bool
{
return true;
}
}
+16
View File
@@ -0,0 +1,16 @@
<?php
namespace App\Http\Requests;
use App\Rules\WebsiteWordfilterRule;
use Illuminate\Foundation\Http\FormRequest;
class GuestbookFormRequest extends FormRequest
{
public function rules(): array
{
return [
'message' => ['required', 'string', 'max:32', new WebsiteWordfilterRule],
];
}
}
+24
View File
@@ -0,0 +1,24 @@
<?php
namespace App\Http\Requests;
use App\Actions\Fortify\Rules\PasswordValidationRules;
use App\Rules\CurrentPasswordRule;
use App\Rules\GoogleRecaptchaRule;
use Illuminate\Foundation\Http\FormRequest;
use RyanChandler\LaravelCloudflareTurnstile\Rules\Turnstile;
class PasswordSettingsFormRequest extends FormRequest
{
use PasswordValidationRules;
public function rules(): array
{
return [
'current_password' => ['required', 'string', new CurrentPasswordRule],
'password' => $this->passwordRules(),
'g-recaptcha-response' => [new GoogleRecaptchaRule],
'cf-turnstile-response' => [app(Turnstile::class)],
];
}
}
+22
View File
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class RadioSongRequestFormRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'artist' => ['required', 'string', 'max:50'],
'title' => ['required', 'string', 'max:50'],
'message' => ['nullable', 'string', 'max:100'],
];
}
}
+22
View File
@@ -0,0 +1,22 @@
<?php
declare(strict_types=1);
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class RareSearchFormRequest extends FormRequest
{
public function rules(): array
{
return [
'search' => ['required', 'string', 'min:1', 'max:255'],
];
}
public function authorize(): bool
{
return true;
}
}
+41
View File
@@ -0,0 +1,41 @@
<?php
namespace App\Http\Requests;
use App\Rules\GoogleRecaptchaRule;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
use RyanChandler\LaravelCloudflareTurnstile\Rules\Turnstile;
class RegisterFormRequest extends FormRequest
{
#[\Override]
protected $errorBag = 'register';
public function rules(): array
{
return [
'username' => ['required', 'string', sprintf('regex:%s', setting('username_regex')), 'max:25', Rule::unique('users')],
'mail' => ['required', 'string', 'email', 'max:255', Rule::unique('users')],
'password' => ['required', 'string', 'confirmed', 'min:8'],
'terms' => ['required', 'accepted'],
'g-recaptcha-response' => [new GoogleRecaptchaRule],
'cf-turnstile-response' => [app(Turnstile::class)],
];
}
public function authorize(): bool
{
return true;
}
#[\Override]
public function messages(): array
{
return [
'g-recaptcha-response.required' => __('The Google reCAPTCHA must be completed'),
'g-recaptcha-response.string' => __('The Google reCAPTCHA was submitted with an invalid type'),
'terms.required' => __('You must accept the terms and conditions'),
];
}
}
+19
View File
@@ -0,0 +1,19 @@
<?php
namespace App\Http\Requests;
use App\Rules\GoogleRecaptchaRule;
use Illuminate\Foundation\Http\FormRequest;
use RyanChandler\LaravelCloudflareTurnstile\Rules\Turnstile;
class ShopVoucherFormRequest extends FormRequest
{
public function rules(): array
{
return [
'code' => ['required', 'string'],
'g-recaptcha-response' => [new GoogleRecaptchaRule],
'cf-turnstile-response' => [app(Turnstile::class)],
];
}
}
+19
View File
@@ -0,0 +1,19 @@
<?php
namespace App\Http\Requests;
use App\Rules\GoogleRecaptchaRule;
use Illuminate\Foundation\Http\FormRequest;
use RyanChandler\LaravelCloudflareTurnstile\Rules\Turnstile;
class StaffApplicationFormRequest extends FormRequest
{
public function rules(): array
{
return [
'content' => ['required', 'string'],
'g-recaptcha-response' => [new GoogleRecaptchaRule],
'cf-turnstile-response' => [app(Turnstile::class)],
];
}
}
+20
View File
@@ -0,0 +1,20 @@
<?php
declare(strict_types=1);
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class WebsiteTicketFormRequest extends FormRequest
{
public function rules(): array
{
return [
'category_id' => ['required', 'integer', Rule::exists('website_help_center_categories', 'id')],
'title' => ['required', 'string', 'min:10', 'max:255'],
'content' => ['required', 'string', 'min:10', 'max:65000'],
];
}
}
+17
View File
@@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class WebsiteTicketReplyFormRequest extends FormRequest
{
public function rules(): array
{
return [
'content' => ['required', 'string', 'min:10', 'max:65000'],
];
}
}