Использование Laravel во внешнем коде
Была у меня задача подключить внешний PHP код, но открыть к нему доступ только для пользователей с ролью Администратор. Через routes это было не сделать.
Помог следующий код в файле конфиге внешнего PHP кода который инклудился во всех файлах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php require '/path/to/laravel/bootstrap/autoload.php'; $app = require_once '/path/to/laravel/bootstrap/start.php'; $request = $app['request']; $client = (new \Stack\Builder) ->push('Illuminate\Cookie\Guard', $app['encrypter']) ->push('Illuminate\Cookie\Queue', $app['cookie']) ->push('Illuminate\Session\Middleware', $app['session'], null); $stack = $client->resolve($app); $stack->handle($request); $isAuthorized = Auth::check(); //Тут можно уже делать проверки на наличие авторизации, роли и прочее - т.к. сессия подхватиться если есть |
Тоже самое для Laravel 5
1 2 3 4 5 6 7 8 9 |
<?php require '/path/to/laravel/bootstrap/autoload.php'; $app = require_once '/path/to/laravel/bootstrap/app.php'; $app->make('Illuminate\Contracts\Http\Kernel') ->handle(Illuminate\Http\Request::capture()); $isAuthorized = Auth::check(); |
Долго искал как это можно было сделать, нашёл в итоге это решение на гитхабе: https://gist.github.com/frzsombor/ddd0e11f93885060ef35