3 namespace BookStack\Providers;
5 use Illuminate\Support\Facades\Validator;
6 use Illuminate\Support\ServiceProvider;
8 class CustomValidationServiceProvider extends ServiceProvider
12 * Register our custom validation rules when the application boots.
14 public function boot(): void
16 Validator::extend('image_extension', function ($attribute, $value, $parameters, $validator) {
17 $validImageExtensions = ['png', 'jpg', 'jpeg', 'gif', 'webp'];
18 return in_array(strtolower($value->getClientOriginalExtension()), $validImageExtensions);
21 Validator::extend('no_double_extension', function ($attribute, $value, $parameters, $validator) {
22 $uploadName = $value->getClientOriginalName();
23 return substr_count($uploadName, '.') < 2;
26 Validator::extend('safe_url', function ($attribute, $value, $parameters, $validator) {
27 $cleanLinkName = strtolower(trim($value));
28 $isJs = strpos($cleanLinkName, 'javascript:') === 0;
29 $isData = strpos($cleanLinkName, 'data:') === 0;
30 return !$isJs && !$isData;