Права на редактирование своего магазина
Использую laravel-admin при добавлении магазина хочу чтобы каждый редактировал свой магазин.
При отображении сделал так чтобы отображались только их магазины но когда к примеру user12 переходит по ссылке на редактирование поста gameshop/main/stores/8/edit который был создал admin пользователь user12 имеет доступ на редактирование удалени...
Как сделать чтобы каждый пользователь мог редактировать только свой магазин ? ShopsController: <?php
namespace App\Admin\Controllers;
use App\Models\Shops;
use App\Models\Games;
use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Form;
use Encore\Admin\Facades\Admin;
use Encore\Admin\Grid;
use Encore\Admin\Show;
use App\Models\User;
use Request;
use DB;
class ShopsController extends AdminController
{
/**
* Title for current resource.
*
* @var string
*/
protected $title = 'Магазины';
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
$grid = new Grid(new Shops());
if(!Admin::user()->isAdministrator())
$grid->model()->where('user_id', Admin::user()->id);
$grid->column('id', __('ID'));
if(Admin::user()->isAdministrator())
{
$grid->column('user_id', trans('admin.user_name'))->display(function ($userid) {
return Admin::user()->find($userid)->username;
})->label();
}
$grid->column('game', trans('admin.game'))->display(function ($gameid) {
return Games::find($gameid)->name;
})->label();
$grid->column('shop_name', trans('admin.shop_name'))->editable();
$grid->column('created_at', __('Created at'));
$grid->disableExport();
$grid->actions(function (Grid\Displayers\Actions $actions) {
$actions->disableView();
});
return $grid;
}
/**
* Make a show builder.
*
* @param mixed $id
* @return Show
*/
protected function detail($id)
{
$show = new Show(Shops::findOrFail($id));
$show->field('id', __('ID'));
$show->field('game', trans('admin.game'))->as(function ($gameid) {
return Games::find($gameid)->name;
})->label();
$show->field('shop_name', trans('admin.shop_name'));
$show->field('created_at', __('Created at'));
return $show;
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
$form = new Form(new Shops());
$usershops = DB::table('shops')->where('user_id',Admin::user()->id)->pluck('id')->toArray();
$form->hidden('user_id')->default(Admin::user()->id);
$form->select('game', trans('admin.game'))->options(function () {
$games = Games::where('active', 1)->get();
$games_all = [];
foreach($games as $game)
{
$games_all += [$game->id => $game->name];
}
return $games_all;
});
$form->text('shop_name', trans('admin.shop_name'));
return $form;
}
}
routers.php
$router->resource('stores', ShopsController::class);
Ответы (2 шт):
Проблема решается таким образом При каждой регистрации пользователя выдаем ему отдельную пермиссию(доступ) http_path Добавляя его в admin_premissions Далее при каждом создании магазина выдаем ему доступ только к своим магазинам /store/3 /store/4
А также выдаем роль котором стандартные пермиссии /store/create /main/ ...


