Авторизация может быть сложной. Существуют тысячи сообщений о том, как выполнять аутентификацию, но на самом деле проверка того, кем является кто-то, и управление разрешениями пользователей может быть целой банкой червей. К счастью, в Laravel есть системы, которые упрощают реализацию многоуровневой системы входа.
Прежде чем мы начнем, я хотел бы поблагодарить Ника Базиля и его отличные блоги на эту тему. Чтобы добавить аутентификацию в приложение Laravel 5, вам нужна всего одна команда:
$ php artisan make:auth
Вот и все. Если вы новичок в Laravel, добро пожаловать. Для разработчиков Laravel эта функция существует уже давно. Теперь у нас есть система авторизации с формами входа и всем остальным. Все это работает, но для целей этой публикации нас интересует авторизация.
Исходный код этой статьи доступен на github.
Простое решение для создания страницы администратора Laravel с использованием специального промежуточного программного обеспечения
Сейчас я использую Laravel 5.5, последнюю версию. Единственная особенность Laravel 5.5 - это помощник @guest
в директивах внешнего интерфейса Blade. В разделе HTML приложения эти помощники позволяют нам легко проверить, вошел ли пользователь в систему или нет:
@auth
// The user is authenticated...
@endauth
@guest
// The user is not authenticated...
@endguest
Если вы не используете Laravel 5.5, есть другие обходные пути, но вы также можете обновить его до последней версии, чтобы получить новые функции!
🔒 Ладно, собственно, сейчас строим систему
Есть много способов построить систему авторизации. Существуют предварительно созданные пакеты, которые позволяют управлять ролями и разрешениями. Я уверен, что они великолепны, так как их поддерживает Спати, который делает все пакеты Laravel с бомбой. Однако для этого я не хотел приносить тяжелую упаковку и заставлять ее работать. Все, что я хотел для этого приложения Laravel, - это иметь небольшое тихое место, в которое могу войти только я, как администратор. Все остальные могут войти в систему и увидеть свою панель управления или профиль или что-то еще, но только я могу войти в систему и увидеть страницу администратора.
Мы достигаем этого, добавляя столбец типа в таблицу пользователей и проверяя, есть ли у пользователя этот тип, с помощью специального промежуточного программного обеспечения. Звучит модно, но это довольно просто!
- Добавьте нужные типы в модель User и метод проверки, является ли пользователь администратором.
/* app/User.php */
const ADMIN_TYPE = 'admin';
const DEFAULT_TYPE = 'default';
public function isAdmin() {
return $this->type === self::ADMIN_TYPE;
}
2. Добавьте столбец типа в миграцию, в которой была создана ваша таблица пользователей.
/* database/migrations/2014_10_12_000000_create_users_table.php */ $table->string('type')->default('default');
3. Добавьте значение типа в метод create в контроллере регистров.
/* app/Http/Controllers/Auth/RegisterController.php */ protected function create(array $data) { return User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => bcrypt($data['password']), 'type' => User::DEFAULT_TYPE, ]); }
4. Создайте собственный файл промежуточного программного обеспечения, чтобы проверить, является ли пользователь администратором. Создайте этот файл с помощью php artisan make:middleware IsAdmin
5. Зарегистрируйте только что созданное промежуточное ПО.
/* app/Http/Kernel.php */ 'is_admin' => \App\Http\Middleware\IsAdmin::class,
6. Добавьте несколько маршрутов, которые вызывают промежуточное ПО.
/* routes/web.php */ Route::view('/', 'welcome'); Auth::routes(); Route::get('/home', 'HomeController@index') ->name('home'); Route::get('/admin', 'AdminController@admin') ->middleware('is_admin') ->name('admin');
7. Создайте контроллер администратора с php artisan make:controller AdminController
. Этот контроллер возвращает панель управления для любого вида, который вы хотите, чтобы ваш администратор видел.
🎉 Вот и все!
Теперь, если вы зайдете на страницу / admin и не вошли в систему или не вошли в систему как администратор, вы не сможете получить доступ к странице. Чтобы создать пользователя-администратора, вы можете использовать команду tinker artisan:
$ php artisan tinker >>> use App\User; >>>User::where('email', '[email protected]')->update(['type' => 'admin']);
Затем, когда вы войдете в систему как этот пользователь, вы сможете увидеть страницу администратора! Полная кодовая база ниже. Вы также можете ознакомиться с этими связанными статьями о создании списка задач и шаблоне проектирования репозитория.
- Создайте список задач с помощью Laravel 5.4 и Vue 2
- Используйте шаблон проектирования репозитория в приложении Laravel
- Код на GitHub: connor11528 / laravel-vue-tasks
Спасибо за прочтение! Если вам понравилась эта статья, похлопайте по ней или поделитесь ею в социальных сетях.
🚀 Если вы кандидат на рынке труда или стартап, желающий нанять в Bay Area, не стесняйтесь создать профиль на Employbl 🤝