admin
admin copied to clipboard
Как заменить модель \SleepingOwl\AdminAuth\Entities\Administrator на обычного пользователя с установленными правами?
Я хочу чтобы обычный пользователь мог быть администратором, а не создавать для этого отдельных пользователей в отдельной таблице. Я использую Zizaco/entrust https://github.com/Zizaco/entrust для назначения ролей и прав обычным пользователям. Соответсвенно я подправил admin.php чтобы использовать доступ через роли и права следующим образом:
//'middleware' => ['admin.auth'],
'middleware' => ['permission:admin::dashboard'],
//...
'auth' => [
// 'model' => '\SleepingOwl\AdminAuth\Entities\Administrator',
// 'rules' => [
// 'username' => 'required',
// 'password' => 'required',
// ]
'model' => \App\Employee::class,
'rules' => [
'email' => 'required',
'password' => 'required',
]
],
middleware
срабатывает и дает доступ к панели администратора, но дальше возвращается исключение Trying to get property of non-object (View: C:\htdocs\laravel\webserver\www\vendor\sleeping-owl\admin\src\views\default\_partials\user.blade.php)
Я так понимаю идет обращение к объекту равному нулю. Как это исправить?
Я заменил AdminAuthManager на обычного AuthManager добавив следущий код в AppServiceProvider.php
public function register()
{
$this->app->booted(function($app1)
{
// Replace SleepingOwl AdminAuthManager on usual AuthManager
$app1->offsetUnset('admin.auth');
$app1->singleton('admin.auth', function($app2)
{
return $app2['auth'];
});
});
}
Но все равно еще остались две проблемы:
- Вместо имени пользователя отображается текст
admin
Я предлагаю во вьюхеuser.blade.php
кодAdminAuth::user()->name
заменить наAdminAuth::user()->shortName()
или наAdminAuth::user()->displayName()
и уже внутри каждая модель может по разному реализовывать это свойство. - Не работает форма авторизации. Хотя указал правильную модель в файле
admin.php
'middleware' => ['admin.auth'],
'auth' => [
'model' => \App\Employee::class,
'rules' => [
'email' => 'required',
'password' => 'required',
]
],
Не важно что в форме вводить (правильные или нет значения ) - она просто зацикливается не сообщая никай ошибки при неверных значениях и не авторизуя при вверных.
Спасибо за наводку -)) Я пользуюсь Sentinel, сменил middleware и логин-форма отдельная в админку вобще не нужна - в мидлваре проверяем роль, если админ то пущаем, если нет хоть на главную редирект, хоть на 404, хоть на общую логин-форму авторизации на сайте. а вот в _partials\user.blade.php просто костыль воткнул -(( поменял AdminAuth::user()->displayName() на сентинеловский Sentinel::check()->first_name. Понятно что не по феншую совсем и после обновления снова лезть, но работает зато...