X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/07b889547d28e68e5fc8f923c166bd607da17ad7..refs/pull/2376/head:/app/Providers/AppServiceProvider.php diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 9b91ba126..f41815399 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -9,10 +9,10 @@ use BookStack\Entities\Page; use BookStack\Settings\Setting; use BookStack\Settings\SettingService; use Illuminate\Database\Eloquent\Relations\Relation; -use Illuminate\Http\UploadedFile; use Illuminate\Support\Facades\View; use Illuminate\Support\ServiceProvider; use Schema; +use URL; use Validator; class AppServiceProvider extends ServiceProvider @@ -24,9 +24,17 @@ class AppServiceProvider extends ServiceProvider */ public function boot() { + // Set root URL + $appUrl = config('app.url'); + if ($appUrl) { + $isHttps = (strpos($appUrl, 'https://') === 0); + URL::forceRootUrl($appUrl); + URL::forceScheme($isHttps ? 'https' : 'http'); + } + // Custom validation methods Validator::extend('image_extension', function ($attribute, $value, $parameters, $validator) { - $validImageExtensions = ['png', 'jpg', 'jpeg', 'bmp', 'gif', 'tiff', 'webp']; + $validImageExtensions = ['png', 'jpg', 'jpeg', 'gif', 'webp']; return in_array(strtolower($value->getClientOriginalExtension()), $validImageExtensions); }); @@ -35,11 +43,26 @@ class AppServiceProvider extends ServiceProvider return substr_count($uploadName, '.') < 2; }); + Validator::extend('safe_url', function ($attribute, $value, $parameters, $validator) { + $cleanLinkName = strtolower(trim($value)); + $isJs = strpos($cleanLinkName, 'javascript:') === 0; + $isData = strpos($cleanLinkName, 'data:') === 0; + return !$isJs && !$isData; + }); + // Custom blade view directives Blade::directive('icon', function ($expression) { return ""; }); + Blade::directive('exposeTranslations', function ($expression) { + return "startPush('translations'); ?>" . + "" . + '' . "\n" . + "" . + 'stopPush(); ?>'; + }); + // Allow longer string lengths after upgrade to utf8mb4 Schema::defaultStringLength(191);