Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
11 / 11 |
CRAP | |
100.00% |
71 / 71 |
AclUser\Controller\ManageUsersController | |
100.00% |
1 / 1 |
|
100.00% |
11 / 11 |
15 | |
100.00% |
71 / 71 |
onDispatch | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
__construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
listUsersAction | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
manageUserRolesAction | |
100.00% |
1 / 1 |
2 | |
100.00% |
9 / 9 |
|||
ajaxGetPhotoUploadFormAction | |
100.00% |
1 / 1 |
1 | |
100.00% |
6 / 6 |
|||
ajaxReceiveUserPhotoFileAction | |
100.00% |
1 / 1 |
1 | |
100.00% |
9 / 9 |
|||
editProfileAction | |
100.00% |
1 / 1 |
2 | |
100.00% |
7 / 7 |
|||
ajaxUpdateUserRoleMembershipAction | |
100.00% |
1 / 1 |
1 | |
100.00% |
6 / 6 |
|||
ajaxToggleSuspensionUserByIdAction | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
ajaxDeleteUserByIdAction | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
ajaxGetBasicProfileFormAction | |
100.00% |
1 / 1 |
3 | |
100.00% |
18 / 18 |
<?php | |
/** | |
* Class ManageUsersController | |
* | |
* @package AclUser\Controller | |
* @author Nigel Hurnell | |
* @version v.1.0.0 | |
* @license BSD | |
* @copyright Copyright (c) 2017, Nigel Hurnell | |
*/ | |
namespace AclUser\Controller; | |
use Zend\Mvc\Controller\AbstractActionController; | |
use Zend\View\Model\ViewModel; | |
use Zend\View\Model\JsonModel; | |
use AclUser\Service\ManageUsersManager; | |
use AclUser\Form\RotateAndResizeImageForm; | |
use AclUser\Form\BasicProfileForm; | |
use Zend\Mvc\MvcEvent; | |
/** | |
* This controller is responsible for user management (adding, editing, | |
* viewing users and changing user's password). | |
* | |
* @package AclUser\Controller | |
* @author Nigel Hurnell | |
* @version v.1.0.0 | |
* @license BSD | |
* @copyright Copyright (c) 2017, Nigel Hurnell | |
*/ | |
class ManageUsersController extends AbstractActionController | |
{ | |
/** | |
* Instance that renders views | |
* | |
* @var Zend\View\Renderer\PhpRenderer | |
*/ | |
private $viewRenderer; | |
/** | |
* ManageUsersManager Service handles logic for this controller | |
* | |
* @var ManageUsersManager | |
*/ | |
protected $manageUsersManager; | |
/** | |
* Intercept on dispatch event to get view renderer | |
* @param MvcEvent $e | |
*/ | |
public function onDispatch(MvcEvent $e) | |
{ | |
$this->viewRenderer = $e->getApplication()->getServiceManager()->get('ViewRenderer'); | |
parent::onDispatch($e); | |
} | |
/** | |
* Instantiate controller class with injected resources | |
* | |
* @param ManageUsersManager $userManager | |
*/ | |
public function __construct(ManageUsersManager $userManager) | |
{ | |
$this->manageUsersManager = $userManager; | |
} | |
/** | |
* Get list of all registered users | |
* | |
* @return ViewModel | |
*/ | |
public function listUsersAction() | |
{ | |
$users = $this->manageUsersManager->getAllUsers(); | |
return new ViewModel([ | |
'users' => $users | |
]); | |
} | |
/** | |
* Manage particular user's roles | |
* | |
* @return ViewModel | |
*/ | |
public function manageUserRolesAction() | |
{ | |
$id = (int) $this->params()->fromRoute('id', 0); | |
$user = $this->manageUsersManager->findUserById($id); | |
if (!isset($user)) { | |
return $this->redirect()->toRoute('default', ['controller' => 'manage-users', 'action' => 'list-users']); | |
} | |
list($userRoles, $possibleRoles) = $this->manageUsersManager->getRolesByUser($user); | |
return new ViewModel(array( | |
'user' => $user, | |
'userRoles' => $userRoles, | |
'possibleRoles' => $possibleRoles | |
)); | |
} | |
/** | |
* Send photo upload form in view script as JSON | |
* | |
* @return JsonModel | |
*/ | |
public function ajaxGetPhotoUploadFormAction() | |
{ | |
$postFormUrl = $this->url()->fromRoute('manage-users', | |
['action' => 'ajax-receive-user-photo-file', 'id' => $this->params()->fromRoute('id', 0)]); | |
$viewModel = new ViewModel(['url' => $postFormUrl]); | |
$viewModel->setTerminal(true); | |
$viewModel->setTemplate('acl-user/user/ajax-get-photo-upload-form'); | |
return new JsonModel(['view' => $this->viewRenderer->render($viewModel)]); | |
} | |
/** | |
* Ajax action to which user's photo file object is posted | |
* | |
* @return JsonModel | |
*/ | |
public function ajaxReceiveUserPhotoFileAction() | |
{ | |
$form = new RotateAndResizeImageForm('image-rotate-and-resize-form'); | |
$result = $this->manageUsersManager->validatePhotoUploadForm( | |
$this->getRequest()->isPost(), | |
$form, | |
$this->params(), | |
$this->params()->fromRoute('id') | |
); | |
return new JsonModel([ | |
'success' => $result['success'], | |
'errors' => $this->manageUsersManager->getTranslatedErrorMesssages($this->translateContollerPlugin(), $result['errors']) | |
]); | |
} | |
/** | |
* Go to edit user's profile page | |
* | |
* @return ViewModel | |
*/ | |
public function editProfileAction() | |
{ | |
$id = (int) $this->params()->fromRoute('id', 0); | |
$user = $this->manageUsersManager->findUserById($id); | |
if (!isset($user)) { | |
return $this->redirect()->toRoute('default', ['controller' => 'manage-users', 'action' => 'list-users']); | |
} | |
return new ViewModel([ | |
'user' => $user, | |
'controller' => 'manage-users' | |
]); | |
} | |
/** | |
* Add or remove role from user (ajax) | |
* | |
* @return JsonModel | |
*/ | |
public function ajaxUpdateUserRoleMembershipAction() | |
{ | |
$userId = (int) $this->params()->fromPost('user_id', 0); | |
$roleId = (int) $this->params()->fromPost('role_id', 0); | |
$type = $this->params()->fromPost('type', 'none'); | |
$this->manageUsersManager->updateUserRoleMembership($type, $userId, $roleId); | |
return new JsonModel(array( | |
'return' => 'nothing needed' | |
)); | |
} | |
/** | |
* Toggle whether user is active or suspended | |
* | |
* @return JsonModel | |
*/ | |
public function ajaxToggleSuspensionUserByIdAction() | |
{ | |
$id = (int) $this->params()->fromRoute('id', 0); | |
$success = $this->manageUsersManager->toggleSuspensionUserById($id); | |
return new JsonModel(array( | |
'success' => $success | |
)); | |
} | |
/** | |
* Delete registered user | |
* | |
* @return JsonModel | |
*/ | |
public function ajaxDeleteUserByIdAction() | |
{ | |
$id = (int) $this->params()->fromRoute('id', 0); | |
$success = $this->manageUsersManager->deleteUserById($id); | |
return new JsonModel(array( | |
'success' => $success | |
)); | |
} | |
/** | |
* Get profile form page | |
* | |
* @return JsonModel | |
*/ | |
public function ajaxGetBasicProfileFormAction() | |
{ | |
$id = (int) $this->params()->fromRoute('id', 0); | |
$form = new BasicProfileForm(); | |
if (!$this->manageUsersManager->prepopulateUserProfile($form, $id)) { | |
return $this->redirect()->toRoute('default', ['controller' => 'manage-users', 'action' => 'list-users']); | |
} | |
$success = false; | |
if ($this->getRequest()->isPost()) { | |
$success = $this->manageUsersManager->validateBasicProfileForm( | |
$form, | |
$this->params()->fromPost(), | |
$id | |
); | |
} | |
$formAction = $this->url()->fromRoute('manage-users', | |
['action' => 'ajax-get-basic-profile-form', 'id' => $id]); | |
$viewModel = new ViewModel(['form' => $form, 'action' => $formAction]); | |
$viewModel->setTerminal(true); | |
$viewModel->setTemplate('acl-user/user/ajax-get-basic-profile-form'); | |
return new JsonModel([ | |
'view' => $this->viewRenderer->render($viewModel), | |
'success' => $success | |
]); | |
} | |
} |