middleware(['auth' => 'userPermissions'])->except('user_switch_start', 'user_switch_stop'); // Model $this->modelClass = User::class; $this->modelType = StringHelper::toURL(__('models.user'));; $this->modelData = [ 'name' => [ 'type' => 'inputText', 'label' => __('models.name'), 'placeholder' => __('models.name'), 'validation' => [ 'rules' => 'required|between:3,50', ] ], 'email' => [ 'type' => 'inputEmail', 'label' => __('models.email'), 'placeholder' => __('models.email address'), 'validation' => [ 'rules' => 'required|email', ] ], 'password' => [ 'type' => 'inputPassword', 'label' => __('models.password'), 'labelRepeat' => __('models.password repeat'), 'placeholder' => __('models.password'), 'validation' => [ 'rules' => 'required|min:6|confirmed', ] ], 'active' => [ 'type' => 'inputCheckbox', 'label' => __('models.account active'), ], 'departments' => [ 'type' => 'checkboxSelection', 'name' => 'departments', 'label' => __('models.departments'), 'foreign' => [ 'class' => Tag::class, 'model' => 'tags', 'column' => 'name', 'order' => [ 'column' => 'name', 'direction' => 'ASC' ], 'conditions' => [ [ 'column' => 'type', 'value' => 'abteilung', ], ], ], ], 'instances' => [ 'type' => 'checkboxSelection', 'name' => 'instances', 'label' => __('models.instances'), 'foreign' => [ 'class' => Tag::class, 'model' => 'tags', 'column' => 'name', 'order' => [ 'column' => 'name', 'direction' => 'ASC' ], 'conditions' => [ [ 'column' => 'type', 'value' => 'instanz', ], ], ], ], 'roles' => [ 'type' => 'checkboxSelection', 'models' => 'roles', 'label' => __('models.roles'), 'foreign'=> [ 'class' => Role::class, 'model' => 'roles', 'column' => 'name', 'order' => [ 'column' => 'name', 'direction' => 'ASC' ], ], ], 'notifications' => [ 'type' => 'checkboxSelection', 'name' => 'notifications', 'label' => __('admin.notifiactions'), 'foreign' => [ 'class' => Tag::class, 'model' => 'tags', 'column' => 'name', 'order' => [ 'column' => 'name', 'direction' => 'ASC' ], 'conditions' => [ [ 'column' => 'type', 'value' => 'benachrichtigung', ], ], ], ], 'membertypes1' => [ 'type' => 'checkboxSelection', 'name' => 'membertypes1', 'label' => __('models.membertypes'), 'foreign' => [ 'class' => Tag::class, 'model' => 'tags', 'column' => 'name', 'order' => [ 'column' => 'order', 'direction' => 'ASC' ], 'conditions' => [ [ 'column' => 'type', 'value' => 'mitgliedsart-abteilung', ], ], ], ], 'membertypes2' => [ 'type' => 'checkboxSelection', 'name' => 'membertypes2', 'label' => __('models.membertype2s'), 'foreign' => [ 'class' => Tag::class, 'model' => 'tags', 'column' => 'name', 'order' => [ 'column' => 'order', 'direction' => 'ASC' ], 'conditions' => [ [ 'column' => 'type', 'value' => 'mitgliedsart-gesamtwehr', ], ], ], ], ]; // URL options $this->url = 'user'; $this->route = StringHelper::toURL(__('models.user')); $this->adminIndexOptions = [ 'orderBy' => 'name', 'paginate' => 10, 'listdata' => [ 'name' => [ 'label' => 'Name' ], 'active' => [], 'departments' => [], 'instances' => [], 'last_login' => [ 'label' => __('admin.last login'), 'helper' => 'Date::diffInDaysAndTimeString' ] ] ]; $this->updateOptions = [ 'view' => [ 'tab1' => [ 'label' => __('admin.general'), 'elements' => [ 'name', 'email', 'password', ] ], 'tab2' => [ 'label' => __('admin.membership'), 'permissions' => [ 'Benutzer Administrator', ], 'elements' => [ 'departments', 'instances' ] ], 'tab3' => [ 'label' => __('models.roles'), 'permissions' => [ 'Benutzer Administrator', ], 'elements' => [ 'roles' ] ], 'tab4' => [ 'label' => __('admin.functions'), 'permissions' => [ 'Benutzer Administrator', ], 'elements' => [ 'membertypes1', 'membertypes2' ] ], 'tab5' => [ 'label' => __('admin.notifications'), 'elements' => [ 'notifications' ] ], 'tab6' => [ 'label' => __('admin.account'), 'permissions' => [ 'Benutzer Administrator', ], 'elements' => [ 'active', ] ] ] ]; parent::__construct(); } protected function hook_after_renderEditView(&$model, View &$views) { $model->type = $this->modelType; } /** * 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 = User::withTrashed()->find($id); $password = $request['password']; $password_confirmation = $request['password_confirmation']; $validators = array( 'name' => 'required|between:3,50', 'email' => 'required|email', ); if(isset($password) || isset($password_confirmation)) { $validators['password'] = 'min:6|confirmed'; } 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(), $validators); if($validator->fails()) { $model->fill($request->all()); $this->addMessageError( __("messages.form error"), __("messages.please fill the form correct") ); return $this->createJSONResponse( $this->renderEditView($model, ['errors' => $validator->getMessageBag(), 'wizard' => false]) ); } if(method_exists($this, 'prepareRequest')) { $request = $this->prepareRequest($request); } if(isset($password) && isset($password_confirmation) && $password == $password_confirmation) { $input = $request->only('name', 'email', 'email', 'password', 'active'); } else { $input = $request->only('name', 'email', 'email', 'active'); } $model->update($input); $this->saveForeignData($model, $request); $roles = $request['roles']; $model->fill($input)->save(); if(isset($roles)) { $model->roles()->sync($roles); } else{ $model->roles()->detach(); } $this->addMessageSuccess( __("messages.saved"), __("messages.:model successfully edited", ['model' => __('models.'.$this->url)]), true ); return $this->createJSONResponse(); } } public function user_switch_start($new_user) { // if(getenv('APP_ENV') != 'production') { $new_user = User::find( $new_user ); Session::put( 'orig_user', Auth::id() ); Auth::login( $new_user ); return redirect()->back(); } } public function user_switch_stop() { // if(getenv('APP_ENV') != 'production') { $id = Session::pull('orig_user'); $orig_user = User::find($id); Auth::login($orig_user); return redirect()->back(); } } }