middleware(['auth', 'isAdmin']);//isAdmin middleware lets only user with a //specific permission permission to access these resources // Model $this->modelClass = Role::class; $this->modelType = 'rolle'; $this->modelData = [ 'name' => [ 'type' => 'inputText', 'label' => __('models.name'), 'placeholder' => __('models.role'), 'validation' => [ 'rules' => 'required|min:3', ] ], 'permissions' => [ 'type' => 'checkboxSelection', 'models' => 'permissions', 'label' => __('models.permissions'), 'foreign'=> [ 'class' => Permission::class, 'model' => 'permissions', 'column' => 'name', 'order' => [ 'column' => 'name', 'direction' => 'ASC' ], ], ] ]; // URL options $this->url = 'role'; $this->route = 'rolle'; $this->adminIndexOptions = [ 'orderBy' => 'name', 'paginate' => 10, 'listdata' => [ 'name' => [], 'permissions' => [], 'updated' => [ 'label' => __('admin.last modified') ] ] ]; parent::__construct(); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $model = Role::findOrFail($id);//Get role with the given id if(isset($request['restore'])) { $model->restore(); $this->addMessageSuccess( __("messages.restored"), __("messages.:model successfully restored", ['model' => __('models.'.$this->url)]) ); return $this->createJSONResponse(); } else { $validator = Validator::make(Input::all(), $this->getValidationRules('UPDATE')); if($validator->fails()) { $model = $this->modelFill($model, $request); $this->addMessageError( __("messages.form error"), __("messages.please fill the form correct") ); return $this->createJSONResponse( $this->renderEditView($model, ['errors' => $validator->getMessageBag(), 'wizard' => false]) ); } $permissions = $request['permissions']; $model = $this->modelFill($model, $request); $model->save(); $p_all = Permission::all();//Get all permission foreach($p_all as $p) { $model->revokePermissionTo($p); //Remove all permission associated with role } if(isset($permissions)) { foreach($permissions as $permission) { $p = Permission::where('id', '=', $permission)->firstOrFail(); //Get corresponding form //permission in db $model->givePermissionTo($p); //Assign permission to role } } $this->addMessageSuccess( __("messages.saved"), __("messages.:model successfully edited", ['model' => __('models.'.$this->url)]), true ); return $this->createJSONResponse( $this->renderEditView($model, ['errors' => $validator->getMessageBag(), 'wizard' => false]) ); } } }