* [ADD] Default permissions rewritten to make a more generic approach. Now it can manage multiple items/modules default values from the same view, so it's called Items Preset.

* [MOD] Code refactoring
This commit is contained in:
nuxsmin
2018-08-30 16:19:18 +02:00
parent 7ceb3afe56
commit 2fc71e87dc
52 changed files with 1447 additions and 933 deletions

View File

@@ -27,14 +27,12 @@ namespace SP\Modules\Web\Controllers;
use SP\Core\Acl\Acl;
use SP\Core\Events\Event;
use SP\DataModel\ItemSearchData;
use SP\Modules\Web\Controllers\Helpers\Grid\AccountDefaultPermissionGrid;
use SP\Modules\Web\Controllers\Helpers\Grid\AuthTokenGrid;
use SP\Modules\Web\Controllers\Helpers\Grid\PublicLinkGrid;
use SP\Modules\Web\Controllers\Helpers\Grid\UserGrid;
use SP\Modules\Web\Controllers\Helpers\Grid\UserGroupGrid;
use SP\Modules\Web\Controllers\Helpers\Grid\UserProfileGrid;
use SP\Modules\Web\Controllers\Helpers\TabsGridHelper;
use SP\Services\Account\AccountDefaultPermissionService;
use SP\Services\AuthToken\AuthTokenService;
use SP\Services\PublicLink\PublicLinkService;
use SP\Services\User\UserService;
@@ -91,10 +89,6 @@ final class AccessManagerController extends ControllerBase
$this->tabsGridHelper->addTab($this->getUsersProfileList());
}
if ($this->checkAccess(Acl::ACCOUNT_DEFAULT_PERMISSION)) {
$this->tabsGridHelper->addTab($this->getAccountDefaultPermissionList());
}
if ($this->checkAccess(Acl::AUTHTOKEN)) {
$this->tabsGridHelper->addTab($this->getApiTokensList());
}
@@ -181,20 +175,6 @@ final class AccessManagerController extends ControllerBase
->updatePager();
}
/**
* Returns API tokens data tab
*
* @return \SP\Html\DataGrid\DataGridTab
* @throws \SP\Core\Exceptions\ConstraintException
* @throws \SP\Core\Exceptions\QueryException
*/
protected function getAccountDefaultPermissionList()
{
return $this->dic->get(AccountDefaultPermissionGrid::class)
->getGrid($this->dic->get(AccountDefaultPermissionService::class)->search($this->itemSearchData))
->updatePager();
}
/**
* @return TabsGridHelper
*/

View File

@@ -39,12 +39,12 @@ use SP\Mvc\View\Components\SelectItemAdapter;
use SP\Repositories\NoSuchItemException;
use SP\Services\Account\AccountAcl;
use SP\Services\Account\AccountAclService;
use SP\Services\Account\AccountDefaultPermissionService;
use SP\Services\Account\AccountHistoryService;
use SP\Services\Account\AccountService;
use SP\Services\Category\CategoryService;
use SP\Services\Client\ClientService;
use SP\Services\Crypt\MasterPassService;
use SP\Services\ItemPreset\ItemPresetInterface;
use SP\Services\PublicLink\PublicLinkService;
use SP\Services\Tag\TagService;
use SP\Services\User\UpdatedMasterPassException;
@@ -77,9 +77,9 @@ final class AccountHelper extends HelperBase
*/
private $publicLinkService;
/**
* @var AccountDefaultPermissionService
* @var \SP\Services\ItemPreset\ItemPresetService
*/
private $accountDefaultPermissionService;
private $itemPresetService;
/**
* @var string
*/
@@ -306,6 +306,7 @@ final class AccountHelper extends HelperBase
* @throws \SP\Core\Exceptions\ConstraintException
* @throws \SP\Core\Exceptions\QueryException
* @throws \SP\Services\ServiceException
* @throws \SP\Core\Exceptions\NoSuchPropertyException
*/
public function setViewForBlank($actionId)
{
@@ -319,8 +320,8 @@ final class AccountHelper extends HelperBase
$this->accountAcl->setShowPermission($userData->getIsAdminApp() || $userData->getIsAdminAcc() || $userProfileData->isAccPermission());
$accountDefaultPermission = $this->accountDefaultPermissionService->getForCurrentUser();
$accountPermission = $accountDefaultPermission !== null ? $accountDefaultPermission->getAccountPermission() : new AccountPermission();
$accountPermission = $this->itemPresetService->getForCurrentUser(ItemPresetInterface::ITEM_TYPE_PERMISSION)
->hydrate(AccountPermission::class, 'data') ?: new AccountPermission();
$selectUsers = SelectItemAdapter::factory(UserService::getItemsBasic());
$selectUserGroups = SelectItemAdapter::factory(UserGroupService::getItemsBasic());
@@ -394,7 +395,7 @@ final class AccountHelper extends HelperBase
$this->accountService = $this->dic->get(AccountService::class);
$this->accountHistoryService = $this->dic->get(AccountHistoryService::class);
$this->publicLinkService = $this->dic->get(PublicLinkService::class);
$this->accountDefaultPermissionService = $this->dic->get(AccountDefaultPermissionService::class);
$this->itemPresetService = $this->dic->get(\SP\Services\ItemPreset\ItemPresetService::class);
$this->view->assign('changesHash');
$this->view->assign('chkUserEdit');

View File

@@ -63,10 +63,8 @@ final class AccountGrid extends GridBase
$grid->setDataActions($this->getSearchAction());
$grid->setPager($this->getPager($searchAction));
$deleteAction = $this->getDeleteAction();
$grid->setDataActions($deleteAction);
$grid->setDataActions($deleteAction, true);
$grid->setDataActions($this->getDeleteAction());
$grid->setDataActions($this->getDeleteAction()->setTitle(__('Eliminar Seleccionados')), true);
$grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));

View File

@@ -64,11 +64,8 @@ final class AccountHistoryGrid extends GridBase
$grid->setPager($this->getPager($searchAction));
$grid->setDataActions($this->getRestoreAction());
$deleteAction = $this->getDeleteAction();
$grid->setDataActions($deleteAction);
$grid->setDataActions($deleteAction, true);
$grid->setDataActions($this->getDeleteAction());
$grid->setDataActions($this->getDeleteAction()->setTitle(__('Eliminar Seleccionados')), true);
$grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));

View File

@@ -67,11 +67,8 @@ final class AuthTokenGrid extends GridBase
$grid->setDataActions($this->getCreateAction());
$grid->setDataActions($this->getViewAction());
$grid->setDataActions($this->getEditAction());
$deleteAction = $this->getDeleteAction();
$grid->setDataActions($deleteAction);
$grid->setDataActions($deleteAction, true);
$grid->setDataActions($this->getDeleteAction());
$grid->setDataActions($this->getDeleteAction()->setTitle(__('Eliminar Seleccionados')), true);
$grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));

View File

@@ -63,13 +63,11 @@ final class CategoryGrid extends GridBase
$grid->setDataActions($this->getSearchAction());
$grid->setPager($this->getPager($searchAction));
$grid->setDataActions($this->getCreateAction());
$grid->setDataActions($this->getEditAction());
$deleteAction = $this->getDeleteAction();
$grid->setDataActions($deleteAction);
$grid->setDataActions($deleteAction, true);
$grid->setDataActions($this->getDeleteAction());
$grid->setDataActions($this->getDeleteAction()->setTitle(__('Eliminar Seleccionados')), true);
$grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));

View File

@@ -62,13 +62,11 @@ final class ClientGrid extends GridBase
$grid->setDataActions($this->getSearchAction());
$grid->setPager($this->getPager($searchAction));
$grid->setDataActions($this->getCreateAction());
$grid->setDataActions($this->getEditAction());
$deleteAction = $this->getDeleteAction();
$grid->setDataActions($deleteAction);
$grid->setDataActions($deleteAction, true);
$grid->setDataActions($this->getDeleteAction());
$grid->setDataActions($this->getDeleteAction()->setTitle(__('Eliminar Seleccionados')), true);
$grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));

View File

@@ -63,13 +63,12 @@ final class CustomFieldGrid extends GridBase
$grid->setDataActions($this->getSearchAction());
$grid->setPager($this->getPager($searchAction));
$grid->setDataActions($this->getCreateAction());
$grid->setDataActions($this->getEditAction());
$grid->setDataActions($this->getDeleteAction());
$grid->setDataActions($this->getDeleteAction()->setTitle(__('Eliminar Seleccionados')), true);
$deleteAction = $this->getDeleteAction();
$grid->setDataActions($deleteAction);
$grid->setDataActions($deleteAction, true);
$grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));

View File

@@ -62,13 +62,12 @@ final class FileGrid extends GridBase
$grid->setDataActions($this->getSearchAction());
$grid->setPager($this->getPager($searchAction));
$grid->setDataActions($this->getViewAction());
$grid->setDataActions($this->getDownloadAction());
$grid->setDataActions($this->getDeleteAction());
$grid->setDataActions($this->getDeleteAction()->setTitle(__('Eliminar Seleccionados')), true);
$deleteAction = $this->getDeleteAction();
$grid->setDataActions($deleteAction);
$grid->setDataActions($deleteAction, true);
$grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));

View File

@@ -2,8 +2,8 @@
/**
* sysPass
*
* @author nuxsmin
* @link https://syspass.org
* @author nuxsmin
* @link https://syspass.org
* @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org
*
* This file is part of sysPass.
@@ -40,7 +40,7 @@ use SP\Storage\Database\QueryResult;
*
* @package SP\Modules\Web\Controllers\Helpers\Grid
*/
final class AccountDefaultPermissionGrid extends GridBase
final class ItemPresetGrid extends GridBase
{
/**
* @var QueryResult
@@ -62,13 +62,11 @@ final class AccountDefaultPermissionGrid extends GridBase
$grid->setDataActions($this->getSearchAction());
$grid->setPager($this->getPager($searchAction));
$grid->setDataActions($this->getCreateAction());
$grid->setDataActions($this->getCreatePermissionAction(), true);
$grid->setDataActions($this->getEditAction());
$deleteAction = $this->getDeleteAction();
$grid->setDataActions($deleteAction);
$grid->setDataActions($deleteAction, true);
$grid->setDataActions($this->getDeleteAction());
$grid->setDataActions($this->getDeleteAction()->setTitle(__('Eliminar Seleccionados')), true);
$grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
@@ -82,12 +80,12 @@ final class AccountDefaultPermissionGrid extends GridBase
{
// Grid
$gridTab = new DataGridTab($this->view->getTheme());
$gridTab->setId('tblAccountDefaultPermission');
$gridTab->setId('tblItemPreset');
$gridTab->setDataRowTemplate('datagrid-rows', 'grid');
$gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
$gridTab->setHeader($this->getHeader());
$gridTab->setData($this->getData());
$gridTab->setTitle(__('Permisos por Defecto'));
$gridTab->setTitle(__('Valores por Defecto'));
return $gridTab;
}
@@ -99,6 +97,7 @@ final class AccountDefaultPermissionGrid extends GridBase
{
// Grid Header
$gridHeader = new DataGridHeader();
$gridHeader->addHeader(__('Tipo'));
$gridHeader->addHeader(__('Usuario'));
$gridHeader->addHeader(__('Grupo'));
$gridHeader->addHeader(__('Perfil'));
@@ -116,6 +115,7 @@ final class AccountDefaultPermissionGrid extends GridBase
// Grid Data
$gridData = new DataGridData();
$gridData->setDataRowSourceId('id');
$gridData->addDataRowSource('type');
$gridData->addDataRowSource('userName');
$gridData->addDataRowSource('userGroupName');
$gridData->addDataRowSource('userProfileName');
@@ -135,12 +135,12 @@ final class AccountDefaultPermissionGrid extends GridBase
{
// Grid Actions
$gridActionSearch = new DataGridActionSearch();
$gridActionSearch->setId(ActionsInterface::ACCOUNT_DEFAULT_PERMISSION_SEARCH);
$gridActionSearch->setId(ActionsInterface::ITEMPRESET_SEARCH);
$gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
$gridActionSearch->setName('frmSearchPermission');
$gridActionSearch->setTitle(__('Buscar Permiso'));
$gridActionSearch->setTitle(__('Buscar Valor'));
$gridActionSearch->setOnSubmitFunction('appMgmt/search');
$gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNT_DEFAULT_PERMISSION_SEARCH));
$gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::ITEMPRESET_SEARCH));
return $gridActionSearch;
}
@@ -148,17 +148,20 @@ final class AccountDefaultPermissionGrid extends GridBase
/**
* @return DataGridAction
*/
private function getCreateAction()
private function getCreatePermissionAction()
{
$gridAction = new DataGridAction();
$gridAction->setId(ActionsInterface::ACCOUNT_DEFAULT_PERMISSION_CREATE);
$gridAction->setId(ActionsInterface::ITEMPRESET_CREATE);
$gridAction->setType(DataGridActionType::MENUBAR_ITEM);
$gridAction->setName(__('Nuevo Permiso'));
$gridAction->setTitle(__('Nuevo Permiso'));
$gridAction->setIcon($this->icons->getIconAdd());
$icon = clone $this->icons->getIconAdd();
$gridAction->setIcon($icon->setIcon('add_circle'));
$gridAction->setSkip(true);
$gridAction->setOnClickFunction('appMgmt/show');
$gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNT_DEFAULT_PERMISSION_CREATE));
$gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ITEMPRESET_CREATE) . '/permission');
return $gridAction;
}
@@ -169,13 +172,13 @@ final class AccountDefaultPermissionGrid extends GridBase
private function getEditAction()
{
$gridAction = new DataGridAction();
$gridAction->setId(ActionsInterface::ACCOUNT_DEFAULT_PERMISSION_EDIT);
$gridAction->setId(ActionsInterface::ITEMPRESET_EDIT);
$gridAction->setType(DataGridActionType::EDIT_ITEM);
$gridAction->setName(__('Editar Permiso'));
$gridAction->setTitle(__('Editar Permiso'));
$gridAction->setName(__('Editar Valor'));
$gridAction->setTitle(__('Editar Valor'));
$gridAction->setIcon($this->icons->getIconEdit());
$gridAction->setOnClickFunction('appMgmt/show');
$gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNT_DEFAULT_PERMISSION_EDIT));
$gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ITEMPRESET_EDIT));
return $gridAction;
}
@@ -186,13 +189,13 @@ final class AccountDefaultPermissionGrid extends GridBase
private function getDeleteAction()
{
$gridAction = new DataGridAction();
$gridAction->setId(ActionsInterface::ACCOUNT_DEFAULT_PERMISSION_DELETE);
$gridAction->setId(ActionsInterface::ITEMPRESET_DELETE);
$gridAction->setType(DataGridActionType::DELETE_ITEM);
$gridAction->setName(__('Eliminar Permiso'));
$gridAction->setTitle(__('Eliminar Permiso'));
$gridAction->setName(__('Eliminar Valor'));
$gridAction->setTitle(__('Eliminar Valor'));
$gridAction->setIcon($this->icons->getIconDelete());
$gridAction->setOnClickFunction('appMgmt/delete');
$gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNT_DEFAULT_PERMISSION_DELETE));
$gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ITEMPRESET_DELETE));
return $gridAction;
}

View File

@@ -79,11 +79,9 @@ final class NotificationGrid extends GridBase
$grid->setDataActions($this->getViewAction());
$grid->setDataActions($this->setNonAdminFilter($this->getCheckAction()));
$grid->setDataActions($this->setNonAdminFilter($this->getEditAction()));
$grid->setDataActions($this->setNonAdminFilter($this->getDeleteAction()));
$grid->setDataActions($this->setNonAdminFilter($this->getDeleteAction())->setTitle(__('Eliminar Seleccionados')), true);
$deleteAction = $this->setNonAdminFilter($this->getDeleteAction());
$grid->setDataActions($deleteAction);
$grid->setDataActions($deleteAction, true);
$grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));

View File

@@ -67,11 +67,9 @@ final class PublicLinkGrid extends GridBase
$grid->setDataActions($this->getCreateAction());
$grid->setDataActions($this->getViewAction());
$grid->setDataActions($this->getRefreshAction());
$grid->setDataActions($this->getDeleteAction());
$grid->setDataActions($this->getDeleteAction()->setTitle(__('Eliminar Seleccionados')), true);
$deleteAction = $this->getDeleteAction();
$grid->setDataActions($deleteAction);
$grid->setDataActions($deleteAction, true);
$grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));

View File

@@ -63,13 +63,11 @@ final class TagGrid extends GridBase
$grid->setDataActions($this->getSearchAction());
$grid->setPager($this->getPager($searchAction));
$grid->setDataActions($this->getCreateAction());
$grid->setDataActions($this->getEditAction());
$deleteAction = $this->getDeleteAction();
$grid->setDataActions($deleteAction);
$grid->setDataActions($deleteAction, true);
$grid->setDataActions($this->getDeleteAction());
$grid->setDataActions($this->getDeleteAction()->setTitle(__('Eliminar Seleccionados')), true);
$grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));

View File

@@ -76,11 +76,8 @@ final class UserGrid extends GridBase
$grid->setDataActions($this->getViewAction());
$grid->setDataActions($this->getEditAction());
$grid->setDataActions($this->getEditPassAction());
$deleteAction = $this->getDeleteAction();
$grid->setDataActions($deleteAction);
$grid->setDataActions($deleteAction, true);
$grid->setDataActions($this->getDeleteAction());
$grid->setDataActions($this->getDeleteAction()->setTitle(__('Eliminar Seleccionados')), true);
$grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));

View File

@@ -67,11 +67,8 @@ final class UserGroupGrid extends GridBase
$grid->setDataActions($this->getCreateAction());
$grid->setDataActions($this->getViewAction());
$grid->setDataActions($this->getEditAction());
$deleteAction = $this->getDeleteAction();
$grid->setDataActions($deleteAction);
$grid->setDataActions($deleteAction, true);
$grid->setDataActions($this->getDeleteAction());
$grid->setDataActions($this->getDeleteAction()->setTitle(__('Eliminar Seleccionados')), true);
$grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));

View File

@@ -67,11 +67,8 @@ final class UserProfileGrid extends GridBase
$grid->setDataActions($this->getCreateAction());
$grid->setDataActions($this->getViewAction());
$grid->setDataActions($this->getEditAction());
$deleteAction = $this->getDeleteAction();
$grid->setDataActions($deleteAction);
$grid->setDataActions($deleteAction, true);
$grid->setDataActions($this->getDeleteAction());
$grid->setDataActions($this->getDeleteAction()->setTitle(__('Eliminar Seleccionados')), true);
$grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));

View File

@@ -0,0 +1,93 @@
<?php
/**
* sysPass
*
* @author nuxsmin
* @link https://syspass.org
* @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org
*
* This file is part of sysPass.
*
* sysPass is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* sysPass is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
*/
namespace SP\Modules\Web\Controllers\Helpers;
use SP\DataModel\AccountPermission;
use SP\DataModel\ItemPresetData;
use SP\Mvc\View\Components\SelectItemAdapter;
use SP\Services\User\UserService;
use SP\Services\UserGroup\UserGroupService;
/**
* Class ItemPresetHelper
*
* @package SP\Modules\Web\Controllers\Helpers
*/
class ItemPresetHelper extends HelperBase
{
/**
* @var SelectItemAdapter
*/
private $users;
/**
* @var SelectItemAdapter
*/
private $userGroups;
/**
* @var SelectItemAdapter
*/
private $userProfiles;
/**
* @param ItemPresetData $itemPresetData
*
* @throws \SP\Core\Exceptions\NoSuchPropertyException
*/
public function makeAccountPermissionView(ItemPresetData $itemPresetData)
{
$accountPermission = $itemPresetData->hydrate(AccountPermission::class, 'data') ?: new AccountPermission();
$this->view->assign('typeTemplate', 'item_preset-permission');
$this->view->assign('permission', $accountPermission);
$this->view->assign('users', $this->users->getItemsFromModelSelected([$itemPresetData->getUserId()]));
$this->view->assign('usersView', $this->users->getItemsFromModelSelected($accountPermission->getUsersView()));
$this->view->assign('usersEdit', $this->users->getItemsFromModelSelected($accountPermission->getUsersEdit()));
$this->view->assign('userGroups', $this->userGroups->getItemsFromModelSelected([$itemPresetData->getUserGroupId()]));
$this->view->assign('userGroupsView', $this->userGroups->getItemsFromModelSelected($accountPermission->getUserGroupsView()));
$this->view->assign('userGroupsEdit', $this->userGroups->getItemsFromModelSelected($accountPermission->getUserGroupsEdit()));
$this->view->assign('userProfiles', $this->userProfiles->getItemsFromModelSelected([$itemPresetData->getUserProfileId()]));
}
/**
* makeDefaultPresetView
*/
public function makeDefaultPresetView()
{
$this->view->assign('users', $this->users->getItemsFromModel());
$this->view->assign('userGroups', $this->userGroups->getItemsFromModel());
$this->view->assign('userProfiles', $this->userProfiles->getItemsFromModel());
}
protected function initialize()
{
$this->users = SelectItemAdapter::factory(UserService::getItemsBasic());
$this->userGroups = SelectItemAdapter::factory(UserGroupService::getItemsBasic());
$this->userProfiles = SelectItemAdapter::factory(UserGroupService::getItemsBasic());
}
}

View File

@@ -33,6 +33,7 @@ use SP\Modules\Web\Controllers\Helpers\Grid\CategoryGrid;
use SP\Modules\Web\Controllers\Helpers\Grid\ClientGrid;
use SP\Modules\Web\Controllers\Helpers\Grid\CustomFieldGrid;
use SP\Modules\Web\Controllers\Helpers\Grid\FileGrid;
use SP\Modules\Web\Controllers\Helpers\Grid\ItemPresetGrid;
use SP\Modules\Web\Controllers\Helpers\Grid\PluginGrid;
use SP\Modules\Web\Controllers\Helpers\Grid\TagGrid;
use SP\Modules\Web\Controllers\Helpers\TabsGridHelper;
@@ -42,6 +43,7 @@ use SP\Services\Account\AccountService;
use SP\Services\Category\CategoryService;
use SP\Services\Client\ClientService;
use SP\Services\CustomField\CustomFieldDefService;
use SP\Services\ItemPreset\ItemPresetService;
use SP\Services\Plugin\PluginService;
use SP\Services\Tag\TagService;
@@ -111,6 +113,10 @@ final class ItemManagerController extends ControllerBase
$this->tabsGridHelper->addTab($this->getAccountsHistoryList());
}
if ($this->checkAccess(Acl::ITEMPRESET)) {
$this->tabsGridHelper->addTab($this->getItemPresetList());
}
if ($this->checkAccess(Acl::PLUGIN)) {
$this->tabsGridHelper->addTab($this->getPluginsList());
}
@@ -220,6 +226,20 @@ final class ItemManagerController extends ControllerBase
->updatePager();
}
/**
* Returns API tokens data tab
*
* @return \SP\Html\DataGrid\DataGridTab
* @throws \SP\Core\Exceptions\ConstraintException
* @throws \SP\Core\Exceptions\QueryException
*/
protected function getItemPresetList()
{
return $this->dic->get(ItemPresetGrid::class)
->getGrid($this->dic->get(ItemPresetService::class)->search($this->itemSearchData))
->updatePager();
}
/**
* Returns plugins' data tab
*

View File

@@ -28,32 +28,31 @@ use SP\Core\Acl\Acl;
use SP\Core\Events\Event;
use SP\Core\Events\EventMessage;
use SP\Core\Exceptions\ValidationException;
use SP\DataModel\AccountDefaultPermissionData;
use SP\DataModel\AccountPermission;
use SP\DataModel\ItemPresetData;
use SP\Http\JsonResponse;
use SP\Modules\Web\Controllers\Helpers\Grid\AccountDefaultPermissionGrid;
use SP\Modules\Web\Controllers\Helpers\Grid\ItemPresetGrid;
use SP\Modules\Web\Controllers\Helpers\ItemPresetHelper;
use SP\Modules\Web\Controllers\Traits\ItemTrait;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Modules\Web\Forms\AccountDefaultPermissionForm;
use SP\Modules\Web\Forms\ItemsPresetForm;
use SP\Mvc\Controller\CrudControllerInterface;
use SP\Mvc\View\Components\SelectItemAdapter;
use SP\Services\Account\AccountDefaultPermissionService;
use SP\Services\User\UserService;
use SP\Services\UserGroup\UserGroupService;
use SP\Services\ItemPreset\ItemPresetInterface;
use SP\Services\ItemPreset\ItemPresetService;
use SP\Util\Filter;
/**
* Class AccountDefaultPermissionController
*
* @package SP\Modules\Web\Controllers
*/
class AccountDefaultPermissionController extends ControllerBase implements CrudControllerInterface
class ItemPresetController extends ControllerBase implements CrudControllerInterface
{
use JsonTrait, ItemTrait;
/**
* @var AccountDefaultPermissionService
* @var ItemPresetService
*/
protected $accountDefaultPermissionService;
protected $itemPresetService;
/**
* View action
@@ -64,17 +63,17 @@ class AccountDefaultPermissionController extends ControllerBase implements CrudC
*/
public function viewAction($id)
{
if (!$this->acl->checkUserAccess(Acl::ACCOUNT_DEFAULT_PERMISSION_VIEW)) {
if (!$this->acl->checkUserAccess(Acl::ITEMPRESET_VIEW)) {
return $this->returnJsonResponse(JsonResponse::JSON_ERROR, __u('No tiene permisos para realizar esta operación'));
}
$this->view->assign('header', __('Ver Permiso'));
$this->view->assign('header', __('Ver Valor'));
$this->view->assign('isView', true);
try {
$this->setViewData($id);
$this->eventDispatcher->notifyEvent('show.accountDefaultPermission', new Event($this));
$this->eventDispatcher->notifyEvent('show.itemPreset', new Event($this));
return $this->returnJsonResponseData(['html' => $this->render()]);
} catch (\Exception $e) {
@@ -87,36 +86,35 @@ class AccountDefaultPermissionController extends ControllerBase implements CrudC
/**
* Sets view data for displaying permissions' data
*
* @param $permissionId
* @param int $id
* @param string $type
*
* @throws \SP\Core\Exceptions\ConstraintException
* @throws \SP\Core\Exceptions\NoSuchPropertyException
* @throws \SP\Core\Exceptions\QueryException
* @throws \SP\Repositories\NoSuchItemException
*/
protected function setViewData($permissionId = null)
protected function setViewData(int $id = null, string $type = null)
{
$this->view->addTemplate('account_default_permission', 'itemshow');
$this->view->addTemplate('item_preset', 'itemshow');
$accountDefaultPermissionData = $permissionId ? $this->accountDefaultPermissionService->getById($permissionId) : new AccountDefaultPermissionData();
$accountPermission = $accountDefaultPermissionData->getAccountPermission() ?: new AccountPermission();
$itemPresetData = $id ? $this->itemPresetService->getById($id) : new ItemPresetData();
$this->view->assign('permission', $accountDefaultPermissionData);
$itemPresetHelper = $this->dic->get(ItemPresetHelper::class);
$users = SelectItemAdapter::factory(UserService::getItemsBasic());
if ($itemPresetData->getType() === null) {
$itemPresetData->setType($type);
}
$this->view->assign('users', $users->getItemsFromModelSelected([$accountDefaultPermissionData->getUserId()]));
$this->view->assign('usersView', $users->getItemsFromModelSelected($accountPermission->getUsersView()));
$this->view->assign('usersEdit', $users->getItemsFromModelSelected($accountPermission->getUsersEdit()));
$userGroups = SelectItemAdapter::factory(UserGroupService::getItemsBasic());
$this->view->assign('userGroups', $userGroups->getItemsFromModelSelected([$accountDefaultPermissionData->getUserGroupId()]));
$this->view->assign('userGroupsView', $userGroups->getItemsFromModelSelected($accountPermission->getUserGroupsView()));
$this->view->assign('userGroupsEdit', $userGroups->getItemsFromModelSelected($accountPermission->getUserGroupsEdit()));
$this->view->assign('userProfiles', SelectItemAdapter::factory(UserGroupService::getItemsBasic())
->getItemsFromModelSelected([$accountDefaultPermissionData->getUserProfileId()]));
switch ($itemPresetData->getType()) {
case ItemPresetInterface::ITEM_TYPE_PERMISSION:
$itemPresetHelper->makeAccountPermissionView($itemPresetData);
break;
default:
$itemPresetHelper->makeDefaultPresetView();
}
$this->view->assign('preset', $itemPresetData);
$this->view->assign('sk', $this->session->generateSecurityKey());
$this->view->assign('nextAction', Acl::getActionRoute(Acl::ACCESS_MANAGE));
@@ -138,7 +136,7 @@ class AccountDefaultPermissionController extends ControllerBase implements CrudC
*/
public function searchAction()
{
if (!$this->acl->checkUserAccess(Acl::ACCOUNT_DEFAULT_PERMISSION_SEARCH)) {
if (!$this->acl->checkUserAccess(Acl::ITEMPRESET_SEARCH)) {
return $this->returnJsonResponse(JsonResponse::JSON_ERROR, __u('No tiene permisos para realizar esta operación'));
}
@@ -160,10 +158,10 @@ class AccountDefaultPermissionController extends ControllerBase implements CrudC
{
$itemSearchData = $this->getSearchData($this->configData->getAccountCount(), $this->request);
$grid = $this->dic->get(AccountDefaultPermissionGrid::class);
$grid = $this->dic->get(ItemPresetGrid::class);
return $grid->updatePager(
$grid->getGrid($this->accountDefaultPermissionService->search($itemSearchData)),
$grid->getGrid($this->itemPresetService->search($itemSearchData)),
$itemSearchData
);
}
@@ -173,19 +171,26 @@ class AccountDefaultPermissionController extends ControllerBase implements CrudC
*/
public function createAction()
{
if (!$this->acl->checkUserAccess(Acl::ACCOUNT_DEFAULT_PERMISSION_CREATE)) {
if (!$this->acl->checkUserAccess(Acl::ITEMPRESET_CREATE)) {
return $this->returnJsonResponse(JsonResponse::JSON_ERROR, __u('No tiene permisos para realizar esta operación'));
}
$args = func_get_args();
$type = null;
if (count($args) > 0) {
$type = Filter::getString($args[0]);
}
$this->view->assign(__FUNCTION__, 1);
$this->view->assign('header', __('Nuevo Permiso'));
$this->view->assign('header', __('Nuevo Valor'));
$this->view->assign('isView', false);
$this->view->assign('route', 'accountDefaultPermission/saveCreate');
$this->view->assign('route', 'itemPreset/saveCreate');
try {
$this->setViewData();
$this->setViewData(null, $type);
$this->eventDispatcher->notifyEvent('show.accountDefaultPermission.create', new Event($this));
$this->eventDispatcher->notifyEvent('show.itemPreset.create', new Event($this));
return $this->returnJsonResponseData(['html' => $this->render()]);
} catch (\Exception $e) {
@@ -204,18 +209,18 @@ class AccountDefaultPermissionController extends ControllerBase implements CrudC
*/
public function editAction($id)
{
if (!$this->acl->checkUserAccess(Acl::ACCOUNT_DEFAULT_PERMISSION_EDIT)) {
if (!$this->acl->checkUserAccess(Acl::ITEMPRESET_EDIT)) {
return $this->returnJsonResponse(JsonResponse::JSON_ERROR, __u('No tiene permisos para realizar esta operación'));
}
$this->view->assign('header', __('Editar Permiso'));
$this->view->assign('header', __('Editar Valor'));
$this->view->assign('isView', false);
$this->view->assign('route', 'accountDefaultPermission/saveEdit/' . $id);
$this->view->assign('route', 'itemPreset/saveEdit/' . $id);
try {
$this->setViewData($id);
$this->eventDispatcher->notifyEvent('show.accountDefaultPermission.edit', new Event($this));
$this->eventDispatcher->notifyEvent('show.itemPreset.edit', new Event($this));
return $this->returnJsonResponseData(['html' => $this->render()]);
} catch (\Exception $e) {
@@ -234,33 +239,33 @@ class AccountDefaultPermissionController extends ControllerBase implements CrudC
*/
public function deleteAction($id = null)
{
if (!$this->acl->checkUserAccess(Acl::ACCOUNT_DEFAULT_PERMISSION_DELETE)) {
if (!$this->acl->checkUserAccess(Acl::ITEMPRESET_DELETE)) {
return $this->returnJsonResponse(JsonResponse::JSON_ERROR, __u('No tiene permisos para realizar esta operación'));
}
try {
if ($id === null) {
$this->accountDefaultPermissionService->deleteByIdBatch($this->getItemsIdFromRequest($this->request));
$this->itemPresetService->deleteByIdBatch($this->getItemsIdFromRequest($this->request));
$this->eventDispatcher->notifyEvent('delete.accountDefaultPermission',
$this->eventDispatcher->notifyEvent('delete.itemPreset',
new Event($this,
EventMessage::factory()
->addDescription(__u('Permisos eliminados')))
->addDescription(__u('Valores eliminados')))
);
return $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Permisos eliminados'));
return $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Valores eliminados'));
}
$this->accountDefaultPermissionService->delete($id);
$this->itemPresetService->delete($id);
$this->eventDispatcher->notifyEvent('delete.accountDefaultPermission',
$this->eventDispatcher->notifyEvent('delete.itemPreset',
new Event($this,
EventMessage::factory()
->addDescription(__u('Permiso eliminado'))
->addDescription(__u('Valor eliminado'))
->addDetail(__u('ID'), $id))
);
return $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Permiso eliminado'));
return $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Valor eliminado'));
} catch (\Exception $e) {
processException($e);
@@ -273,24 +278,27 @@ class AccountDefaultPermissionController extends ControllerBase implements CrudC
*/
public function saveCreateAction()
{
if (!$this->acl->checkUserAccess(Acl::ACCOUNT_DEFAULT_PERMISSION_CREATE)) {
if (!$this->acl->checkUserAccess(Acl::ITEMPRESET_CREATE)) {
return $this->returnJsonResponse(JsonResponse::JSON_ERROR, __u('No tiene permisos para realizar esta operación'));
}
try {
$form = new AccountDefaultPermissionForm($this->dic);
$form->validate(Acl::ACCOUNT_DEFAULT_PERMISSION_CREATE);
$form = new ItemsPresetForm($this->dic);
$form->validate(Acl::ITEMPRESET_CREATE);
$id = $this->accountDefaultPermissionService->create($form->getItemData());
$itemData = $form->getItemData();
$this->eventDispatcher->notifyEvent('create.accountDefaultPermission',
$id = $this->itemPresetService->create($itemData);
$this->eventDispatcher->notifyEvent('create.itemPreset',
new Event($this,
EventMessage::factory()
->addDescription(__u('Permiso creado'))
->addDescription(__u('Valor creado'))
->addDetail(__u('Tipo'), $itemData->getItemPresetData()->getType())
->addDetail(__u('ID'), $id))
);
return $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Permiso creado'));
return $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Valor creado'));
} catch (ValidationException $e) {
return $this->returnJsonResponseException($e);
} catch (\Exception $e) {
@@ -309,24 +317,27 @@ class AccountDefaultPermissionController extends ControllerBase implements CrudC
*/
public function saveEditAction($id)
{
if (!$this->acl->checkUserAccess(Acl::ACCOUNT_DEFAULT_PERMISSION_EDIT)) {
if (!$this->acl->checkUserAccess(Acl::ITEMPRESET_EDIT)) {
return $this->returnJsonResponse(JsonResponse::JSON_ERROR, __u('No tiene permisos para realizar esta operación'));
}
try {
$form = new AccountDefaultPermissionForm($this->dic, $id);
$form->validate(Acl::ACCOUNT_DEFAULT_PERMISSION_EDIT);
$form = new ItemsPresetForm($this->dic, $id);
$form->validate(Acl::ITEMPRESET_EDIT);
$this->accountDefaultPermissionService->update($form->getItemData());
$itemData = $form->getItemData();
$this->eventDispatcher->notifyEvent('edit.accountDefaultPermission',
$this->itemPresetService->update($itemData);
$this->eventDispatcher->notifyEvent('edit.itemPreset',
new Event($this,
EventMessage::factory()
->addDescription(__u('Permiso actualizado'))
->addDescription(__u('Valor actualizado'))
->addDetail(__u('Tipo'), $itemData->getItemPresetData()->getType())
->addDetail(__u('ID'), $id))
);
return $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Permiso actualizado'));
return $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Valor actualizado'));
} catch (ValidationException $e) {
return $this->returnJsonResponseException($e);
} catch (\Exception $e) {
@@ -347,6 +358,6 @@ class AccountDefaultPermissionController extends ControllerBase implements CrudC
{
$this->checkLoggedIn();
$this->accountDefaultPermissionService = $this->dic->get(AccountDefaultPermissionService::class);
$this->itemPresetService = $this->dic->get(ItemPresetService::class);
}
}