Разделение входа администратора и пользователя в Laravel: методы и примеры кода

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

Метод 1: управление доступом на основе ролей (RBAC) с использованием промежуточного программного обеспечения.
Одним из популярных подходов является реализация управления доступом на основе ролей с использованием промежуточного программного обеспечения. Вот как это можно настроить:

Шаг 1. Создание промежуточного программного обеспечения
Создайте новое промежуточное программное обеспечение под названием AdminMiddlewareс помощью ремесленной команды Laravel: php artisan make:middleware AdminMiddleware.

Шаг 2. Определите логику промежуточного программного обеспечения.
Откройте сгенерированный файл AdminMiddleware.phpи реализуйте метод handle. Проверьте, имеет ли аутентифицированный пользователь роль администратора, и перенаправьте его на панель администратора, если это правда. В противном случае перенаправьте их на панель пользователя или отобразите сообщение об отказе в доступе.

public function handle($request, Closure $next)
{
    if (auth()->check() && auth()->user()->isAdmin()) {
        return redirect()->route('admin.dashboard');
    }
    return redirect()->route('user.dashboard')->with('error', 'Access denied.');
}

Шаг 3. Зарегистрируйте промежуточное программное обеспечение
В файле app/Http/Kernel.phpдобавьте AdminMiddlewareв массив $routeMiddleware:

protected $routeMiddleware = [
    // ...
    'admin' => \App\Http\Middleware\AdminMiddleware::class,
];

Шаг 4. Примените промежуточное программное обеспечение к маршрутам
В файле маршрутов (web.php) используйте промежуточное программное обеспечение adminдля защиты маршрутов администратора:

Route::group(['middleware' => 'admin'], function () {
    // Admin routes here
});

Метод 2: отдельные контроллеры и маршруты
Другой подход заключается в создании отдельных контроллеров и маршрутов для функций администратора и пользователя. Вот пример:

Шаг 1. Создайте контроллеры
Создайте UserControllerи AdminControllerс помощью команды artisan: php artisan make:controller UserControllerи php artisan make:controller AdminController.

Шаг 2. Определите маршруты
В файле маршрутов (web.php) определите отдельные маршруты для функций администратора и пользователя:

// User Routes
Route::group(['prefix' => 'user', 'namespace' => 'App\Http\Controllers'], function () {
    // User routes here
});
// Admin Routes
Route::group(['prefix' => 'admin', 'namespace' => 'App\Http\Controllers'], function () {
    // Admin routes here
});

Шаг 3. Реализация контроллеров
В соответствующих контроллерах определите методы и логику для функций пользователя и администратора:

// UserController.php
class UserController extends Controller
{
    // User methods and logic here
}
// AdminController.php
class AdminController extends Controller
{
    // Admin methods and logic here
}

В этой статье мы рассмотрели два метода разделения входа администратора и пользователя в Laravel. Первый метод включал использование управления доступом на основе ролей (RBAC) с промежуточным программным обеспечением, а второй метод был сосредоточен на создании отдельных контроллеров и маршрутов для функций администратора и пользователя. Выберите подход, который лучше всего соответствует требованиям и структуре вашего приложения.

Реализация этих методов поможет вам четко разделить вход администратора и пользователя, обеспечив безопасную и организованную систему управления пользователями в вашем приложении Laravel.