/** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { $user = Auth::user(); $group_id = $this->route('group'); // Есть ли права на запись // является ли пользователь админом // и админ ли он этой группы return $user->is_admin && GroupAdmin::where('admin_id', $user->id)->where('group_id', $group_id)->exists(); }
/** * Run the database seeds. * * @return void */ public function run() { User::truncate(); UserGroup::truncate(); GroupAdmin::truncate(); User::create(['email' => '*****@*****.**', 'nic' => 'Grate Kombinator', 'name' => 'Остап', 'surname' => 'Бендер', 'birth_date' => '1987-09-02 14:10:00', 'password' => 'secret', 'is_admin' => true]); UserGroup::create(['user_id' => 1, 'group_id' => 1]); UserGroup::create(['user_id' => 1, 'group_id' => 2]); UserGroup::create(['user_id' => 1, 'group_id' => 3]); GroupAdmin::create(['admin_id' => 1, 'group_id' => 1]); GroupAdmin::create(['admin_id' => 1, 'group_id' => 2]); }
/** * Display a listing of the resource. * * * GET / * @return \Illuminate\Http\Response */ public function index() { // Показываем списко групп к которым относится пользователь return view('group.index', ['user' => $this->user, 'groups' => User::find($this->user->id)->groups, 'admin' => GroupAdmin::admin($this->user->id)]); }