Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Приветствую форумчан и прошу помощи. Опыта мало, но хочется написать админку для сайта
с отдельной формой для админа.
Пытаюсь следовать совету на блоге по адресу:
https://super-coding.blogspot.com/2017/ … el_14.html
1.
В роутах создаю группу маршрутов для панели, указываю для послердинка auth, парамертр admin. :
Route::group(['namespace' => 'Admin', 'middleware'=>'auth:admin'], function() {
Route::get('admin/home', 'HomeController@index')->name('admin.home');
// Аутентификация
Route::get('admin', 'Auth\LoginController@showLoginForm')->name('admin.login');
Route::post('admin', 'Auth\LoginController@login');
});
2.
В файле App\Http\Middleware\RedirectIfAuthenticated.php, изменяют метод handle:
public function handle($request, Closure $next, $guard = null)
{
//---
switch($guard) {
case 'admin':
if(Auth::guard($guard)->check())
{
return redirect('/admin/home'); //Переадресация админа на главную админки
}
break;
default:
//---
if (Auth::guard($guard)->check()) {
return redirect('/cabinet'); //Переадресация юзера в акк
}
}
return $next($request);
}
3.
В файле \vendor\laravel\framework\src\Illuminate\Foundation\Exceptions
Изменил метод unauthenticated
protected function unauthenticated($request, AuthenticationException $exception)
{
/* Закомментивровал это
return $request->expectsJson()
? response()->json(['message' => $exception->getMessage()], 401)
: redirect()->guest(route('login'));
*/
//Заменил на это, все что ниже
if ($request->expectsJson())
{
//return response()->json(['error' => 'Unauthenticated.'], 401);
return response()->json(['message' => $exception->getMessage()], 401);
}
//---
$guard = array_get($exception->guards(),0);
switch ($guard)
{
case 'admin':
return redirect()->guest(route('admin.login'));
break;
default:
return redirect()->guest(route('login'));
break;
}
//---
}
redirect()->guest(route('admin.login')); - этот ридерект почему то зацикливается.
Может кто подскажет почему?
Не в сети
Может быть потому, что это не всё что нужно реализовать, а только часть.
Я бы начал не с редиректов, а с описания нового гарда в config/auth.php
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Благодарю за ответ.
Гард описала так:
//---
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
//---
Добавила еще это:
//---
'admins' => [
'driver' => 'eloquent',
'model' => App\Model\Admin\Admin::class,
],
//---
Табличку сделала для админа отдельную
Не в сети
Честно — не знаю как вам помочь не устанавливая проект себе и не пройдясь отладчиком. Чуйка подсказывает, что бесконечный редирект на странице аутентификации может быть если этот маршрут НЕ помечен как исключение для авторизующей мидлвари.
Статью бегло посмотрел, выглядит годно.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Route::group(['namespace' => 'Admin', 'middleware'=>'auth:admin'], function() {
Route::get('admin/home', 'HomeController@index')->name('admin.home');
// Аутентификация
Route::get('admin', 'Auth\LoginController@showLoginForm')->name('admin.login');
Route::post('admin', 'Auth\LoginController@login');
});
мне кажется страничка с формой входа не должна требовать auth:admin !
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Большое спасибо Вам!!! Заработало!
Не в сети
Страницы 1