Laravel 5.6.20 маршруты с одинаковым URL-адресом в разных группах

У меня есть группа user и роль admin для моих пользователей.

Что я хочу:

Другое действие контроллера для того же URL-адреса. Я думал, что следующее было бы неплохо, но это не работает.

В настоящий момент, когда я вхожу в систему как администратор, я получаю исключение, что мне не разрешено просматривать страницу.

routes/web.php

Route::group( [
    'middleware' => [ 'auth', \App\Http\Middleware\UserLastActivity::class ],
    'domain'     => parse_url( env( 'APP_URL' ), PHP_URL_HOST )
], function () {

    Route::group( [
        'middleware' => [ \App\Http\Middleware\Admin::class ]
    ], function () {
        Route::get('/', 'AdminController@index')->name('home');
    } );


    Route::group( [
        'middleware' => [ \App\Http\Middleware\User::class ]
    ], function () {
        Route::get( '/', 'CvController@index' )->name( 'home' );
    } );
} );

Http/Middleware/User.php

<?php

namespace App\Http\Middleware;

use Closure;

class User {
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     *
     * @return mixed
     */
    public function handle( $request, Closure $next ) {
        if ( \Auth::user()->role->id === \App\User::ROLE_USER ) {
            return $next( $request );
        }
        abort( 401 );
    }
}

Http/Middleware/Admin.php

<?php

namespace App\Http\Middleware;

use Closure;

class Admin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ( \Auth::user()->role->id === \App\User::ROLE_ADMIN ) {
            return $next( $request );
        }

        abort( 401, __('messages.http.unauthorized') );
    }
}

Есть идеи, как этого добиться?

Чтобы было ясно:

Если у пользователя role_id 1 (admin): маршрут / должен выполнять AdminController@index

Когда у пользователя есть role_id 2 (user): маршрут / должен выполнять CvController@index

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
0
612
1

Ответы 1

Я думаю, что лучшим подходом будет переосмыслить свои маршруты, поскольку это не хороший дизайн, если вы хотите следовать стандартам. У вас может быть один и тот же URL-адрес с разными контроллерами, когда петиция отличается (post, get, put и т. д.).

Не могли бы вы изложить логику того, что должно быть сделано в зависимости от роли пользователя внутри контроллера? Пример:

Route::get('/', 'UserController@index');

Затем в индексе UserController ->

public function index()
{
    if (Auth::user()->role->id == 1) :
       //do X
    else : 
      //do y
    endif;
}

Другие вопросы по теме