ERR_TOO_MANY_REDIRECTS - Laravel 5.7

Я использую laravel 5.7. У меня есть таблица пользователей со столбцом user_type, где

0 = default users
1 = Professionals
2 = Facilities
8 = Employees
9 = Managers
10 = Administrator

И еще один столбец с логическим значением is_premium, который возвращает либо истину, либо ложь.

Я создал промежуточное ПО для администратора

namespace App\Http\Middleware;

use Closure;
use Auth; 

class IsAdmin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (Auth::user() &&  Auth::user()->usertype == 10) {
            return $next($request);
         }

        return redirect('/administration/dashboard');
    }
}

И я использовал его в файле routes / web.php как

Route::group(['prefix' => 'administration', 'middleware' => 'admin'], function(){
  Route::get('/dashboard', 'Admin\DashboardController@index')->name('admin.dashboard');
});

Когда я захожу на маршрут панели администратора, он говорит

ERR_TOO_MANY_REDIRECTS

Я знаю, что я что-то делаю не так ... что это?

И я предполагаю создать промежуточное ПО для других типов пользователей и использовать их в файле маршрутов. Это правильный способ?


person Community    schedule 03.10.2018    source источник
comment
Просто поставьте перенаправление на другой URL. Или показать сообщение об ошибке 401   -  person YanDatsiuk    schedule 03.10.2018
comment
@YanDatsyuk Я не понял, что ты сказал   -  person    schedule 03.10.2018
comment
когда я перенаправляю на другие URL-адреса, которых нет в группе администрирования, он работает ...   -  person    schedule 03.10.2018
comment
Измените эту строку вашего кода возврата перенаправления ('/ Administration / dashboard'); Вы делаете рекурсивное перенаправление ... Просто попробуйте изменить «администрирование / панель управления» на другой URL-адрес, на другой маршрут.   -  person YanDatsiuk    schedule 03.10.2018
comment
@YanDatsyuk, если я изменю его на, пусть говорит '/', он переводит меня на домашнюю страницу сайта всякий раз, когда я нажимаю на маршрут администратора. Любой маршрут, который я создаю в группе администраторов, перенаправляется на домашнюю страницу ... пользователь имеет user_type как 10, как он может управлять маршрутами администратора. Мне жаль, что я новенький и пытаюсь самостоятельно   -  person    schedule 03.10.2018
comment
Обычно я сначала использую ложную логику. Если не администратор, перенаправьте домой или куда-нибудь еще, в противном случае разрешите следующий запрос. Кроме того, в предыдущем комментарии я заметил, что вы используете user_type, а в своем вопросе это usertype.   -  person adam    schedule 03.10.2018
comment
@adam Это сработало. Теперь, если сработает ... не могли бы вы опубликовать это как ответ, чтобы я мог принять это ... я   -  person    schedule 03.10.2018


Ответы (1)


Сначала попробуйте ложную логику:

...
public function handle($request, Closure $next)
{
    if ( ! (Auth::user() &&  Auth::user()->usertype == 10) ) {
        return redirect('/home');
    }

    return $next($request);
}
...
person adam    schedule 03.10.2018