Laravel admin_crud_pkg

config first commit 11 hours ago
resources first commit 11 hours ago
routes first commit 11 hours ago
src first commit 11 hours ago
tests first commit 11 hours ago
.gitignore first commit 11 hours ago
README.md first commit 11 hours ago
composer.json first commit 11 hours ago
phpunit.xml first commit 11 hours ago
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.')。

セキュリティ上の注意

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