예제 #1
0
 /**
  * Invoke put action
  *
  * @param int $id
  *
  * @return RedirectResponse
  */
 public function __invoke($id)
 {
     $formValues = $this->getRequest()->getParsedBody()['form'];
     $form = Form::create()->getForm();
     $this->getResponder()->setData('form', $form);
     $form->handleRequest(new Request($_GET, $_POST, [], $_COOKIE, $_FILES, $_SERVER));
     if ($form->isSubmitted() && $form->isValid()) {
         /** @var UsersTable $usersTable */
         $usersTable = TableRegistry::get('Users.Users');
         /** @var User $user */
         $user = $usersTable->get($id, ['contain' => 'UserDetails']);
         $detailsKey = ['first_name', 'middle_name', 'last_name'];
         $tmpDetails = [];
         $currentUserDetails = $user->getUserDetails(null, null, true);
         foreach ($detailsKey as $key) {
             if (array_key_exists($key, $currentUserDetails)) {
                 $tmpDetails[] = ['id' => $currentUserDetails[$key]->get('id'), 'user_id' => $id, 'key' => $key, 'value' => strip_tags($formValues[$key])];
             } else {
                 $tmpDetails[] = ['user_id' => $id, 'key' => $key, 'value' => strip_tags($formValues[$key])];
             }
         }
         $data = ['username' => $formValues['username'], 'email' => $formValues['email'], 'status' => $formValues['status'], 'details' => $tmpDetails, 'roles' => ['_ids' => $formValues['roles']]];
         if (!empty($formValues['password'])) {
             $data['password'] = (new DefaultPassword())->hash($formValues['password']);
         }
         $usersTable->patchEntity($user, $data, ['associated' => ['UserDetails', 'Roles']]);
         $usersTable->save($user);
         return new RedirectResponse($this->getRouter()->generateUrl(['users']));
     }
 }
예제 #2
0
 /**
  * Invoke Action
  *
  * @param int $id User id
  *
  * @return void
  * @throws \Rad\Core\Exception\BaseException
  */
 public function __invoke($id = null)
 {
     if (null !== $id) {
         $this->getResponder()->setData('form', Form::create()->getForm($this->getUsers($id)));
     } else {
         $this->getResponder()->setData('table', $this->getDataTable());
     }
 }
예제 #3
0
 /**
  * {@inheritdoc}
  */
 public function __invoke()
 {
     /** @var RolesTable $rolesTable */
     $rolesTable = TableRegistry::get('Users.Roles');
     $formValues = $this->getRequest()->getParsedBody()['form'];
     $form = Form::create()->getRoleForm();
     $this->getResponder()->setData('form', $form);
     $form->handleRequest(new Request($_GET, $_POST, [], $_COOKIE, $_FILES, $_SERVER));
     if ($form->isSubmitted() && $form->isValid()) {
         /** @var Role $role */
         $role = $rolesTable->newEntity(['name' => $formValues['name'], 'title' => $formValues['title'], 'resources' => ['_ids' => $formValues['resources']], 'description' => $formValues['description']], ['associated' => 'Resources']);
         $rolesTable->save($role);
         return new RedirectResponse($this->getRouter()->generateUrl(['users', 'roles']));
     }
 }
예제 #4
0
 /**
  * {@inheritdoc}
  */
 public function __invoke()
 {
     /** @var UsersTable $usersTable */
     $usersTable = TableRegistry::get('Users.Users');
     $formValues = $this->getRequest()->getParsedBody()['form'];
     $form = Form::create()->getForm();
     $this->getResponder()->setData('form', $form);
     $form->handleRequest(new Request($_GET, $_POST, [], $_COOKIE, $_FILES, $_SERVER));
     if ($form->isSubmitted() && $form->isValid()) {
         $roles = [];
         foreach ($formValues['roles'] as $role) {
             $roles[] = new Role(['id' => $role]);
         }
         /** @var User $user */
         $user = $usersTable->newEntity();
         $user->set('username', $formValues['username'])->set('email', $formValues['email'])->set('status', $formValues['status'])->set('password', (new DefaultPassword())->hash($formValues['password']))->set('roles', $roles)->set('details', [new UserDetail(['key' => 'first_name', 'value' => strip_tags($formValues['first_name'])]), new UserDetail(['key' => 'middle_name', 'value' => strip_tags($formValues['middle_name'])]), new UserDetail(['key' => 'last_name', 'value' => strip_tags($formValues['last_name'])])]);
         $usersTable->save($user);
         return new RedirectResponse($this->getRouter()->generateUrl(['users']));
     }
 }
예제 #5
0
 /**
  * Get method
  *
  * @throws \Rad\Core\Exception\BaseException
  */
 public function getMethod()
 {
     $this->getResponder()->setData('form', Form::create()->getForm());
 }