diff --git a/app/Http/Controllers/PagesController.php b/app/Http/Controllers/PagesController.php index 0f785a3..6739082 100644 --- a/app/Http/Controllers/PagesController.php +++ b/app/Http/Controllers/PagesController.php @@ -8,4 +8,12 @@ class PagesController extends Controller { return view('layouts.root'); } + + public function permissionDenied() + { + if (config('administrator.permission')) { + return redirect(url(config('administrator.uri')), 302); + } + return view('pages.permission_denied'); + } } diff --git a/app/Http/Controllers/TopicsController.php b/app/Http/Controllers/TopicsController.php index 6e7b07c..f7d58d1 100644 --- a/app/Http/Controllers/TopicsController.php +++ b/app/Http/Controllers/TopicsController.php @@ -76,17 +76,25 @@ class TopicsController extends Controller public function update(TopicRequest $request, Topic $topic) { - $this->authorize('update', $topic); - $topic->update($request->all()); + try { + $this->authorize('update', $topic); + $topic->update($request->all()); + } catch (\Exception $exception) { + echo $exception->getMessage(); + } + return redirect()->route('topics.show', [$topic->id, $topic->slug])->with('success', '编辑成功!'); } public function destroy(Topic $topic) { - $this->authorize('destroy', $topic); - $topic->delete(); - + try { + $this->authorize('destroy', $topic); + $topic->delete(); + } catch (\Exception $exception) { + echo $exception->getMessage(); + } return redirect()->route('topics.index')->with('message', '删除成功.'); } } \ No newline at end of file diff --git a/composer.lock b/composer.lock index c8d9c31..09d5310 100644 --- a/composer.lock +++ b/composer.lock @@ -1,7 +1,7 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], "content-hash": "5d821d2cc8afef049d75e4b44976928f", @@ -65,16 +65,16 @@ }, { "name": "caouecs/laravel-lang", - "version": "3.0.43", + "version": "3.0.48", "source": { "type": "git", "url": "https://github.com/caouecs/Laravel-lang.git", - "reference": "73087e07f164e2746bec1c9c116668d100e0af3b" + "reference": "00a265f660c80c59d1208f6b190349365d4cb053" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/caouecs/Laravel-lang/zipball/73087e07f164e2746bec1c9c116668d100e0af3b", - "reference": "73087e07f164e2746bec1c9c116668d100e0af3b", + "url": "https://api.github.com/repos/caouecs/Laravel-lang/zipball/00a265f660c80c59d1208f6b190349365d4cb053", + "reference": "00a265f660c80c59d1208f6b190349365d4cb053", "shasum": "" }, "require-dev": { @@ -103,20 +103,20 @@ "laravel", "lpm" ], - "time": "2018-01-28T10:19:47+00:00" + "time": "2018-05-08T14:16:52+00:00" }, { "name": "ckeditor/ckeditor", - "version": "4.8.0", + "version": "4.9.2", "source": { "type": "git", "url": "https://github.com/ckeditor/ckeditor-releases.git", - "reference": "3e0ba2fa7361e0e425b73b2e4400af4a7f767ec5" + "reference": "993eb4fba6a70545f6c50da1988d39ecd9cf47a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ckeditor/ckeditor-releases/zipball/3e0ba2fa7361e0e425b73b2e4400af4a7f767ec5", - "reference": "3e0ba2fa7361e0e425b73b2e4400af4a7f767ec5", + "url": "https://api.github.com/repos/ckeditor/ckeditor-releases/zipball/993eb4fba6a70545f6c50da1988d39ecd9cf47a3", + "reference": "993eb4fba6a70545f6c50da1988d39ecd9cf47a3", "shasum": "" }, "type": "library", @@ -144,7 +144,7 @@ "text", "wysiwyg" ], - "time": "2017-12-13T16:47:19+00:00" + "time": "2018-04-18T09:04:40+00:00" }, { "name": "dnoegel/php-xdg-base-dir", @@ -463,16 +463,16 @@ }, { "name": "doctrine/dbal", - "version": "v2.6.3", + "version": "v2.7.1", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "e3eed9b1facbb0ced3a0995244843a189e7d1b13" + "reference": "11037b4352c008373561dc6fc836834eed80c3b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/e3eed9b1facbb0ced3a0995244843a189e7d1b13", - "reference": "e3eed9b1facbb0ced3a0995244843a189e7d1b13", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/11037b4352c008373561dc6fc836834eed80c3b5", + "reference": "11037b4352c008373561dc6fc836834eed80c3b5", "shasum": "" }, "require": { @@ -481,9 +481,11 @@ "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^5.4.6", + "doctrine/coding-standard": "^4.0", + "phpunit/phpunit": "^7.0", "phpunit/phpunit-mock-objects": "!=3.2.4,!=3.2.5", - "symfony/console": "2.*||^3.0" + "symfony/console": "^2.0.5||^3.0", + "symfony/phpunit-bridge": "^3.4.5|^4.0.5" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -494,7 +496,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6.x-dev" + "dev-master": "2.7.x-dev" } }, "autoload": { @@ -532,7 +534,7 @@ "persistence", "queryobject" ], - "time": "2017-11-19T13:38:54+00:00" + "time": "2018-04-07T18:44:18+00:00" }, { "name": "doctrine/inflector", @@ -657,16 +659,16 @@ }, { "name": "egulias/email-validator", - "version": "2.1.3", + "version": "2.1.4", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "1bec00a10039b823cc94eef4eddd47dcd3b2ca04" + "reference": "8790f594151ca6a2010c6218e09d96df67173ad3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/1bec00a10039b823cc94eef4eddd47dcd3b2ca04", - "reference": "1bec00a10039b823cc94eef4eddd47dcd3b2ca04", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/8790f594151ca6a2010c6218e09d96df67173ad3", + "reference": "8790f594151ca6a2010c6218e09d96df67173ad3", "shasum": "" }, "require": { @@ -675,7 +677,7 @@ }, "require-dev": { "dominicsayers/isemail": "dev-master", - "phpunit/phpunit": "^4.8.35", + "phpunit/phpunit": "^4.8.35||^5.7||^6.0", "satooshi/php-coveralls": "^1.0.1" }, "suggest": { @@ -710,23 +712,24 @@ "validation", "validator" ], - "time": "2017-11-15T23:40:40+00:00" + "time": "2018-04-10T10:11:19+00:00" }, { "name": "erusev/parsedown", - "version": "1.6.4", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/erusev/parsedown.git", - "reference": "fbe3fe878f4fe69048bb8a52783a09802004f548" + "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/fbe3fe878f4fe69048bb8a52783a09802004f548", - "reference": "fbe3fe878f4fe69048bb8a52783a09802004f548", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", + "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", "shasum": "" }, "require": { + "ext-mbstring": "*", "php": ">=5.3.0" }, "require-dev": { @@ -755,20 +758,20 @@ "markdown", "parser" ], - "time": "2017-11-14T20:44:03+00:00" + "time": "2018-03-08T01:11:30+00:00" }, { "name": "ezyang/htmlpurifier", - "version": "v4.9.3", + "version": "v4.10.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "95e1bae3182efc0f3422896a3236e991049dac69" + "reference": "d85d39da4576a6934b72480be6978fb10c860021" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/95e1bae3182efc0f3422896a3236e991049dac69", - "reference": "95e1bae3182efc0f3422896a3236e991049dac69", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/d85d39da4576a6934b72480be6978fb10c860021", + "reference": "d85d39da4576a6934b72480be6978fb10c860021", "shasum": "" }, "require": { @@ -802,7 +805,7 @@ "keywords": [ "html" ], - "time": "2017-06-03T02:28:16+00:00" + "time": "2018-02-23T01:58:20+00:00" }, { "name": "fideloper/proxy", @@ -863,16 +866,16 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.3.0", + "version": "6.3.3", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699" + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699", - "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", "shasum": "" }, "require": { @@ -882,7 +885,7 @@ }, "require-dev": { "ext-curl": "*", - "phpunit/phpunit": "^4.0 || ^5.0", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", "psr/log": "^1.0" }, "suggest": { @@ -891,7 +894,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.2-dev" + "dev-master": "6.3-dev" } }, "autoload": { @@ -924,7 +927,7 @@ "rest", "web service" ], - "time": "2017-06-22T18:50:49+00:00" + "time": "2018-04-22T15:46:56+00:00" }, { "name": "guzzlehttp/promises", @@ -1107,16 +1110,16 @@ }, { "name": "intervention/image", - "version": "2.4.1", + "version": "2.4.2", "source": { "type": "git", "url": "https://github.com/Intervention/image.git", - "reference": "3603dbcc9a17d307533473246a6c58c31cf17919" + "reference": "e82d274f786e3d4b866a59b173f42e716f0783eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/3603dbcc9a17d307533473246a6c58c31cf17919", - "reference": "3603dbcc9a17d307533473246a6c58c31cf17919", + "url": "https://api.github.com/repos/Intervention/image/zipball/e82d274f786e3d4b866a59b173f42e716f0783eb", + "reference": "e82d274f786e3d4b866a59b173f42e716f0783eb", "shasum": "" }, "require": { @@ -1136,7 +1139,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "2.4-dev" }, "laravel": { "providers": [ @@ -1173,7 +1176,7 @@ "thumbnail", "watermark" ], - "time": "2017-09-21T16:29:17+00:00" + "time": "2018-05-29T14:19:03+00:00" }, { "name": "jakub-onderka/php-console-color", @@ -1264,27 +1267,27 @@ }, { "name": "laravel/framework", - "version": "v5.5.34", + "version": "v5.5.40", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "1de7c0aec13eadbdddc2d1ba4019b064b2c6b966" + "reference": "d724ce0aa61bbd9adf658215eec484f5dd6711d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/1de7c0aec13eadbdddc2d1ba4019b064b2c6b966", - "reference": "1de7c0aec13eadbdddc2d1ba4019b064b2c6b966", + "url": "https://api.github.com/repos/laravel/framework/zipball/d724ce0aa61bbd9adf658215eec484f5dd6711d6", + "reference": "d724ce0aa61bbd9adf658215eec484f5dd6711d6", "shasum": "" }, "require": { "doctrine/inflector": "~1.1", - "erusev/parsedown": "~1.6", + "erusev/parsedown": "~1.7", "ext-mbstring": "*", "ext-openssl": "*", - "league/flysystem": "~1.0", + "league/flysystem": "^1.0.8", "monolog/monolog": "~1.12", "mtdowling/cron-expression": "~1.0", - "nesbot/carbon": "~1.20", + "nesbot/carbon": "^1.24.1", "php": ">=7.0", "psr/container": "~1.0", "psr/simple-cache": "^1.0", @@ -1330,7 +1333,7 @@ "illuminate/translation": "self.version", "illuminate/validation": "self.version", "illuminate/view": "self.version", - "tightenco/collect": "self.version" + "tightenco/collect": "<5.5.33" }, "require-dev": { "aws/aws-sdk-php": "~3.0", @@ -1394,20 +1397,20 @@ "framework", "laravel" ], - "time": "2018-02-06T15:36:55+00:00" + "time": "2018-03-30T13:29:30+00:00" }, { "name": "laravel/horizon", - "version": "v1.2.1", + "version": "v1.2.3", "source": { "type": "git", "url": "https://github.com/laravel/horizon.git", - "reference": "6fe4cd4af88dde8f411e0454e1e64f773cfe0666" + "reference": "36ef9e2d6e09e617cf801050326a69e876ff5535" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/horizon/zipball/6fe4cd4af88dde8f411e0454e1e64f773cfe0666", - "reference": "6fe4cd4af88dde8f411e0454e1e64f773cfe0666", + "url": "https://api.github.com/repos/laravel/horizon/zipball/36ef9e2d6e09e617cf801050326a69e876ff5535", + "reference": "36ef9e2d6e09e617cf801050326a69e876ff5535", "shasum": "" }, "require": { @@ -1462,20 +1465,20 @@ "laravel", "queue" ], - "time": "2018-02-10T16:15:35+00:00" + "time": "2018-03-13T18:00:18+00:00" }, { "name": "laravel/tinker", - "version": "v1.0.3", + "version": "v1.0.7", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "852c2abe0b0991555a403f1c0583e64de6acb4a6" + "reference": "e3086ee8cb1f54a39ae8dcb72d1c37d10128997d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/852c2abe0b0991555a403f1c0583e64de6acb4a6", - "reference": "852c2abe0b0991555a403f1c0583e64de6acb4a6", + "url": "https://api.github.com/repos/laravel/tinker/zipball/e3086ee8cb1f54a39ae8dcb72d1c37d10128997d", + "reference": "e3086ee8cb1f54a39ae8dcb72d1c37d10128997d", "shasum": "" }, "require": { @@ -1483,7 +1486,7 @@ "illuminate/contracts": "~5.1", "illuminate/support": "~5.1", "php": ">=5.5.9", - "psy/psysh": "0.7.*|0.8.*", + "psy/psysh": "0.7.*|0.8.*|0.9.*", "symfony/var-dumper": "~3.0|~4.0" }, "require-dev": { @@ -1525,20 +1528,20 @@ "laravel", "psysh" ], - "time": "2017-12-18T16:25:11+00:00" + "time": "2018-05-17T13:42:07+00:00" }, { "name": "league/flysystem", - "version": "1.0.42", + "version": "1.0.45", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "09eabc54e199950041aef258a85847676496fe8e" + "reference": "a99f94e63b512d75f851b181afcdf0ee9ebef7e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/09eabc54e199950041aef258a85847676496fe8e", - "reference": "09eabc54e199950041aef258a85847676496fe8e", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a99f94e63b512d75f851b181afcdf0ee9ebef7e6", + "reference": "a99f94e63b512d75f851b181afcdf0ee9ebef7e6", "shasum": "" }, "require": { @@ -1609,20 +1612,20 @@ "sftp", "storage" ], - "time": "2018-01-27T16:03:56+00:00" + "time": "2018-05-07T08:44:23+00:00" }, { "name": "mews/captcha", - "version": "2.1.7", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/mewebstudio/captcha.git", - "reference": "7d48d7dc5df0fb2225b086ba85cb3fef9832b235" + "reference": "c9885e31bb2c30fe185c1af6078a53a3bef5db8f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mewebstudio/captcha/zipball/7d48d7dc5df0fb2225b086ba85cb3fef9832b235", - "reference": "7d48d7dc5df0fb2225b086ba85cb3fef9832b235", + "url": "https://api.github.com/repos/mewebstudio/captcha/zipball/c9885e31bb2c30fe185c1af6078a53a3bef5db8f", + "reference": "c9885e31bb2c30fe185c1af6078a53a3bef5db8f", "shasum": "" }, "require": { @@ -1676,27 +1679,27 @@ "laravel5 Captcha", "laravel5 Security" ], - "time": "2017-09-11T14:59:20+00:00" + "time": "2018-04-25T13:44:49+00:00" }, { "name": "mews/purifier", - "version": "2.0.9", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/mewebstudio/Purifier.git", - "reference": "85af9a2a932583b2c78a0ed762b46cb19399a0a9" + "reference": "7333435c9842e207f3381b7319b63122f8c9403e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mewebstudio/Purifier/zipball/85af9a2a932583b2c78a0ed762b46cb19399a0a9", - "reference": "85af9a2a932583b2c78a0ed762b46cb19399a0a9", + "url": "https://api.github.com/repos/mewebstudio/Purifier/zipball/7333435c9842e207f3381b7319b63122f8c9403e", + "reference": "7333435c9842e207f3381b7319b63122f8c9403e", "shasum": "" }, "require": { - "ezyang/htmlpurifier": "4.9.*", - "illuminate/config": "5.*", - "illuminate/filesystem": "5.*", - "illuminate/support": "5.*", + "ezyang/htmlpurifier": "4.10.*", + "illuminate/config": "5.0.* || 5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.*", + "illuminate/filesystem": "5.0.* || 5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.*", + "illuminate/support": "5.0.* || 5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.*", "php": ">=5.5.9" }, "require-dev": { @@ -1751,7 +1754,7 @@ "security", "xss" ], - "time": "2017-09-11T15:02:51+00:00" + "time": "2018-03-21T12:29:49+00:00" }, { "name": "monolog/monolog", @@ -1877,35 +1880,30 @@ }, { "name": "nesbot/carbon", - "version": "1.22.1", + "version": "1.29.2", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc" + "reference": "ed6aa898982f441ccc9b2acdec51490f2bc5d337" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc", - "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/ed6aa898982f441ccc9b2acdec51490f2bc5d337", + "reference": "ed6aa898982f441ccc9b2acdec51490f2bc5d337", "shasum": "" }, "require": { - "php": ">=5.3.0", - "symfony/translation": "~2.6 || ~3.0" + "php": ">=5.3.9", + "symfony/translation": "~2.6 || ~3.0 || ~4.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "~2", - "phpunit/phpunit": "~4.0 || ~5.0" + "phpunit/phpunit": "^4.8.35 || ^5.7" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.23-dev" - } - }, "autoload": { "psr-4": { - "Carbon\\": "src/Carbon/" + "": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1926,28 +1924,28 @@ "datetime", "time" ], - "time": "2017-01-16T07:55:07+00:00" + "time": "2018-05-29T15:23:46+00:00" }, { "name": "nikic/php-parser", - "version": "v3.1.4", + "version": "v4.0.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "e57b3a09784f846411aa7ed664eedb73e3399078" + "reference": "e4a54fa90a5cd8e8dd3fb4099942681731c5cdd3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/e57b3a09784f846411aa7ed664eedb73e3399078", - "reference": "e57b3a09784f846411aa7ed664eedb73e3399078", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/e4a54fa90a5cd8e8dd3fb4099942681731c5cdd3", + "reference": "e4a54fa90a5cd8e8dd3fb4099942681731c5cdd3", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=5.5" + "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" + "phpunit/phpunit": "^6.5 || ^7.0" }, "bin": [ "bin/php-parse" @@ -1955,7 +1953,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1977,7 +1975,7 @@ "parser", "php" ], - "time": "2018-01-25T21:31:33+00:00" + "time": "2018-03-25T17:35:16+00:00" }, { "name": "overtrue/laravel-lang", @@ -2077,16 +2075,16 @@ }, { "name": "paragonie/random_compat", - "version": "v2.0.11", + "version": "v2.0.12", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8" + "reference": "258c89a6b97de7dfaf5b8c7607d0478e236b04fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/5da4d3c796c275c55f057af5a643ae297d96b4d8", - "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/258c89a6b97de7dfaf5b8c7607d0478e236b04fb", + "reference": "258c89a6b97de7dfaf5b8c7607d0478e236b04fb", "shasum": "" }, "require": { @@ -2121,7 +2119,7 @@ "pseudorandom", "random" ], - "time": "2017-09-27T21:40:39+00:00" + "time": "2018-04-04T21:24:14+00:00" }, { "name": "predis/predis", @@ -2321,16 +2319,16 @@ }, { "name": "psr/simple-cache", - "version": "1.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/php-fig/simple-cache.git", - "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24" + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/753fa598e8f3b9966c886fe13f370baa45ef0e24", - "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", "shasum": "" }, "require": { @@ -2365,34 +2363,34 @@ "psr-16", "simple-cache" ], - "time": "2017-01-02T13:31:39+00:00" + "time": "2017-10-23T01:57:42+00:00" }, { "name": "psy/psysh", - "version": "v0.8.17", + "version": "v0.9.4", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "5069b70e8c4ea492c2b5939b6eddc78bfe41cfec" + "reference": "4d969a0e08e1e05e7207c07cb4207017ecc9a331" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/5069b70e8c4ea492c2b5939b6eddc78bfe41cfec", - "reference": "5069b70e8c4ea492c2b5939b6eddc78bfe41cfec", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/4d969a0e08e1e05e7207c07cb4207017ecc9a331", + "reference": "4d969a0e08e1e05e7207c07cb4207017ecc9a331", "shasum": "" }, "require": { "dnoegel/php-xdg-base-dir": "0.1", "jakub-onderka/php-console-highlighter": "0.3.*", - "nikic/php-parser": "~1.3|~2.0|~3.0", - "php": ">=5.3.9", + "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", + "php": ">=5.4.0", "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0", "symfony/var-dumper": "~2.7|~3.0|~4.0" }, "require-dev": { - "hoa/console": "~3.16|~1.14", - "phpunit/phpunit": "^4.8.35|^5.4.3", - "symfony/finder": "~2.1|~3.0|~4.0" + "bamarni/composer-bin-plugin": "^1.2", + "hoa/console": "~2.15|~3.16", + "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", @@ -2407,15 +2405,15 @@ "type": "library", "extra": { "branch-alias": { - "dev-develop": "0.8.x-dev" + "dev-develop": "0.9.x-dev" } }, "autoload": { "files": [ - "src/Psy/functions.php" + "src/functions.php" ], "psr-4": { - "Psy\\": "src/Psy/" + "Psy\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2437,7 +2435,7 @@ "interactive", "shell" ], - "time": "2017-12-28T16:14:16+00:00" + "time": "2018-05-22T06:48:07+00:00" }, { "name": "ramsey/uuid", @@ -2521,16 +2519,16 @@ }, { "name": "spatie/laravel-permission", - "version": "2.9.0", + "version": "2.12.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-permission.git", - "reference": "4d47ef1644ed451f1ea99d1c44443a3ad9bacfd4" + "reference": "c352d83ecb5efb2d68169a1de7b7e263135ad807" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/4d47ef1644ed451f1ea99d1c44443a3ad9bacfd4", - "reference": "4d47ef1644ed451f1ea99d1c44443a3ad9bacfd4", + "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/c352d83ecb5efb2d68169a1de7b7e263135ad807", + "reference": "c352d83ecb5efb2d68169a1de7b7e263135ad807", "shasum": "" }, "require": { @@ -2581,20 +2579,20 @@ "security", "spatie" ], - "time": "2018-02-07T16:53:52+00:00" + "time": "2018-04-23T19:06:39+00:00" }, { "name": "summerblue/administrator", - "version": "v1.1.6", + "version": "v1.1.7", "source": { "type": "git", "url": "https://github.com/summerblue/administrator.git", - "reference": "fb1eafbe6c5422d10104e242415d815866e1009b" + "reference": "e775635f3d1d462ae88aaf2d080be863df3a5d54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/summerblue/administrator/zipball/fb1eafbe6c5422d10104e242415d815866e1009b", - "reference": "fb1eafbe6c5422d10104e242415d815866e1009b", + "url": "https://api.github.com/repos/summerblue/administrator/zipball/e775635f3d1d462ae88aaf2d080be863df3a5d54", + "reference": "e775635f3d1d462ae88aaf2d080be863df3a5d54", "shasum": "" }, "require": { @@ -2642,7 +2640,7 @@ "laravel", "laravel-administrator" ], - "time": "2017-12-26T07:58:05+00:00" + "time": "2018-02-27T01:14:55+00:00" }, { "name": "swiftmailer/swiftmailer", @@ -2701,16 +2699,16 @@ }, { "name": "symfony/console", - "version": "v3.4.4", + "version": "v3.4.11", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "26b6f419edda16c19775211987651cb27baea7f1" + "reference": "36f83f642443c46f3cf751d4d2ee5d047d757a27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/26b6f419edda16c19775211987651cb27baea7f1", - "reference": "26b6f419edda16c19775211987651cb27baea7f1", + "url": "https://api.github.com/repos/symfony/console/zipball/36f83f642443c46f3cf751d4d2ee5d047d757a27", + "reference": "36f83f642443c46f3cf751d4d2ee5d047d757a27", "shasum": "" }, "require": { @@ -2731,7 +2729,7 @@ "symfony/process": "~3.3|~4.0" }, "suggest": { - "psr/log": "For using the console logger", + "psr/log-implementation": "For using the console logger", "symfony/event-dispatcher": "", "symfony/lock": "", "symfony/process": "" @@ -2766,20 +2764,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-01-29T09:03:43+00:00" + "time": "2018-05-16T08:49:21+00:00" }, { "name": "symfony/css-selector", - "version": "v4.0.4", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "f97600434e3141ef3cbb9ea42cf500fba88022b7" + "reference": "03ac71606ecb0b0ce792faa17d74cc32c2949ef4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/f97600434e3141ef3cbb9ea42cf500fba88022b7", - "reference": "f97600434e3141ef3cbb9ea42cf500fba88022b7", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/03ac71606ecb0b0ce792faa17d74cc32c2949ef4", + "reference": "03ac71606ecb0b0ce792faa17d74cc32c2949ef4", "shasum": "" }, "require": { @@ -2788,7 +2786,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -2819,20 +2817,20 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:38:00+00:00" + "time": "2018-05-30T07:26:09+00:00" }, { "name": "symfony/debug", - "version": "v3.4.4", + "version": "v3.4.11", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "53f6af2805daf52a43b393b93d2f24925d35c937" + "reference": "b28fd73fefbac341f673f5efd707d539d6a19f68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/53f6af2805daf52a43b393b93d2f24925d35c937", - "reference": "53f6af2805daf52a43b393b93d2f24925d35c937", + "url": "https://api.github.com/repos/symfony/debug/zipball/b28fd73fefbac341f673f5efd707d539d6a19f68", + "reference": "b28fd73fefbac341f673f5efd707d539d6a19f68", "shasum": "" }, "require": { @@ -2875,20 +2873,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2018-01-18T22:16:57+00:00" + "time": "2018-05-16T14:03:39+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.0.4", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb" + "reference": "2391ed210a239868e7256eb6921b1bd83f3087b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/74d33aac36208c4d6757807d9f598f0133a3a4eb", - "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/2391ed210a239868e7256eb6921b1bd83f3087b5", + "reference": "2391ed210a239868e7256eb6921b1bd83f3087b5", "shasum": "" }, "require": { @@ -2911,7 +2909,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -2938,20 +2936,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:38:00+00:00" + "time": "2018-04-06T07:35:57+00:00" }, { "name": "symfony/finder", - "version": "v3.4.4", + "version": "v3.4.11", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "613e26310776f49a1773b6737c6bd554b8bc8c6f" + "reference": "472a92f3df8b247b49ae364275fb32943b9656c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/613e26310776f49a1773b6737c6bd554b8bc8c6f", - "reference": "613e26310776f49a1773b6737c6bd554b8bc8c6f", + "url": "https://api.github.com/repos/symfony/finder/zipball/472a92f3df8b247b49ae364275fb32943b9656c6", + "reference": "472a92f3df8b247b49ae364275fb32943b9656c6", "shasum": "" }, "require": { @@ -2987,20 +2985,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" + "time": "2018-05-16T08:49:21+00:00" }, { "name": "symfony/http-foundation", - "version": "v3.4.4", + "version": "v3.4.11", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "8c39071ac9cc7e6d8dab1d556c990dc0d2cc3d30" + "reference": "a7b5fc605d1c215cea1122359044b1e682eb70c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8c39071ac9cc7e6d8dab1d556c990dc0d2cc3d30", - "reference": "8c39071ac9cc7e6d8dab1d556c990dc0d2cc3d30", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a7b5fc605d1c215cea1122359044b1e682eb70c0", + "reference": "a7b5fc605d1c215cea1122359044b1e682eb70c0", "shasum": "" }, "require": { @@ -3041,20 +3039,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2018-01-29T09:03:43+00:00" + "time": "2018-05-25T11:07:31+00:00" }, { "name": "symfony/http-kernel", - "version": "v3.4.4", + "version": "v3.4.11", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "911d2e5dd4beb63caad9a72e43857de984301907" + "reference": "3dac45df55ee0c5134c457a730cd68e2a2ce0445" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/911d2e5dd4beb63caad9a72e43857de984301907", - "reference": "911d2e5dd4beb63caad9a72e43857de984301907", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3dac45df55ee0c5134c457a730cd68e2a2ce0445", + "reference": "3dac45df55ee0c5134c457a730cd68e2a2ce0445", "shasum": "" }, "require": { @@ -3062,11 +3060,12 @@ "psr/log": "~1.0", "symfony/debug": "~2.8|~3.0|~4.0", "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "^3.4.4|^4.0.4" + "symfony/http-foundation": "^3.4.4|^4.0.4", + "symfony/polyfill-ctype": "~1.8" }, "conflict": { "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.4", + "symfony/dependency-injection": "<3.4.5|<4.0.5,>=4", "symfony/var-dumper": "<3.3", "twig/twig": "<1.34|<2.4,>=2" }, @@ -3080,7 +3079,7 @@ "symfony/config": "~2.8|~3.0|~4.0", "symfony/console": "~2.8|~3.0|~4.0", "symfony/css-selector": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", + "symfony/dependency-injection": "^3.4.5|^4.0.5", "symfony/dom-crawler": "~2.8|~3.0|~4.0", "symfony/expression-language": "~2.8|~3.0|~4.0", "symfony/finder": "~2.8|~3.0|~4.0", @@ -3129,20 +3128,75 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2018-01-29T12:29:46+00:00" + "time": "2018-05-25T13:16:28+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/7cc359f1b7b80fc25ed7796be7d96adc9b354bae", + "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-04-30T19:57:29+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.7.0", + "version": "v1.8.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" + "reference": "3296adf6a6454a050679cde90f95350ad604b171" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b", - "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171", + "reference": "3296adf6a6454a050679cde90f95350ad604b171", "shasum": "" }, "require": { @@ -3154,7 +3208,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.8-dev" } }, "autoload": { @@ -3188,20 +3242,20 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-04-26T10:06:28+00:00" }, { "name": "symfony/polyfill-php70", - "version": "v1.7.0", + "version": "v1.8.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "3532bfcd8f933a7816f3a0a59682fc404776600f" + "reference": "77454693d8f10dd23bb24955cffd2d82db1007a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/3532bfcd8f933a7816f3a0a59682fc404776600f", - "reference": "3532bfcd8f933a7816f3a0a59682fc404776600f", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/77454693d8f10dd23bb24955cffd2d82db1007a6", + "reference": "77454693d8f10dd23bb24955cffd2d82db1007a6", "shasum": "" }, "require": { @@ -3211,7 +3265,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.8-dev" } }, "autoload": { @@ -3247,20 +3301,20 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-04-26T10:06:28+00:00" }, { "name": "symfony/process", - "version": "v3.4.4", + "version": "v3.4.11", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "09a5172057be8fc677840e591b17f385e58c7c0d" + "reference": "4cbf2db9abcb01486a21b7a059e03a62fae63187" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/09a5172057be8fc677840e591b17f385e58c7c0d", - "reference": "09a5172057be8fc677840e591b17f385e58c7c0d", + "url": "https://api.github.com/repos/symfony/process/zipball/4cbf2db9abcb01486a21b7a059e03a62fae63187", + "reference": "4cbf2db9abcb01486a21b7a059e03a62fae63187", "shasum": "" }, "require": { @@ -3296,27 +3350,27 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2018-01-29T09:03:43+00:00" + "time": "2018-05-16T08:49:21+00:00" }, { "name": "symfony/routing", - "version": "v3.4.4", + "version": "v3.4.11", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "235d01730d553a97732990588407eaf6779bb4b2" + "reference": "e382da877f5304aabc12ec3073eec430670c8296" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/235d01730d553a97732990588407eaf6779bb4b2", - "reference": "235d01730d553a97732990588407eaf6779bb4b2", + "url": "https://api.github.com/repos/symfony/routing/zipball/e382da877f5304aabc12ec3073eec430670c8296", + "reference": "e382da877f5304aabc12ec3073eec430670c8296", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8" }, "conflict": { - "symfony/config": "<2.8", + "symfony/config": "<3.3.1", "symfony/dependency-injection": "<3.3", "symfony/yaml": "<3.4" }, @@ -3324,7 +3378,7 @@ "doctrine/annotations": "~1.0", "doctrine/common": "~2.2", "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", + "symfony/config": "^3.3.1|~4.0", "symfony/dependency-injection": "~3.3|~4.0", "symfony/expression-language": "~2.8|~3.0|~4.0", "symfony/http-foundation": "~2.8|~3.0|~4.0", @@ -3374,48 +3428,49 @@ "uri", "url" ], - "time": "2018-01-16T18:03:57+00:00" + "time": "2018-05-16T12:49:49+00:00" }, { "name": "symfony/translation", - "version": "v3.4.4", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "10b32cf0eae28b9b39fe26c456c42b19854c4b84" + "reference": "16328f5b217cebc8dd4adfe4aeeaa8c377581f5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/10b32cf0eae28b9b39fe26c456c42b19854c4b84", - "reference": "10b32cf0eae28b9b39fe26c456c42b19854c4b84", + "url": "https://api.github.com/repos/symfony/translation/zipball/16328f5b217cebc8dd4adfe4aeeaa8c377581f5a", + "reference": "16328f5b217cebc8dd4adfe4aeeaa8c377581f5a", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/config": "<2.8", + "symfony/config": "<3.4", "symfony/dependency-injection": "<3.4", "symfony/yaml": "<3.4" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", + "symfony/config": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", "symfony/dependency-injection": "~3.4|~4.0", "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/intl": "^2.8.18|^3.2.5|~4.0", + "symfony/intl": "~3.4|~4.0", "symfony/yaml": "~3.4|~4.0" }, "suggest": { - "psr/log": "To use logging capability in translator", + "psr/log-implementation": "To use logging capability in translator", "symfony/config": "", "symfony/yaml": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -3442,20 +3497,20 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2018-01-18T22:16:57+00:00" + "time": "2018-05-30T07:26:09+00:00" }, { "name": "symfony/var-dumper", - "version": "v3.4.4", + "version": "v3.4.11", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "472a9849930cf21f73abdb02240f17cf5b5bd1a7" + "reference": "0e6545672d8c9ce70dd472adc2f8b03155a46f73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/472a9849930cf21f73abdb02240f17cf5b5bd1a7", - "reference": "472a9849930cf21f73abdb02240f17cf5b5bd1a7", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0e6545672d8c9ce70dd472adc2f8b03155a46f73", + "reference": "0e6545672d8c9ce70dd472adc2f8b03155a46f73", "shasum": "" }, "require": { @@ -3511,7 +3566,7 @@ "debug", "dump" ], - "time": "2018-01-29T09:03:43+00:00" + "time": "2018-04-26T12:42:15+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -3654,16 +3709,16 @@ "packages-dev": [ { "name": "barryvdh/laravel-debugbar", - "version": "v3.1.2", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "59a7a08d84111a5b2407fb58b9d74af3ebe430e7" + "reference": "d3cdca2ad6cc6e67735b4a63e7551c690a497f5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/59a7a08d84111a5b2407fb58b9d74af3ebe430e7", - "reference": "59a7a08d84111a5b2407fb58b9d74af3ebe430e7", + "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/d3cdca2ad6cc6e67735b4a63e7551c690a497f5f", + "reference": "d3cdca2ad6cc6e67735b4a63e7551c690a497f5f", "shasum": "" }, "require": { @@ -3718,7 +3773,7 @@ "profiler", "webprofiler" ], - "time": "2018-02-07T19:51:45+00:00" + "time": "2018-05-03T18:27:04+00:00" }, { "name": "barryvdh/laravel-ide-helper", @@ -4118,16 +4173,16 @@ }, { "name": "mockery/mockery", - "version": "1.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "1bac8c362b12f522fdd1f1fa3556284c91affa38" + "reference": "99e29d3596b16dabe4982548527d5ddf90232e99" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/1bac8c362b12f522fdd1f1fa3556284c91affa38", - "reference": "1bac8c362b12f522fdd1f1fa3556284c91affa38", + "url": "https://api.github.com/repos/mockery/mockery/zipball/99e29d3596b16dabe4982548527d5ddf90232e99", + "reference": "99e29d3596b16dabe4982548527d5ddf90232e99", "shasum": "" }, "require": { @@ -4136,7 +4191,8 @@ "php": ">=5.6.0" }, "require-dev": { - "phpunit/phpunit": "~5.7|~6.1" + "phpdocumentor/phpdocumentor": "^2.9", + "phpunit/phpunit": "~5.7.10|~6.5" }, "type": "library", "extra": { @@ -4165,8 +4221,8 @@ "homepage": "http://davedevelopment.co.uk" } ], - "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.", - "homepage": "http://github.com/mockery/mockery", + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", "keywords": [ "BDD", "TDD", @@ -4179,29 +4235,32 @@ "test double", "testing" ], - "time": "2017-10-06T16:20:43+00:00" + "time": "2018-05-08T08:54:48+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.7.0", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + "reference": "478465659fd987669df0bd8a9bf22a8710e5f1b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/478465659fd987669df0bd8a9bf22a8710e5f1b6", + "reference": "478465659fd987669df0bd8a9bf22a8710e5f1b6", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" + "phpunit/phpunit": "^7.1" }, "type": "library", "autoload": { @@ -4224,7 +4283,7 @@ "object", "object graph" ], - "time": "2017-10-19T19:58:43+00:00" + "time": "2018-05-29T17:25:09+00:00" }, { "name": "phar-io/manifest", @@ -4482,23 +4541,23 @@ }, { "name": "phpspec/prophecy", - "version": "1.7.4", + "version": "1.7.6", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "9f901e29c93dae4aa77c0bb161df4276f9c9a1be" + "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/9f901e29c93dae4aa77c0bb161df4276f9c9a1be", - "reference": "9f901e29c93dae4aa77c0bb161df4276f9c9a1be", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712", + "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, "require-dev": { @@ -4541,20 +4600,20 @@ "spy", "stub" ], - "time": "2018-02-11T18:49:29+00:00" + "time": "2018-04-18T13:57:24+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "5.3.0", + "version": "5.3.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1" + "reference": "c89677919c5dd6d3b3852f230a663118762218ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/661f34d0bd3f1a7225ef491a70a020ad23a057a1", - "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", + "reference": "c89677919c5dd6d3b3852f230a663118762218ac", "shasum": "" }, "require": { @@ -4604,7 +4663,7 @@ "testing", "xunit" ], - "time": "2017-12-06T09:29:45+00:00" + "time": "2018-04-06T15:36:58+00:00" }, { "name": "phpunit/php-file-iterator", @@ -4794,16 +4853,16 @@ }, { "name": "phpunit/phpunit", - "version": "6.5.6", + "version": "6.5.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "3330ef26ade05359d006041316ed0fa9e8e3cefe" + "reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3330ef26ade05359d006041316ed0fa9e8e3cefe", - "reference": "3330ef26ade05359d006041316ed0fa9e8e3cefe", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4f21a3c6b97c42952fd5c2837bb354ec0199b97b", + "reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b", "shasum": "" }, "require": { @@ -4874,20 +4933,20 @@ "testing", "xunit" ], - "time": "2018-02-01T05:57:37+00:00" + "time": "2018-04-10T11:38:34+00:00" }, { "name": "phpunit/phpunit-mock-objects", - "version": "5.0.6", + "version": "5.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf" + "reference": "3eaf040f20154d27d6da59ca2c6e28ac8fd56dce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/33fd41a76e746b8fa96d00b49a23dadfa8334cdf", - "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3eaf040f20154d27d6da59ca2c6e28ac8fd56dce", + "reference": "3eaf040f20154d27d6da59ca2c6e28ac8fd56dce", "shasum": "" }, "require": { @@ -4933,7 +4992,7 @@ "mock", "xunit" ], - "time": "2018-01-06T05:45:45+00:00" + "time": "2018-05-29T13:50:43+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -5553,7 +5612,7 @@ }, { "name": "symfony/class-loader", - "version": "v3.4.4", + "version": "v3.4.11", "source": { "type": "git", "url": "https://github.com/symfony/class-loader.git", diff --git a/config/administrator.php b/config/administrator.php index 4855d2c..cbc4845 100644 --- a/config/administrator.php +++ b/config/administrator.php @@ -117,7 +117,7 @@ return array( * * @type string */ - 'login_path' => 'login', + 'login_path' => 'permission-denied', /** * The logout path is the path where Administrator will send the user when they click the logout link @@ -148,4 +148,6 @@ return array( 'locales' => [], 'custom_routes_file' => app_path('Http/routes/administrator.php'), + + ); diff --git a/config/administrator/permissions.php b/config/administrator/permissions.php new file mode 100644 index 0000000..3df2e55 --- /dev/null +++ b/config/administrator/permissions.php @@ -0,0 +1,72 @@ + '权限', + 'single' => '权限', + 'model' => Permission::class, + + 'permission' => function () { + return Auth::user()->can('manage_users'); + }, + + // 对 CRUD 动作的单独权限控制,通过返回布尔值来控制权限。 + 'action_permissions' => [ + // 控制『新建按钮』的显示 + 'create' => function ($model) { + return true; + }, + // 允许更新 + 'update' => function ($model) { + return true; + }, + // 不允许删除 + 'delete' => function ($model) { + return false; + }, + // 允许查看 + 'view' => function ($model) { + return true; + }, + ], + + 'columns' => [ + 'id' => [ + 'title' => 'ID', + ], + 'name' => [ + 'title' => '标示', + ], + 'operation' => [ + 'title' => '管理', + 'sortable' => false, + ], + ], + + 'edit_fields' => [ + 'name' => [ + 'title' => '标示(请慎重修改)', + + // 表单条目标题旁的『提示信息』 + 'hint' => '修改权限标识会影响代码的调用,请不要轻易更改。' + ], + 'roles' => [ + 'type' => 'relationship', + 'title' => '角色', + 'name_field' => 'name', + ], + ], + + 'filters' => [ + 'name' => [ + 'title' => '标示', + ], + ], +]; \ No newline at end of file diff --git a/config/administrator/roles.php b/config/administrator/roles.php new file mode 100644 index 0000000..125217b --- /dev/null +++ b/config/administrator/roles.php @@ -0,0 +1,79 @@ + '角色', + 'single' => '角色', + 'model' => Role::class, + + 'permission' => function () { + return Auth::user()->can('manage_users'); + }, + + 'columns' => [ + 'id' => [ + 'title' => 'ID', + ], + 'name' => [ + 'title' => '标识' + ], + 'permissions' => [ + 'title' => '权限', + 'output' => function ($value, $model) { + $model->load('permissions'); + $result = []; + foreach ($model->permissions as $permission) { + $result[] = $permission->name; + } + + return empty($result) ? 'N/A' : implode($result, ' | '); + }, + 'sortable' => false, + ], + 'operation' => [ + 'title' => '管理', + 'output' => function ($value, $model) { + return $value; + }, + 'sortable' => false, + ], + ], + + 'edit_fields' => [ + 'name' => [ + 'title' => '标识', + ], + 'permissions' => [ + 'type' => 'relationship', + 'title' => '权限', + 'name_field' => 'name', + ], + ], + + 'filters' => [ + 'id' => [ + 'title' => 'ID', + ], + 'name' => [ + 'title' => '标识', + ] + ], + + // 新建和编辑时的表单验证规则 + 'rules' => [ + 'name' => 'required|max:15|unique:roles,name', + ], + + // 表单验证错误时定制错误消息 + 'messages' => [ + 'name.required' => '标识不能为空', + 'name.unique' => '标识已存在', + ] +]; \ No newline at end of file diff --git a/public/js/app.js b/public/js/app.js index 11ca34b..db0d9e9 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -4011,9 +4011,9 @@ current = iteratee(value); if (current != null && (computed === undefined - ? (current === current && !isSymbol(current)) - : comparator(current, computed) - )) { + ? (current === current && !isSymbol(current)) + : comparator(current, computed) + )) { var computed = current, result = value; } @@ -4308,15 +4308,15 @@ value = (comparator || value !== 0) ? value : 0; if (!(seen - ? cacheHas(seen, computed) - : includes(result, computed, comparator) - )) { + ? cacheHas(seen, computed) + : includes(result, computed, comparator) + )) { othIndex = othLength; while (--othIndex) { var cache = caches[othIndex]; if (!(cache - ? cacheHas(cache, computed) - : includes(arrays[othIndex], computed, comparator)) + ? cacheHas(cache, computed) + : includes(arrays[othIndex], computed, comparator)) ) { continue outer; } @@ -4514,8 +4514,8 @@ while (index--) { var data = matchData[index]; if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) + ? data[1] !== object[data[0]] + : !(data[0] in object) ) { return false; } @@ -4536,9 +4536,9 @@ var result = customizer(objValue, srcValue, key, object, source, stack); } if (!(result === undefined - ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) - : result - )) { + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { return false; } } @@ -6841,18 +6841,18 @@ // Recursively compare arrays (susceptible to call stack limits). if (seen) { if (!arraySome(other, function (othValue, othIndex) { - if (!cacheHas(seen, othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { result = false; break; } } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, bitmask, customizer, stack) - )) { + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { result = false; break; } @@ -6996,9 +6996,9 @@ } // Recursively compare objects (susceptible to call stack limits). if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) - : compared - )) { + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { result = false; break; } @@ -7492,8 +7492,8 @@ } var type = typeof index; if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object) + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) ) { return eq(object[index], value); } @@ -15757,9 +15757,9 @@ } string = toString(string); if (string && ( - typeof separator == 'string' || - (separator != null && !isRegExp(separator)) - )) { + typeof separator == 'string' || + (separator != null && !isRegExp(separator)) + )) { separator = baseToString(separator); if (!separator && hasUnicode(string)) { return castSlice(stringToArray(string), 0, limit); @@ -18545,7 +18545,7 @@ // Recurse if we're merging plain objects or arrays if (deep && copy && (jQuery.isPlainObject(copy) || - (copyIsArray = Array.isArray(copy)))) { + (copyIsArray = Array.isArray(copy)))) { if (copyIsArray) { copyIsArray = false; @@ -19672,10 +19672,10 @@ } if ((support.matchesSelector = rnative.test((matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector)))) { + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector)))) { assert(function (el) { // Check to see if it's possible to do matchesSelector @@ -20133,8 +20133,8 @@ node = elem; while ((node = node[dir])) { if (ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1) { + node.nodeName.toLowerCase() === name : + node.nodeType === 1) { return false; } @@ -20203,8 +20203,8 @@ (diff = nodeIndex = 0) || start.pop())) { if ((ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1) && + node.nodeName.toLowerCase() === name : + node.nodeType === 1) && ++diff) { // Cache the index of each encountered element @@ -20334,8 +20334,8 @@ var elemLang; do { if ((elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang"))) { + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang"))) { elemLang = elemLang.toLowerCase(); return elemLang === lang || elemLang.indexOf(lang + "-") === 0; @@ -20526,7 +20526,7 @@ // Filters for (type in Expr.filter) { if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || - (match = preFilters[type](match)))) { + (match = preFilters[type](match)))) { matched = match.shift(); tokens.push({ value: matched, @@ -21012,9 +21012,9 @@ if ((find = Expr.find[type])) { // Search, expanding context for leading sibling combinators if ((seed = find( - token.matches[0].replace(runescape, funescape), - rsibling.test(tokens[0].type) && testContext(context.parentNode) || context - ))) { + token.matches[0].replace(runescape, funescape), + rsibling.test(tokens[0].type) && testContext(context.parentNode) || context + ))) { // If seed is empty or no tokens remain, we can return early tokens.splice(i, 1); @@ -21065,9 +21065,9 @@ // Prevent attribute/property "interpolation" // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx if (!assert(function (el) { - el.innerHTML = ""; - return el.firstChild.getAttribute("href") === "#"; - })) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#"; + })) { addHandle("type|href|height|width", function (elem, name, isXML) { if (!isXML) { return elem.getAttribute(name, name.toLowerCase() === "type" ? 1 : 2); @@ -21078,10 +21078,10 @@ // Support: IE<9 // Use defaultValue in place of getAttribute("value") if (!support.attributes || !assert(function (el) { - el.innerHTML = ""; - el.firstChild.setAttribute("value", ""); - return el.firstChild.getAttribute("value") === ""; - })) { + el.innerHTML = ""; + el.firstChild.setAttribute("value", ""); + return el.firstChild.getAttribute("value") === ""; + })) { addHandle("value", function (elem, name, isXML) { if (!isXML && elem.nodeName.toLowerCase() === "input") { return elem.defaultValue; @@ -21092,8 +21092,8 @@ // Support: IE<9 // Use getAttributeNode to fetch booleans when getAttribute lies if (!assert(function (el) { - return el.getAttribute("disabled") == null; - })) { + return el.getAttribute("disabled") == null; + })) { addHandle(booleans, function (elem, name, isXML) { var val; if (!isXML) { @@ -21416,11 +21416,11 @@ // Always skip document fragments if (cur.nodeType < 11 && (targets ? - targets.index(cur) > -1 : + targets.index(cur) > -1 : - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector(cur, selectors))) { + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors))) { matched.push(cur); break; @@ -26372,7 +26372,7 @@ /* eslint-disable no-cond-assign */ if (option.selected = - jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1 + jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1 ) { optionSet = true; } @@ -26522,7 +26522,7 @@ if (!onlyHandlers && !event.isDefaultPrevented()) { if ((!special._default || - special._default.apply(eventPath.pop(), data) === false) && + special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) { // Call a native DOM method on the target with the same name as the event. @@ -31980,8 +31980,10 @@ * Make a map and return a function for checking if a key * is in that map. */ - function makeMap(str, - expectsLowerCase) { + function makeMap( + str, + expectsLowerCase + ) { var map = Object.create(null); var list = str.split(','); for (var i = 0; i < list.length; i++) { @@ -32614,14 +32616,16 @@ /* */ - var VNode = function VNode(tag, - data, - children, - text, - elm, - context, - componentOptions, - asyncFactory) { + var VNode = function VNode( + tag, + data, + children, + text, + elm, + context, + componentOptions, + asyncFactory + ) { this.tag = tag; this.data = data; this.children = children; @@ -32869,11 +32873,13 @@ /** * Define a reactive property on an Object. */ - function defineReactive(obj, - key, - val, - customSetter, - shallow) { + function defineReactive( + obj, + key, + val, + customSetter, + shallow + ) { var dep = new Dep(); var property = Object.getOwnPropertyDescriptor(obj, key); @@ -33044,9 +33050,11 @@ /** * Data */ - function mergeDataOrFn(parentVal, - childVal, - vm) { + function mergeDataOrFn( + parentVal, + childVal, + vm + ) { if (!vm) { // in a Vue.extend merge, both should be functions if (!childVal) { @@ -33084,9 +33092,11 @@ } } - strats.data = function (parentVal, - childVal, - vm) { + strats.data = function ( + parentVal, + childVal, + vm + ) { if (!vm) { if (childVal && typeof childVal !== 'function') { "development" !== 'production' && warn( @@ -33107,8 +33117,10 @@ /** * Hooks and props are merged as arrays. */ - function mergeHook(parentVal, - childVal) { + function mergeHook( + parentVal, + childVal + ) { return childVal ? parentVal ? parentVal.concat(childVal) @@ -33129,10 +33141,12 @@ * a three-way merge between constructor options, instance * options and parent options. */ - function mergeAssets(parentVal, - childVal, - vm, - key) { + function mergeAssets( + parentVal, + childVal, + vm, + key + ) { var res = Object.create(parentVal || null); if (childVal) { "development" !== 'production' && assertObjectType(key, childVal, vm); @@ -33152,10 +33166,12 @@ * Watchers hashes should not overwrite one * another, so we merge them as arrays. */ - strats.watch = function (parentVal, - childVal, - vm, - key) { + strats.watch = function ( + parentVal, + childVal, + vm, + key + ) { // work around Firefox's Object.prototype.watch... if (parentVal === nativeWatch) { parentVal = undefined; @@ -33194,10 +33210,12 @@ strats.props = strats.methods = strats.inject = - strats.computed = function (parentVal, - childVal, - vm, - key) { + strats.computed = function ( + parentVal, + childVal, + vm, + key + ) { if (childVal && "development" !== 'production') { assertObjectType(key, childVal, vm); } @@ -33345,9 +33363,11 @@ * Merge two option objects into a new one. * Core utility used in both instantiation and inheritance. */ - function mergeOptions(parent, - child, - vm) { + function mergeOptions( + parent, + child, + vm + ) { if (true) { checkComponents(child); } @@ -33392,10 +33412,12 @@ * This function is used because child instances need access * to assets defined in its ancestor chain. */ - function resolveAsset(options, - type, - id, - warnMissing) { + function resolveAsset( + options, + type, + id, + warnMissing + ) { /* istanbul ignore if */ if (typeof id !== 'string') { return @@ -33426,10 +33448,12 @@ /* */ - function validateProp(key, - propOptions, - propsData, - vm) { + function validateProp( + key, + propOptions, + propsData, + vm + ) { var prop = propOptions[key]; var absent = !hasOwn(propsData, key); var value = propsData[key]; @@ -33495,11 +33519,13 @@ /** * Assert whether a prop is valid. */ - function assertProp(prop, - name, - value, - vm, - absent) { + function assertProp( + prop, + name, + value, + vm, + absent + ) { if (prop.required && absent) { warn( 'Missing required prop: "' + name + '"', @@ -33675,10 +33701,10 @@ setImmediate(flushCallbacks); }; } else if (typeof MessageChannel !== 'undefined' && ( - isNative(MessageChannel) || - // PhantomJS - MessageChannel.toString() === '[object MessageChannelConstructor]' - )) { + isNative(MessageChannel) || + // PhantomJS + MessageChannel.toString() === '[object MessageChannelConstructor]' + )) { var channel = new MessageChannel(); var port = channel.port2; channel.port1.onmessage = flushCallbacks; @@ -33935,11 +33961,13 @@ return invoker } - function updateListeners(on, - oldOn, - add, - remove$$1, - vm) { + function updateListeners( + on, + oldOn, + add, + remove$$1, + vm + ) { var name, def, cur, old, event; for (name in on) { def = cur = on[name]; @@ -34006,9 +34034,11 @@ /* */ - function extractPropsFromVNodeData(data, - Ctor, - tag) { + function extractPropsFromVNodeData( + data, + Ctor, + tag + ) { // we are only extracting raw values here. // validation and default values are handled in the child // component itself. @@ -34045,11 +34075,13 @@ return res } - function checkProp(res, - hash, - key, - altKey, - preserve) { + function checkProp( + res, + hash, + key, + altKey, + preserve + ) { if (isDef(hash)) { if (hasOwn(hash, key)) { res[key] = hash[key]; @@ -34171,20 +34203,24 @@ : comp } - function createAsyncPlaceholder(factory, - data, - context, - children, - tag) { + function createAsyncPlaceholder( + factory, + data, + context, + children, + tag + ) { var node = createEmptyVNode(); node.asyncFactory = factory; node.asyncMeta = {data: data, context: context, children: children, tag: tag}; return node } - function resolveAsyncComponent(factory, - baseCtor, - context) { + function resolveAsyncComponent( + factory, + baseCtor, + context + ) { if (isTrue(factory.error) && isDef(factory.errorComp)) { return factory.errorComp } @@ -34329,9 +34365,11 @@ target.$off(event, fn); } - function updateComponentListeners(vm, - listeners, - oldListeners) { + function updateComponentListeners( + vm, + listeners, + oldListeners + ) { target = vm; updateListeners(listeners, oldListeners || {}, add, remove$1, vm); target = undefined; @@ -34447,8 +34485,10 @@ /** * Runtime helper for resolving raw children VNodes into a slot object. */ - function resolveSlots(children, - context) { + function resolveSlots( + children, + context + ) { var slots = {}; if (!children) { return slots @@ -34489,8 +34529,10 @@ return (node.isComment && !node.asyncFactory) || node.text === ' ' } - function resolveScopedSlots(fns, // see flow/vnode - res) { + function resolveScopedSlots( + fns, // see flow/vnode + res + ) { res = res || {}; for (var i = 0; i < fns.length; i++) { if (Array.isArray(fns[i])) { @@ -34627,9 +34669,11 @@ }; } - function mountComponent(vm, - el, - hydrating) { + function mountComponent( + vm, + el, + hydrating + ) { vm.$el = el; if (!vm.$options.render) { vm.$options.render = createEmptyVNode; @@ -34693,11 +34737,13 @@ return vm } - function updateChildComponent(vm, - propsData, - listeners, - parentVnode, - renderChildren) { + function updateChildComponent( + vm, + propsData, + listeners, + parentVnode, + renderChildren + ) { if (true) { isUpdatingChildComponent = true; } @@ -34966,11 +35012,13 @@ * and fires callback when the expression value changes. * This is used for both the $watch() api and directives. */ - var Watcher = function Watcher(vm, - expOrFn, - cb, - options, - isRenderWatcher) { + var Watcher = function Watcher( + vm, + expOrFn, + cb, + options, + isRenderWatcher + ) { this.vm = vm; if (isRenderWatcher) { vm._watcher = this; @@ -35352,9 +35400,11 @@ } } - function defineComputed(target, - key, - userDef) { + function defineComputed( + target, + key, + userDef + ) { var shouldCache = !isServerRendering(); if (typeof userDef === 'function') { sharedPropertyDefinition.get = shouldCache @@ -35439,10 +35489,12 @@ } } - function createWatcher(vm, - keyOrFn, - handler, - options) { + function createWatcher( + vm, + keyOrFn, + handler, + options + ) { if (isPlainObject(handler)) { options = handler; handler = handler.handler; @@ -35483,9 +35535,11 @@ Vue.prototype.$set = set; Vue.prototype.$delete = del; - Vue.prototype.$watch = function (expOrFn, - cb, - options) { + Vue.prototype.$watch = function ( + expOrFn, + cb, + options + ) { var vm = this; if (isPlainObject(cb)) { return createWatcher(vm, expOrFn, cb, options) @@ -35578,8 +35632,10 @@ /** * Runtime helper for rendering v-for lists. */ - function renderList(val, - render) { + function renderList( + val, + render + ) { var ret, i, l, keys, key; if (Array.isArray(val) || typeof val === 'string') { ret = new Array(val.length); @@ -35610,10 +35666,12 @@ /** * Runtime helper for rendering */ - function renderSlot(name, - fallback, - props, - bindObject) { + function renderSlot( + name, + fallback, + props, + bindObject + ) { var scopedSlotFn = this.$scopedSlots[name]; var nodes; if (scopedSlotFn) { // scoped slot @@ -35668,10 +35726,12 @@ * exposed as Vue.prototype._k * passing in eventKeyName as last argument separately for backwards compat */ - function checkKeyCodes(eventKeyCode, - key, - builtInAlias, - eventKeyName) { + function checkKeyCodes( + eventKeyCode, + key, + builtInAlias, + eventKeyName + ) { var keyCodes = config.keyCodes[key] || builtInAlias; if (keyCodes) { if (Array.isArray(keyCodes)) { @@ -35689,11 +35749,13 @@ /** * Runtime helper for merging v-bind="object" into a VNode's data. */ - function bindObjectProps(data, - tag, - value, - asProp, - isSync) { + function bindObjectProps( + data, + tag, + value, + asProp, + isSync + ) { if (value) { if (!isObject(value)) { "development" !== 'production' && warn( @@ -35741,8 +35803,10 @@ /** * Runtime helper for rendering static trees. */ - function renderStatic(index, - isInFor) { + function renderStatic( + index, + isInFor + ) { var cached = this._staticTrees || (this._staticTrees = []); var tree = cached[index]; // if has already-rendered static tree and not inside v-for, @@ -35766,16 +35830,20 @@ * Runtime helper for v-once. * Effectively it means marking the node as static with a unique key. */ - function markOnce(tree, - index, - key) { + function markOnce( + tree, + index, + key + ) { markStatic(tree, ("__once__" + index + (key ? ("_" + key) : "")), true); return tree } - function markStatic(tree, - key, - isOnce) { + function markStatic( + tree, + key, + isOnce + ) { if (Array.isArray(tree)) { for (var i = 0; i < tree.length; i++) { if (tree[i] && typeof tree[i] !== 'string') { @@ -35836,11 +35904,13 @@ /* */ - function FunctionalRenderContext(data, - props, - children, - parent, - Ctor) { + function FunctionalRenderContext( + data, + props, + children, + parent, + Ctor + ) { var options = Ctor.options; this.data = data; this.props = props; @@ -35885,11 +35955,13 @@ installRenderHelpers(FunctionalRenderContext.prototype); - function createFunctionalComponent(Ctor, - propsData, - data, - contextVm, - children) { + function createFunctionalComponent( + Ctor, + propsData, + data, + contextVm, + children + ) { var options = Ctor.options; var props = {}; var propOptions = options.props; @@ -35956,10 +36028,12 @@ // hooks to be invoked on component VNodes during patch var componentVNodeHooks = { - init: function init(vnode, - hydrating, - parentElm, - refElm) { + init: function init( + vnode, + hydrating, + parentElm, + refElm + ) { if (!vnode.componentInstance || vnode.componentInstance._isDestroyed) { var child = vnode.componentInstance = createComponentInstanceForVnode( vnode, @@ -36022,11 +36096,13 @@ var hooksToMerge = Object.keys(componentVNodeHooks); - function createComponent(Ctor, - data, - context, - children, - tag) { + function createComponent( + Ctor, + data, + context, + children, + tag + ) { if (isUndef(Ctor)) { return } @@ -36123,10 +36199,12 @@ return vnode } - function createComponentInstanceForVnode(vnode, // we know it's MountedComponentVNode but flow doesn't - parent, // activeInstance in lifecycle state - parentElm, - refElm) { + function createComponentInstanceForVnode( + vnode, // we know it's MountedComponentVNode but flow doesn't + parent, // activeInstance in lifecycle state + parentElm, + refElm + ) { var options = { _isComponent: true, parent: parent, @@ -36183,12 +36261,14 @@ // wrapper function for providing a more flexible interface // without getting yelled at by flow - function createElement(context, - tag, - data, - children, - normalizationType, - alwaysNormalize) { + function createElement( + context, + tag, + data, + children, + normalizationType, + alwaysNormalize + ) { if (Array.isArray(data) || isPrimitive(data)) { normalizationType = children; children = data; @@ -36200,11 +36280,13 @@ return _createElement(context, tag, data, children, normalizationType) } - function _createElement(context, - tag, - data, - children, - normalizationType) { + function _createElement( + context, + tag, + data, + children, + normalizationType + ) { if (isDef(data) && isDef((data).__ob__)) { "development" !== 'production' && warn( "Avoid using observed data object as vnode data: " + (JSON.stringify(data)) + "\n" + @@ -36701,8 +36783,10 @@ * Create asset registration methods. */ ASSET_TYPES.forEach(function (type) { - Vue[type] = function (id, - definition) { + Vue[type] = function ( + id, + definition + ) { if (!definition) { return this.options[type + 's'][id] } else { @@ -36757,10 +36841,12 @@ } } - function pruneCacheEntry(cache, - key, - keys, - current) { + function pruneCacheEntry( + cache, + key, + keys, + current + ) { var cached$$1 = cache[key]; if (cached$$1 && (!current || cached$$1.tag !== current.tag)) { cached$$1.componentInstance.$destroy(); @@ -36819,9 +36905,9 @@ var exclude = ref.exclude; if ( // not included - (include && (!name || !matches(include, name))) || - // excluded - (exclude && name && matches(exclude, name)) + (include && (!name || !matches(include, name))) || + // excluded + (exclude && name && matches(exclude, name)) ) { return vnode } @@ -36992,8 +37078,10 @@ } } - function renderClass(staticClass, - dynamicClass) { + function renderClass( + staticClass, + dynamicClass + ) { if (isDef(staticClass) || isDef(dynamicClass)) { return concat(staticClass, stringifyClass(dynamicClass)) } @@ -38110,8 +38198,10 @@ var emptyModifiers = Object.create(null); - function normalizeDirectives$1(dirs, - vm) { + function normalizeDirectives$1( + dirs, + vm + ) { var res = Object.create(null); if (!dirs) { // $flow-disable-line @@ -38418,8 +38508,10 @@ console.error(("[Vue compiler]: " + msg)); } - function pluckModuleFunction(modules, - key) { + function pluckModuleFunction( + modules, + key + ) { return modules ? modules.map(function (m) { return m[key]; @@ -38445,12 +38537,14 @@ el.attrsList.push({name: name, value: value}); } - function addDirective(el, - name, - rawName, - value, - arg, - modifiers) { + function addDirective( + el, + name, + rawName, + value, + arg, + modifiers + ) { (el.directives || (el.directives = [])).push({ name: name, rawName: rawName, @@ -38461,12 +38555,14 @@ el.plain = false; } - function addHandler(el, - name, - value, - modifiers, - important, - warn) { + function addHandler( + el, + name, + value, + modifiers, + important, + warn + ) { modifiers = modifiers || emptyObject; // warn prevent and passive modifier /* istanbul ignore if */ @@ -38533,9 +38629,11 @@ el.plain = false; } - function getBindingAttr(el, - name, - getStatic) { + function getBindingAttr( + el, + name, + getStatic + ) { var dynamicValue = getAndRemoveAttr(el, ':' + name) || getAndRemoveAttr(el, 'v-bind:' + name); @@ -38553,9 +38651,11 @@ // doesn't get processed by processAttrs. // By default it does NOT remove it from the map (attrsMap) because the map is // needed during codegen. - function getAndRemoveAttr(el, - name, - removeFromMap) { + function getAndRemoveAttr( + el, + name, + removeFromMap + ) { var val; if ((val = el.attrsMap[name]) != null) { var list = el.attrsList; @@ -38577,9 +38677,11 @@ /** * Cross-platform code generation for component v-model */ - function genComponentModel(el, - value, - modifiers) { + function genComponentModel( + el, + value, + modifiers + ) { var ref = modifiers || {}; var number = ref.number; var trim = ref.trim; @@ -38607,8 +38709,10 @@ /** * Cross-platform codegen helper for generating v-model value assignment code. */ - function genAssignmentCode(value, - assignment) { + function genAssignmentCode( + value, + assignment + ) { var res = parseModel(value); if (res.key === null) { return (value + "=" + assignment) @@ -38730,9 +38834,11 @@ var RANGE_TOKEN = '__r'; var CHECKBOX_RADIO_TOKEN = '__c'; - function model(el, - dir, - _warn) { + function model( + el, + dir, + _warn + ) { warn$1 = _warn; var value = dir.value; var modifiers = dir.modifiers; @@ -38779,9 +38885,11 @@ return true } - function genCheckboxModel(el, - value, - modifiers) { + function genCheckboxModel( + el, + value, + modifiers + ) { var number = modifiers && modifiers.number; var valueBinding = getBindingAttr(el, 'value') || 'null'; var trueValueBinding = getBindingAttr(el, 'true-value') || 'true'; @@ -38808,9 +38916,11 @@ ); } - function genRadioModel(el, - value, - modifiers) { + function genRadioModel( + el, + value, + modifiers + ) { var number = modifiers && modifiers.number; var valueBinding = getBindingAttr(el, 'value') || 'null'; valueBinding = number ? ("_n(" + valueBinding + ")") : valueBinding; @@ -38818,9 +38928,11 @@ addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true); } - function genSelect(el, - value, - modifiers) { + function genSelect( + el, + value, + modifiers + ) { var number = modifiers && modifiers.number; var selectedVal = "Array.prototype.filter" + ".call($event.target.options,function(o){return o.selected})" + @@ -38833,9 +38945,11 @@ addHandler(el, 'change', code, null, true); } - function genDefaultModel(el, - value, - modifiers) { + function genDefaultModel( + el, + value, + modifiers + ) { var type = el.attrsMap.type; // warn if v-bind:value conflicts with v-model @@ -38916,11 +39030,13 @@ } } - function add$1(event, - handler, - once$$1, - capture, - passive) { + function add$1( + event, + handler, + once$$1, + capture, + passive + ) { handler = withMacroTask(handler); if (once$$1) { handler = createOnceHandler(handler, event, capture); @@ -38934,10 +39050,12 @@ ); } - function remove$2(event, - handler, - capture, - _target) { + function remove$2( + event, + handler, + capture, + _target + ) { (_target || target$1).removeEventListener( event, handler._withTask || handler, @@ -39375,9 +39493,11 @@ removeClass(el, cls); } - function whenTransitionEnds(el, - expectedType, - cb) { + function whenTransitionEnds( + el, + expectedType, + cb + ) { var ref = getTransitionInfo(el, expectedType); var type = ref.type; var timeout = ref.timeout; @@ -39863,8 +39983,8 @@ var prevOptions = el._vOptions; var curOptions = el._vOptions = [].map.call(el.options, getValue); if (curOptions.some(function (o, i) { - return !looseEqual(o, prevOptions[i]); - })) { + return !looseEqual(o, prevOptions[i]); + })) { // trigger change event if // no matching option found for at least one value var needReset = el.multiple @@ -40007,11 +40127,13 @@ } }, - unbind: function unbind(el, - binding, - vnode, - oldVnode, - isDestroy) { + unbind: function unbind( + el, + binding, + vnode, + oldVnode, + isDestroy + ) { if (!isDestroy) { el.style.display = el.__vOriginalDisplay; } @@ -40175,8 +40297,8 @@ // mark v-show // so that the transition module can hand over the control to the directive if (child.data.directives && child.data.directives.some(function (d) { - return d.name === 'show'; - })) { + return d.name === 'show'; + })) { child.data.show = true; } @@ -40413,8 +40535,10 @@ Vue$3.prototype.__patch__ = inBrowser ? patch : noop; // public mount method - Vue$3.prototype.$mount = function (el, - hydrating) { + Vue$3.prototype.$mount = function ( + el, + hydrating + ) { el = el && inBrowser ? query(el) : undefined; return mountComponent(this, el, hydrating) }; @@ -40456,8 +40580,10 @@ }); - function parseText(text, - delimiters) { + function parseText( + text, + delimiters + ) { var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE; if (!tagRE.test(text)) { return @@ -40958,9 +41084,11 @@ var platformGetTagNamespace; - function createASTElement(tag, - attrs, - parent) { + function createASTElement( + tag, + attrs, + parent + ) { return { type: 1, tag: tag, @@ -40974,8 +41102,10 @@ /** * Convert HTML string to AST. */ - function parse(template, - options) { + function parse( + template, + options + ) { warn$2 = options.warn || baseWarn; platformIsPreTag = options.isPreTag || no; @@ -41454,8 +41584,8 @@ } } if (isProp || ( - !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name) - )) { + !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name) + )) { addProp(el, name, value); } else { addAttr(el, name, value); @@ -41776,9 +41906,9 @@ // are not just static text. Otherwise the cost of hoisting out will // outweigh the benefits and it's better off to just always render it fresh. if (node.static && node.children.length && !( - node.children.length === 1 && - node.children[0].type === 3 - )) { + node.children.length === 1 && + node.children[0].type === 3 + )) { node.staticRoot = true; return } else { @@ -41865,9 +41995,11 @@ right: genGuard("'button' in $event && $event.button !== 2") }; - function genHandlers(events, - isNative, - warn) { + function genHandlers( + events, + isNative, + warn + ) { var res = isNative ? 'nativeOn:{' : 'on:{'; for (var name in events) { res += "\"" + name + "\":" + (genHandler(name, events[name])) + ","; @@ -41875,8 +42007,10 @@ return res.slice(0, -1) + '}' } - function genHandler(name, - handler) { + function genHandler( + name, + handler + ) { if (!handler) { return 'function(){}' } @@ -42002,8 +42136,10 @@ }; - function generate(ast, - options) { + function generate( + ast, + options + ) { var state = new CodegenState(options); var code = ast ? genElement(ast, state) : '_c("div")'; return { @@ -42078,18 +42214,22 @@ } } - function genIf(el, - state, - altGen, - altEmpty) { + function genIf( + el, + state, + altGen, + altEmpty + ) { el.ifProcessed = true; // avoid recursion return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty) } - function genIfConditions(conditions, - state, - altGen, - altEmpty) { + function genIfConditions( + conditions, + state, + altGen, + altEmpty + ) { if (!conditions.length) { return altEmpty || '_e()' } @@ -42111,10 +42251,12 @@ } } - function genFor(el, - state, - altGen, - altHelper) { + function genFor( + el, + state, + altGen, + altHelper + ) { var exp = el.for; var alias = el.alias; var iterator1 = el.iterator1 ? ("," + (el.iterator1)) : ''; @@ -42251,8 +42393,8 @@ function genInlineTemplate(el, state) { var ast = el.children[0]; if ("development" !== 'production' && ( - el.children.length !== 1 || ast.type !== 1 - )) { + el.children.length !== 1 || ast.type !== 1 + )) { state.warn('Inline-template components must have exactly one child element.'); } if (ast.type === 1) { @@ -42263,16 +42405,20 @@ } } - function genScopedSlots(slots, - state) { + function genScopedSlots( + slots, + state + ) { return ("scopedSlots:_u([" + (Object.keys(slots).map(function (key) { return genScopedSlot(key, slots[key], state) }).join(',')) + "])") } - function genScopedSlot(key, - el, - state) { + function genScopedSlot( + key, + el, + state + ) { if (el.for && !el.forProcessed) { return genForScopedSlot(key, el, state) } @@ -42285,9 +42431,11 @@ return ("{key:" + key + ",fn:" + fn + "}") } - function genForScopedSlot(key, - el, - state) { + function genForScopedSlot( + key, + el, + state + ) { var exp = el.for; var alias = el.alias; var iterator1 = el.iterator1 ? ("," + (el.iterator1)) : ''; @@ -42299,11 +42447,13 @@ '})' } - function genChildren(el, - state, - checkSkip, - altGenElement, - altGenNode) { + function genChildren( + el, + state, + checkSkip, + altGenElement, + altGenNode + ) { var children = el.children; if (children.length) { var el$1 = children[0]; @@ -42329,8 +42479,10 @@ // 0: no normalization needed // 1: simple normalization needed (possible 1-level deep nested array) // 2: full normalization needed - function getNormalizationType(children, - maybeComponent) { + function getNormalizationType( + children, + maybeComponent + ) { var res = 0; for (var i = 0; i < children.length; i++) { var el = children[i]; @@ -42400,9 +42552,11 @@ } // componentName is el.component, take it as argument to shun flow's pessimistic refinement - function genComponent(componentName, - el, - state) { + function genComponent( + componentName, + el, + state + ) { var children = el.inlineTemplate ? null : genChildren(el, state, true); return ("_c(" + componentName + "," + (genData$2(el, state)) + (children ? ("," + children) : '') + ")") } @@ -42498,10 +42652,12 @@ checkIdentifier(node.iterator2, 'v-for iterator', text, errors); } - function checkIdentifier(ident, - type, - text, - errors) { + function checkIdentifier( + ident, + type, + text, + errors + ) { if (typeof ident === 'string') { try { new Function(("var " + ident + "=_")); @@ -42545,9 +42701,11 @@ function createCompileToFunctionFn(compile) { var cache = Object.create(null); - return function compileToFunctions(template, - options, - vm) { + return function compileToFunctions( + template, + options, + vm + ) { options = extend({}, options); var warn$$1 = options.warn || warn; delete options.warn; @@ -42634,8 +42792,10 @@ function createCompilerCreator(baseCompile) { return function createCompiler(baseOptions) { - function compile(template, - options) { + function compile( + template, + options + ) { var finalOptions = Object.create(baseOptions); var errors = []; var tips = []; @@ -42685,8 +42845,10 @@ // `createCompilerCreator` allows creating compilers that use alternative // parser/optimizer/codegen, e.g the SSR optimizing compiler. // Here we just export a default compiler using the default parts. - var createCompiler = createCompilerCreator(function baseCompile(template, - options) { + var createCompiler = createCompilerCreator(function baseCompile( + template, + options + ) { var ast = parse(template.trim(), options); if (options.optimize !== false) { optimize(ast, options); @@ -42728,8 +42890,10 @@ }); var mount = Vue$3.prototype.$mount; - Vue$3.prototype.$mount = function (el, - hydrating) { + Vue$3.prototype.$mount = function ( + el, + hydrating + ) { el = el && query(el); /* istanbul ignore if */ @@ -43137,12 +43301,14 @@ // This module is a runtime utility for cleaner component module output and will // be included in the final webpack user bundle. - module.exports = function normalizeComponent(rawScriptExports, - compiledTemplate, - functionalTemplate, - injectStyles, - scopeId, - moduleIdentifier /* server only */) { + module.exports = function normalizeComponent( + rawScriptExports, + compiledTemplate, + functionalTemplate, + injectStyles, + scopeId, + moduleIdentifier /* server only */ + ) { var esModule var scriptExports = rawScriptExports = rawScriptExports || {} diff --git a/resources/views/pages/permission_denied.blade.php b/resources/views/pages/permission_denied.blade.php new file mode 100644 index 0000000..9db986b --- /dev/null +++ b/resources/views/pages/permission_denied.blade.php @@ -0,0 +1,26 @@ +@extends('layouts.app') + +@section('title','无权限访问') + +@section('content') +
+
+
+ @if (Auth::check()) +
+ 当前登录账号无后台访问权限。 +
+ @else +
+ 请登录以后再操作 +
+ + + + 登 录 + + @endif +
+
+
+@endsection \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 3120c7b..7bdf1d7 100644 --- a/routes/web.php +++ b/routes/web.php @@ -39,4 +39,6 @@ Route::post('upload_image', 'TopicsController@uploadImage')->name('topics.upload Route::resource('replies', 'RepliesController', ['only' => ['store', 'destroy']]); -Route::resource('notifications', 'NotificationsController', ['only' => ['index']])->middleware('auth'); \ No newline at end of file +Route::resource('notifications', 'NotificationsController', ['only' => ['index']])->middleware('auth'); + +Route::get('permission-denied', 'PagesController@permissionDenied')->name('permission-denied'); \ No newline at end of file diff --git a/storage/administrator_settings/site.json b/storage/administrator_settings/site.json new file mode 100644 index 0000000..743506a --- /dev/null +++ b/storage/administrator_settings/site.json @@ -0,0 +1,6 @@ +{ + "site_name": "larabbs - Powered by LaraBBS", + "contact_email": "fthvgb1@163.com", + "seo_description": "laravel\u642d\u5efa\u7684bbs", + "seo_keyword": "laravel,bbs,laravel\u793e\u533a" +} \ No newline at end of file