Laravel Admin セットアップ方法

こんにちは!
システム開発部の松木です。
今回の記事では Laravel Admin のセットアップについてお話します!
Laravel Admin とは?
Laravel Admin は、Laravelフレームワークを使用して開発された管理者向けのツールです。
アプリケーションの管理ダッシュボードやコントロールパネルを簡単に作成することが可能で、
Laravel Admin を使用し、様々なデータやリソースを管理することができます。
環境
Docker: 23.0.1
Laravel: 10.37.1
PHP: 8.2
MySQL: 8.0
Nginx: 1.23.3
セットアップ手順
ログイン画面表示
下記コマンドを実行し、Laravel Admin をインストールします。
composer require encore/laravel-admin
次に下記コマンドで、インストールを行った Laravel Admin のファイルを、Laravel のプロジェクトに追加します。
php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"
次に下記コマンドで、Laravel Admin の標準テーブルの作成を行います。
php artisan admin:install
上記のコマンドが正常に実行されると下記のように表示され、標準テーブルの作成が完了です。
root@d816ac03c504:/var/www/html# php artisan admin:install INFO Preparing database. Creating migration table .............................................................................................................. 126ms DONE INFO Running migrations. 2014_10_12_000000_create_users_table .................................................................................................. 133ms DONE 2014_10_12_100000_create_password_reset_tokens_table .................................................................................. 190ms DONE 2016_01_04_173148_create_admin_tables ................................................................................................. 976ms DONE 2019_08_19_000000_create_failed_jobs_table ............................................................................................ 101ms DONE 2019_12_14_000001_create_personal_access_tokens_table ................................................................................. 147ms DONE INFO Seeding database. Admin directory was created: /app/Admin HomeController file was created: /app/Admin/Controllers/HomeController.php AuthController file was created: /app/Admin/Controllers/AuthController.php ExampleController file was created: /app/Admin/Controllers/ExampleController.php Bootstrap file was created: /app/Admin/bootstrap.php Routes file was created: /app/Admin/routes.php
ここまで行うと、一度 Laravel-Admin のログイン画面にアクセスしてみましょう。
正常にアクセスできると下記のような画面が表示されます。

管理者ユーザー作成
ログイン画面の表示まで完了しましたが、肝心のログインユーザーの作成を行えていません。
次に行うのはログインを行う管理者ユーザーの作成です。
まずは適当な seeder の作成を行います。
今回では、UserSeeder という名前で作成を行う為、下記コマンドを実行します。
php artisan make:seeder UserSeeder
次に作成した seeder の中に記載する処理を、vender配下の seeder を利用するため、
/vendor/encore/laravel-admin/src/Auth/Database/AdminTablesSeeder.phpファイルを開きpublic function run(){}の中身をコピーしてください。
コピーした内容を UserSeeder の public function run(){}の中に置き換えてください
置き換えた内容が下記になります。
<?php
namespace Database\Seeders;
use Encore\Admin\Auth\Database\Administrator;
use Encore\Admin\Auth\Database\Menu;
use Encore\Admin\Auth\Database\Permission;
use Encore\Admin\Auth\Database\Role;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
class UserSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run()
{
// create a user.
Administrator::truncate();
Administrator::create([
'username' => 'admin',
'password' => Hash::make('admin'),
'name' => 'Administrator',
]);
// create a role.
Role::truncate();
Role::create([
'name' => 'Administrator',
'slug' => 'administrator',
]);
// add role to user.
Administrator::first()->roles()->save(Role::first());
//create a permission
Permission::truncate();
Permission::insert([
[
'name' => 'All permission',
'slug' => '*',
'http_method' => '',
'http_path' => '*',
],
[
'name' => 'Dashboard',
'slug' => 'dashboard',
'http_method' => 'GET',
'http_path' => '/',
],
[
'name' => 'Login',
'slug' => 'auth.login',
'http_method' => '',
'http_path' => "/auth/login\r\n/auth/logout",
],
[
'name' => 'User setting',
'slug' => 'auth.setting',
'http_method' => 'GET,PUT',
'http_path' => '/auth/setting',
],
[
'name' => 'Auth management',
'slug' => 'auth.management',
'http_method' => '',
'http_path' => "/auth/roles\r\n/auth/permissions\r\n/auth/menu\r\n/auth/logs",
],
]);
Role::first()->permissions()->save(Permission::first());
// add default menus.
Menu::truncate();
Menu::insert([
[
'parent_id' => 0,
'order' => 1,
'title' => 'Dashboard',
'icon' => 'fa-bar-chart',
'uri' => '/',
],
[
'parent_id' => 0,
'order' => 2,
'title' => 'Admin',
'icon' => 'fa-tasks',
'uri' => '',
],
[
'parent_id' => 2,
'order' => 3,
'title' => 'Users',
'icon' => 'fa-users',
'uri' => 'auth/users',
],
[
'parent_id' => 2,
'order' => 4,
'title' => 'Roles',
'icon' => 'fa-user',
'uri' => 'auth/roles',
],
[
'parent_id' => 2,
'order' => 5,
'title' => 'Permission',
'icon' => 'fa-ban',
'uri' => 'auth/permissions',
],
[
'parent_id' => 2,
'order' => 6,
'title' => 'Menu',
'icon' => 'fa-bars',
'uri' => 'auth/menu',
],
[
'parent_id' => 2,
'order' => 7,
'title' => 'Operation log',
'icon' => 'fa-history',
'uri' => 'auth/logs',
],
]);
// add role to menu.
Menu::find(2)->roles()->save(Role::first());
}
}
次に作成した UserSeeder を DatabaseSeeder の中に記載してください。
<?php
namespace Database\Seeders;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
$this->call([
UserSeeder::class,
]);
}
}
ここまで完了すれば、あとは seeder を回すだけです。
php artisan db:seed
seeder が回り切れば再度ログイン画面に行き、seeder で設定を行った Username と Password を入力します。
今回は Username と Password 共に admin という文字で登録しているので、実際に利用するときは変更をお願いします。
どちらも admin を入力し、ログインを行うと下記のような画面に遷移します。

正常にログインも行うことが可能となりました。
これで Laravel Admin のセットアップは完了となります。
まとめ
いかがでしたでしょうか。
Laravel Admin はセットアップが非常に簡単で、管理者パネルを迅速に構築できますし、
また、Laravel Admin でテーブルを作成すれば、テーブルを GUI で操作することも可能となりますので、
是非使用してみてください。
最後に
私が所属するシステム開発部のサービスサイト「SEKARAKU Lab(セカラク ラボ)」を開設しました。
ビヨンドは、サーバーの設計・構築から運用までをワンストップでお任せいただけますので、サーバーサイド開発でお困りの方はお気軽にお問い合わせください。
● SEKARAKU Lab:https://sekarakulab.beyondjapan.com
2