Example #1
0
 /**
  * Show a user
  */
 public function showAction()
 {
     $this->assertPermission('config/authentication/users/show');
     $userName = $this->params->getRequired('user');
     $backend = $this->getUserBackend($this->params->getRequired('backend'));
     $user = $backend->select(array('user_name', 'is_active', 'created_at', 'last_modified'))->where('user_name', $userName)->fetchRow();
     if ($user === false) {
         $this->httpNotFound(sprintf($this->translate('User "%s" not found'), $userName));
     }
     $memberships = $this->loadMemberships(new User($userName))->select();
     $filterEditor = Widget::create('filterEditor')->setQuery($memberships)->setSearchColumns(array('group_name'))->preserveParams('limit', 'sort', 'dir', 'view', 'backend', 'user')->ignoreParams('page')->handleRequest($this->getRequest());
     $memberships->applyFilter($filterEditor->getFilter());
     $this->setupFilterControl($filterEditor);
     $this->setupPaginationControl($memberships);
     $this->setupLimitControl();
     $this->setupSortControl(array('group_name' => $this->translate('Group')), $memberships);
     if ($this->hasPermission('config/authentication/groups/edit')) {
         $extensibleBackends = $this->loadUserGroupBackends('Icinga\\Data\\Extensible');
         $this->view->showCreateMembershipLink = !empty($extensibleBackends);
     } else {
         $this->view->showCreateMembershipLink = false;
     }
     $this->view->user = $user;
     $this->view->backend = $backend;
     $this->view->memberships = $memberships;
     $this->createShowTabs($backend->getName(), $userName)->activate('user/show');
     if ($this->hasPermission('config/authentication/groups/edit')) {
         $removeForm = new Form();
         $removeForm->setUidDisabled();
         $removeForm->addElement('hidden', 'user_name', array('isArray' => true, 'value' => $userName, 'decorators' => array('ViewHelper')));
         $removeForm->addElement('hidden', 'redirect', array('value' => Url::fromPath('user/show', array('backend' => $backend->getName(), 'user' => $userName)), 'decorators' => array('ViewHelper')));
         $removeForm->addElement('button', 'btn_submit', array('escape' => false, 'type' => 'submit', 'class' => 'link-like', 'value' => 'btn_submit', 'decorators' => array('ViewHelper'), 'label' => $this->view->icon('trash'), 'title' => $this->translate('Cancel this membership')));
         $this->view->removeForm = $removeForm;
     }
 }
Example #2
0
 /**
  * Remove a group member
  */
 public function removememberAction()
 {
     $this->assertPermission('config/authentication/groups/edit');
     $this->assertHttpMethod('POST');
     $groupName = $this->params->getRequired('group');
     $backend = $this->getUserGroupBackend($this->params->getRequired('backend'), 'Icinga\\Data\\Reducible');
     $form = new Form(array('onSuccess' => function ($form) use($groupName, $backend) {
         foreach ($form->getValue('user_name') as $userName) {
             try {
                 $backend->delete('group_membership', Filter::matchAll(Filter::where('group_name', $groupName), Filter::where('user_name', $userName)));
                 Notification::success(sprintf(t('User "%s" has been removed from group "%s"'), $userName, $groupName));
             } catch (NotFoundError $e) {
                 throw $e;
             } catch (Exception $e) {
                 Notification::error($e->getMessage());
             }
         }
         $redirect = $form->getValue('redirect');
         if (!empty($redirect)) {
             $form->setRedirectUrl(htmlspecialchars_decode($redirect));
         }
         return true;
     }));
     $form->setUidDisabled();
     $form->setSubmitLabel('btn_submit');
     // Required to ensure that isSubmitted() is called
     $form->addElement('hidden', 'user_name', array('required' => true, 'isArray' => true));
     $form->addElement('hidden', 'redirect');
     try {
         $form->handleRequest();
     } catch (NotFoundError $_) {
         $this->httpNotFound(sprintf($this->translate('Group "%s" not found'), $groupName));
     }
 }
Example #3
0
 /**
  * @depends testWhetherACsrfCounterMeasureIsNotBeingAdded
  * @depends testWhetherAUniqueFormIdIsNotBeingAdded
  * @depends testWhetherNoSubmitButtonIsAddedWithoutASubmitLabelBeingSet
  */
 public function testWhetherAClosureCanBePassedAsOnSuccessCallback()
 {
     $request = new Request();
     $form = new Form(array('onSuccess' => function ($form) {
         $form->getRequest()->setParam('test', 'tset');
         return false;
     }));
     $form->setTokenDisabled();
     $form->setUidDisabled();
     $form->handleRequest($request);
     $this->assertEquals('tset', $request->getParam('test'), 'Form does not utilize the onSuccess callback set with form options on instantiation');
 }
 /**
  * Unshare a navigation item
  */
 public function unshareAction()
 {
     $this->assertPermission('config/application/navigation');
     $this->assertHttpMethod('POST');
     // TODO: I'd like these being form fields
     $itemType = $this->params->getRequired('type');
     $itemOwner = $this->params->getRequired('owner');
     $navigationConfigForm = new NavigationConfigForm();
     $navigationConfigForm->setUser($this->Auth()->getUser());
     $navigationConfigForm->setShareConfig(Config::navigation($itemType));
     $navigationConfigForm->setUserConfig(Config::navigation($itemType, $itemOwner));
     $form = new Form(array('onSuccess' => function ($form) use($navigationConfigForm) {
         $itemName = $form->getValue('name');
         try {
             $newConfig = $navigationConfigForm->unshare($itemName);
             if ($navigationConfigForm->save()) {
                 if ($newConfig->getSection($itemName)->type === 'menu-item') {
                     $form->getResponse()->setRerenderLayout();
                 }
                 Notification::success(sprintf(t('Navigation item "%s" has been unshared'), $form->getValue('name')));
             } else {
                 // TODO: It failed obviously to write one of the configs, so we're leaving the user in
                 //       a inconsistent state. Luckily, it's nothing lost but possibly duplicated...
                 Notification::error(sprintf(t('Failed to unshare navigation item "%s"'), $form->getValue('name')));
             }
         } catch (NotFoundError $e) {
             throw $e;
         } catch (Exception $e) {
             Notification::error($e->getMessage());
         }
         $redirect = $form->getValue('redirect');
         if (!empty($redirect)) {
             $form->setRedirectUrl(htmlspecialchars_decode($redirect));
         }
         return true;
     }));
     $form->setUidDisabled();
     $form->setSubmitLabel('btn_submit');
     // Required to ensure that isSubmitted() is called
     $form->addElement('hidden', 'name', array('required' => true));
     $form->addElement('hidden', 'redirect');
     try {
         $form->handleRequest();
     } catch (NotFoundError $_) {
         $this->httpNotFound(sprintf($this->translate('Navigation item "%s" not found'), $form->getValue('name')));
     }
 }
Example #5
0
 /**
  * Renders this widget and returns the HTML as a string
  *
  * @return  string
  */
 public function render()
 {
     $form = new Form();
     $form->setAttrib('class', 'inline');
     $form->setMethod('GET');
     $form->setUidDisabled();
     $form->setTokenDisabled();
     $form->setName($this->name);
     $form->addElement('select', $this->parameter, array('label' => $this->label, 'multiOptions' => $this->values, 'autosubmit' => true));
     if ($this->request) {
         $form->populate($this->request->getParams());
     }
     return $form;
 }