Newer
Older
admin_crud_pkg / README.md

istlab/admin-crud

Laravel アプリのデータベーステーブルをブラウザ上から参照・インライン編集するための管理用 CRUD パッケージです。 ReviewHub の AdminController の CRUD 機能 (admin.crud*) を切り出したもので、デフォルト設定では元の URI・ルート名をそのまま再現します。

機能

  • テーブル一覧と行数の表示 (GET /admin_crud)
  • テーブル内容の表示・カラム絞り込み (LIKE / 整数完全一致)
  • セルのクリック編集 (Ajax, POST /admin_crud)
  • tinyint カラムのトグルスイッチ
  • 行の追加 (Eloquent ファクトリ) / コピー (replicate) / 削除
  • チェックした行の一括コピー・一括削除
  • 全行削除 (truncate)
  • AUTO_INCREMENT 値の設定 (MySQL / SQLite)
  • 予約更新 (scheduled update) 連携 (オプション)

インストール

ローカルパスリポジトリとして読み込む場合:

// 宿主アプリ側 composer.json
"repositories": [
    {
        "type": "path",
        "url": "../CrudPkg",
        "options": { "symlink": true }
    }
],
composer require istlab/admin-crud:*
php artisan vendor:publish --tag=admin-crud-assets   # public/vendor/admin-crud に JS/CSS を配置 (必須)
php artisan vendor:publish --tag=admin-crud-config   # config/admin-crud.php を公開 (任意)

サービスプロバイダ (Istlab\AdminCrud\AdminCrudServiceProvider) はパッケージ自動検出で登録されます。

設定 (config/admin-crud.php)

キー デフォルト 説明
path admin_crud ルート URI のベース。/admin_crud, /admin_crudcopy, ... のようになります
route_name_prefix admin. ルート名プレフィックス (admin.crud 等)
middleware ['web', 'auth'] 全ルートに適用するミドルウェア
gate role_any 認可に使う Gate 名。null でチェック無効
roles admin 参照・コピー・削除等に必要なロール ($user->can($gate, $roles))
post_roles `admin\ manager\ ec\ pub` セル更新 (crudpost) に必要なロール
model_namespace App\Models Eloquent モデルの名前空間
layout_component admin-crud::layout ページレイアウトの Blade コンポーネント名
limit 100 1ページの最大表示行数
scheduled_update_create_route null 予約更新作成ページのルート名 (例: scheduled_update.create)
jquery_url CDN (jquery 3.7.1) ビューで読み込む jQuery の URL

ReviewHub で使う場合の設定例

// config/admin-crud.php
'layout_component' => 'app-layout',              // <x-app-layout> 内に描画
'jquery_url' => '/js/jquery.min.js',             // 既存の jQuery を利用
'scheduled_update_create_route' => 'scheduled_update.create',

app-layout を使う場合、レイアウトに @stack('localcss') と @stack('localjs') が必要です。

認可について

デフォルトでは role_any という Gate を $user->can('role_any', 'admin') の形で呼びます。 宿主アプリ側で次のような Gate を定義してください (ReviewHub では定義済みです):

Gate::define('role_any', function ($user, string $roles_str) {
    // $roles_str は 'admin|manager' のようなパイプ区切り
    ...
});

Gate を使わない場合は 'gate' => null にし、middleware で独自に保護してください。

旧実装からの移行 (ReviewHub)

  1. 上記の設定でパッケージをインストール
  2. routes/web.php の // begin CRUD 〜 // end CRUD のルート定義を削除
  3. AdminController の crud* メソッドと resources/views/admin/crud*.blade.php は不要になります (パッケージ側が同じ URI・ルート名を引き継ぐため、既存の route('admin.crud', ...) へのリンクはそのまま動きます)

既存アプリとの共存

旧ルートを残したままインストールする場合は、ルート名・URI が衝突しないよう path と route_name_prefix を変更してください (例: 'path' => 'crud', 'route_name_prefix' => 'crud.')。

セキュリティ上の注意

  • テーブル名は実在テーブルのホワイトリストで検証されます。
  • 更新対象カラム名もスキーマ情報で検証されます。
  • それでも本パッケージは任意テーブルを直接編集できる強力な管理機能です。必ず認証・認可を設定した上で、信頼できる管理者のみに公開してください。