mirror of
https://github.com/nuxsmin/sysPass.git
synced 2026-03-02 22:54:08 +01:00
* [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:
@@ -831,38 +831,38 @@
|
||||
</action>
|
||||
<action multiple="1">
|
||||
<id>1801</id>
|
||||
<name>ACCOUNT_DEFAULT_PERMISSION</name>
|
||||
<name>ITEMPRESET</name>
|
||||
<text>Gestión Permisos</text>
|
||||
<route>accountDefaultPermission/index</route>
|
||||
<route>itemPreset/index</route>
|
||||
</action>
|
||||
<action multiple="1">
|
||||
<id>1802</id>
|
||||
<name>ACCOUNT_DEFAULT_PERMISSION_SEARCH</name>
|
||||
<name>ITEMPRESET_SEARCH</name>
|
||||
<text>Buscar Permiso</text>
|
||||
<route>accountDefaultPermission/search</route>
|
||||
<route>itemPreset/search</route>
|
||||
</action>
|
||||
<action multiple="1">
|
||||
<id>1803</id>
|
||||
<name>ACCOUNT_DEFAULT_PERMISSION_VIEW</name>
|
||||
<name>ITEMPRESET_VIEW</name>
|
||||
<text>Ver Permiso</text>
|
||||
<route>accountDefaultPermission/view</route>
|
||||
<route>itemPreset/view</route>
|
||||
</action>
|
||||
<action multiple="1">
|
||||
<id>1804</id>
|
||||
<name>ACCOUNT_DEFAULT_PERMISSION_CREATE</name>
|
||||
<name>ITEMPRESET_CREATE</name>
|
||||
<text>Nuevo Permiso</text>
|
||||
<route>accountDefaultPermission/create</route>
|
||||
<route>itemPreset/create</route>
|
||||
</action>
|
||||
<action multiple="1">
|
||||
<id>1805</id>
|
||||
<name>ACCOUNT_DEFAULT_PERMISSION_EDIT</name>
|
||||
<name>ITEMPRESET_EDIT</name>
|
||||
<text>Editar Permiso</text>
|
||||
<route>accountDefaultPermission/edit</route>
|
||||
<route>itemPreset/edit</route>
|
||||
</action>
|
||||
<action multiple="1">
|
||||
<id>1806</id>
|
||||
<name>ACCOUNT_DEFAULT_PERMISSION_DELETE</name>
|
||||
<name>ITEMPRESET_DELETE</name>
|
||||
<text>Eliminar Permiso</text>
|
||||
<route>accountDefaultPermission/delete</route>
|
||||
<route>itemPreset/delete</route>
|
||||
</action>
|
||||
</actions>
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
93
app/modules/web/Controllers/Helpers/ItemPresetHelper.php
Normal file
93
app/modules/web/Controllers/Helpers/ItemPresetHelper.php
Normal 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());
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -26,34 +26,36 @@ namespace SP\Modules\Web\Forms;
|
||||
|
||||
use SP\Core\Acl\ActionsInterface;
|
||||
use SP\Core\Exceptions\ValidationException;
|
||||
use SP\DataModel\AccountDefaultPermissionData;
|
||||
use SP\DataModel\AccountPermission;
|
||||
use SP\DataModel\ItemPresetData;
|
||||
use SP\Services\ItemPreset\ItemPresetInterface;
|
||||
use SP\Services\ItemPreset\ItemPresetRequest;
|
||||
|
||||
/**
|
||||
* Class AccountDefaultPermissionForm
|
||||
* Class ItemsPresetForm
|
||||
*
|
||||
* @package SP\Modules\Web\Forms
|
||||
*/
|
||||
final class AccountDefaultPermissionForm extends FormBase implements FormInterface
|
||||
final class ItemsPresetForm extends FormBase implements FormInterface
|
||||
{
|
||||
/**
|
||||
* @var AccountDefaultPermissionData
|
||||
* @var ItemPresetRequest
|
||||
*/
|
||||
protected $accountDefaultPermissionData;
|
||||
protected $itemPresetRequest;
|
||||
|
||||
/**
|
||||
* Validar el formulario
|
||||
*
|
||||
* @param $action
|
||||
*
|
||||
* @return AccountDefaultPermissionForm
|
||||
* @return ItemsPresetForm
|
||||
* @throws ValidationException
|
||||
*/
|
||||
public function validate($action)
|
||||
{
|
||||
switch ($action) {
|
||||
case ActionsInterface::ACCOUNT_DEFAULT_PERMISSION_CREATE:
|
||||
case ActionsInterface::ACCOUNT_DEFAULT_PERMISSION_EDIT:
|
||||
case ActionsInterface::ITEMPRESET_CREATE:
|
||||
case ActionsInterface::ITEMPRESET_EDIT:
|
||||
$this->analyzeRequestData();
|
||||
$this->checkCommon();
|
||||
break;
|
||||
@@ -66,37 +68,58 @@ final class AccountDefaultPermissionForm extends FormBase implements FormInterfa
|
||||
* Analizar los datos de la petición HTTP
|
||||
*
|
||||
* @return void
|
||||
* @throws ValidationException
|
||||
*/
|
||||
protected function analyzeRequestData()
|
||||
{
|
||||
$this->accountDefaultPermissionData = new AccountDefaultPermissionData();
|
||||
$itemPresetData = new ItemPresetData();
|
||||
|
||||
if ($this->itemId > 0) {
|
||||
$this->accountDefaultPermissionData->setId($this->itemId);
|
||||
$itemPresetData->setId($this->itemId);
|
||||
}
|
||||
|
||||
if ($userId = $this->request->analyzeInt('user_id')) {
|
||||
$this->accountDefaultPermissionData->setUserId($userId);
|
||||
$itemPresetData->setUserId($userId);
|
||||
}
|
||||
|
||||
if ($userGroupId = $this->request->analyzeInt('user_group_id')) {
|
||||
$this->accountDefaultPermissionData->setUserGroupId($userGroupId);
|
||||
$itemPresetData->setUserGroupId($userGroupId);
|
||||
}
|
||||
|
||||
if ($userProfileId = $this->request->analyzeInt('user_profile_id')) {
|
||||
$this->accountDefaultPermissionData->setUserProfileId($userProfileId);
|
||||
$itemPresetData->setUserProfileId($userProfileId);
|
||||
}
|
||||
|
||||
$this->accountDefaultPermissionData->setFixed((int)$this->request->analyzeBool('fixed_enabled', false));
|
||||
$this->accountDefaultPermissionData->setPriority($this->request->analyzeInt('priority'));
|
||||
|
||||
$itemPresetData->setFixed((int)$this->request->analyzeBool('fixed_enabled', false));
|
||||
$itemPresetData->setPriority($this->request->analyzeInt('priority'));
|
||||
$itemPresetData->setType($this->request->analyzeString('type'));
|
||||
|
||||
switch ($itemPresetData->getType()) {
|
||||
case ItemPresetInterface::ITEM_TYPE_PERMISSION:
|
||||
$this->itemPresetRequest = new ItemPresetRequest($itemPresetData, $this->makePermissionPreset());
|
||||
break;
|
||||
default:
|
||||
throw new ValidationException(__u('Tipo de valor no definido o incorrecto'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return AccountPermission
|
||||
* @throws ValidationException
|
||||
*/
|
||||
private function makePermissionPreset()
|
||||
{
|
||||
$accountPermission = new AccountPermission();
|
||||
$accountPermission->setUsersView($this->request->analyzeArray('users_view', null, []));
|
||||
$accountPermission->setUsersEdit($this->request->analyzeArray('users_edit', null, []));
|
||||
$accountPermission->setUserGroupsView($this->request->analyzeArray('user_groups_view', null, []));
|
||||
$accountPermission->setUserGroupsEdit($this->request->analyzeArray('user_groups_edit', null, []));
|
||||
|
||||
$this->accountDefaultPermissionData->setAccountPermission($accountPermission);
|
||||
if (!$accountPermission->hasItems()) {
|
||||
throw new ValidationException(__u('No hay permisos definidos'));
|
||||
}
|
||||
|
||||
return $accountPermission;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -104,23 +127,21 @@ final class AccountDefaultPermissionForm extends FormBase implements FormInterfa
|
||||
*/
|
||||
protected function checkCommon()
|
||||
{
|
||||
if (!$this->accountDefaultPermissionData->getUserId()
|
||||
&& !$this->accountDefaultPermissionData->getUserGroupId()
|
||||
&& !$this->accountDefaultPermissionData->getUserProfileId()
|
||||
$itemPresetData = $this->itemPresetRequest->getItemPresetData();
|
||||
|
||||
if (!$itemPresetData->getUserId()
|
||||
&& !$itemPresetData->getUserGroupId()
|
||||
&& !$itemPresetData->getUserProfileId()
|
||||
) {
|
||||
throw new ValidationException(__u('Es necesario asignar un elemento del tipo usuario, grupo o perfil'));
|
||||
}
|
||||
|
||||
if (!$this->accountDefaultPermissionData->getAccountPermission()->hasItems()) {
|
||||
throw new ValidationException(__u('No hay permisos definidos'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return AccountDefaultPermissionData
|
||||
* @return ItemPresetRequest
|
||||
*/
|
||||
public function getItemData()
|
||||
{
|
||||
return $this->accountDefaultPermissionData;
|
||||
return $this->itemPresetRequest;
|
||||
}
|
||||
}
|
||||
@@ -97,7 +97,7 @@ final class UserProfileForm extends FormBase implements FormInterface
|
||||
$profileData->setMgmPublicLinks($this->request->analyzeBool('profile_publinks', false));
|
||||
$profileData->setMgmAccounts($this->request->analyzeBool('profile_accounts', false));
|
||||
$profileData->setMgmFiles($this->request->analyzeBool('profile_files', false));
|
||||
$profileData->setMgmAccountDefaultPermissions($this->request->analyzeBool('profile_permissions', false));
|
||||
$profileData->setMgmItemsPreset($this->request->analyzeBool('profile_items_preset', false));
|
||||
$profileData->setMgmTags($this->request->analyzeBool('profile_tags', false));
|
||||
$profileData->setEvl($this->request->analyzeBool('profile_eventlog', false));
|
||||
|
||||
|
||||
@@ -94,7 +94,7 @@ if (!isset($index)): $index = 0; endif;
|
||||
data-onclick="<?php echo $action->getOnClick(); ?>"
|
||||
<?php foreach ($action->getData() as $dataName => $dataValue): echo 'data-', $dataName, '=', '"', $dataValue, '"'; endforeach; ?>>
|
||||
<i class="material-icons <?php echo $action->getIcon()->getClass(); ?>"><?php echo $action->getIcon()->getIcon(); ?></i>
|
||||
<?php echo __('Eliminar Seleccionados'); ?>
|
||||
<?php echo $action->getTitle(); ?>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* @var $data SP\Html\DataGrid\DataGridTab
|
||||
* @var $this SP\Core\Template
|
||||
* @var $this \SP\Mvc\View\Template
|
||||
* @var $action SP\Html\DataGrid\DataGridAction|SP\Html\DataGrid\DataGridActionSearch
|
||||
*/
|
||||
?>
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
<table class="popup-data">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="descField"><?php echo __('Usuarios'); ?></td>
|
||||
<td class="valField">
|
||||
<div class="account-permissions">
|
||||
<div class="tag-list-box">
|
||||
<div class="tag-list-header"><?php echo __('Ver'); ?></div>
|
||||
|
||||
<select id="users_view" name="users_view[]" multiple="multiple"
|
||||
class="select-box">
|
||||
<option value=""><?php echo __('Seleccionar Usuarios'); ?></option>
|
||||
<?php /** @var \SP\Mvc\View\Components\SelectItem[] $usersView */
|
||||
foreach ($usersView as $user): ?>
|
||||
<?php if ($user->isSkip()): continue; endif; ?>
|
||||
<option
|
||||
value="<?php echo $user->getId(); ?>"
|
||||
<?php echo $user->isSelected() ? 'selected' : '' ?>><?php echo $user->getName(); ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="tag-list-box">
|
||||
<div class="tag-list-header"><?php echo __('Editar'); ?></div>
|
||||
|
||||
<select id="users_edit" name="users_edit[]" multiple="multiple"
|
||||
class="select-box">
|
||||
<option value=""><?php echo __('Seleccionar Usuarios'); ?></option>
|
||||
<?php /** @var \SP\Mvc\View\Components\SelectItem[] $usersEdit */
|
||||
foreach ($usersEdit as $user): ?>
|
||||
<?php if ($user->isSkip()): continue; endif; ?>
|
||||
<option
|
||||
value="<?php echo $user->getId(); ?>"
|
||||
<?php echo $user->isSelected() ? 'selected' : '' ?>><?php echo $user->getName(); ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="descField"><?php echo __('Grupos'); ?></td>
|
||||
<td class="valField">
|
||||
<div class="account-permissions">
|
||||
<div class="tag-list-box">
|
||||
<div class="tag-list-header"><?php echo __('Ver'); ?></div>
|
||||
|
||||
<select id="user_groups_view" name="user_groups_view[]" multiple="multiple"
|
||||
class="select-box">
|
||||
<option value=""><?php echo __('Seleccionar Grupos'); ?></option>
|
||||
<?php /** @var \SP\Mvc\View\Components\SelectItem[] $userGroupsView */
|
||||
foreach ($userGroupsView as $userGroup): ?>
|
||||
<?php if ($userGroup->isSkip()): continue; endif; ?>
|
||||
<option
|
||||
value="<?php echo $userGroup->getId(); ?>"
|
||||
<?php echo $userGroup->isSelected() ? 'selected' : '' ?>><?php echo $userGroup->getName(); ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="tag-list-box">
|
||||
<div class="tag-list-header"><?php echo __('Editar'); ?></div>
|
||||
|
||||
<select id="user_groups_edit" name="user_groups_edit[]" multiple="multiple"
|
||||
class="select-box">
|
||||
<option value=""><?php echo __('Seleccionar Grupos'); ?></option>
|
||||
<?php /** @var \SP\Mvc\View\Components\SelectItem[] $userGroupsEdit */
|
||||
foreach ($userGroupsEdit as $userGroup): ?>
|
||||
<?php if ($userGroup->isSkip()): continue; endif; ?>
|
||||
<option
|
||||
value="<?php echo $userGroup->getId(); ?>"
|
||||
<?php echo $userGroup->isSelected() ? 'selected' : '' ?>><?php echo $userGroup->getName(); ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -1,12 +1,13 @@
|
||||
<?php
|
||||
/** @var $icons \SP\Core\UI\ThemeIcons */
|
||||
/** @var $permission \SP\DataModel\AccountDefaultPermissionData */
|
||||
/** @var $preset \SP\DataModel\ItemPresetData */
|
||||
/** @var $this \SP\Mvc\View\Template */
|
||||
?>
|
||||
|
||||
<div id="box-popup">
|
||||
<h2 class="center"><?php echo $header; ?><i class="btn-popup-close material-icons">close</i></h2>
|
||||
|
||||
<form method="post" name="frmAccountDefaultGroup" id="frmAccountDefaultGroup" class="form-action"
|
||||
<form method="post" name="frmItemPreset" id="frmItemPreset" class="form-action"
|
||||
data-onsubmit="appMgmt/save"
|
||||
data-action-route="<?php echo isset($route) ? $route : ''; ?>"
|
||||
data-activetab="<?php echo isset($activeTab) ? $activeTab : ''; ?>"
|
||||
@@ -72,7 +73,7 @@
|
||||
class="icon material-icons <?php echo $icons->getIconHelp()->getClass(); ?>"><?php echo $icons->getIconHelp()->getIcon(); ?></div>
|
||||
<div class="mdl-tooltip mdl-tooltip--large" for="help-priority">
|
||||
<p>
|
||||
<?php echo __('Prioridad de asignación en caso de coincidir con otros permisos asignados por usuario, grupo o perfil.'); ?>
|
||||
<?php echo __('Prioridad de asignación en caso de coincidir con otros valores asignados por usuario, grupo o perfil.'); ?>
|
||||
</p>
|
||||
</div>
|
||||
</td>
|
||||
@@ -81,7 +82,7 @@
|
||||
<input id="priority" name="priority" type="number" step="1"
|
||||
pattern="[0-9]{1,3}" class="mdl-textfield__input mdl-color-text--indigo-400"
|
||||
maxlength="3" min="0" max="128"
|
||||
value="<?php echo $permission->getPriority(); ?>"/>
|
||||
value="<?php echo $preset->getPriority(); ?>"/>
|
||||
<label class="mdl-textfield__label"
|
||||
for="priority"><?php echo __('Prioridad de asignación'); ?></label>
|
||||
</div>
|
||||
@@ -97,16 +98,16 @@
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="fixed_enabled">
|
||||
<input type="checkbox" id="fixed_enabled"
|
||||
class="mdl-switch__input"
|
||||
name="fixed_enabled" <?php echo $permission->getFixed() ? 'checked' : ''; ?>/>
|
||||
name="fixed_enabled" <?php echo $preset->getFixed() ? 'checked' : ''; ?>/>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<span class="mdl-list__item-primary-content">
|
||||
<span><?php echo __('Forzado'); ?></span>
|
||||
<span class="mdl-list__item-sub-title">
|
||||
<?php echo __('Indica si los permisos serán forzados al crear o modificar la cuenta.'); ?>
|
||||
<?php echo __('Indica si los valores serán forzados al crear o modificar los elementos.'); ?>
|
||||
<br>
|
||||
<?php echo __('Los permisos serán añadidos a los existentes.'); ?>
|
||||
<?php echo __('Los valores serán añadidos a los existentes.'); ?>
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
@@ -114,94 +115,19 @@
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="descField"><?php echo __('Usuarios'); ?></td>
|
||||
<td class="valField">
|
||||
<div class="account-permissions">
|
||||
<div class="tag-list-box">
|
||||
<div class="tag-list-header"><?php echo __('Ver'); ?></div>
|
||||
|
||||
<select id="users_view" name="users_view[]" multiple="multiple"
|
||||
class="select-box">
|
||||
<option value=""><?php echo __('Seleccionar Usuarios'); ?></option>
|
||||
<?php /** @var \SP\Mvc\View\Components\SelectItem[] $usersView */
|
||||
foreach ($usersView as $user): ?>
|
||||
<?php if ($user->isSkip()): continue; endif; ?>
|
||||
<option
|
||||
value="<?php echo $user->getId(); ?>"
|
||||
<?php echo $user->isSelected() ? 'selected' : '' ?>><?php echo $user->getName(); ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="tag-list-box">
|
||||
<div class="tag-list-header"><?php echo __('Editar'); ?></div>
|
||||
|
||||
<select id="users_edit" name="users_edit[]" multiple="multiple"
|
||||
class="select-box">
|
||||
<option value=""><?php echo __('Seleccionar Usuarios'); ?></option>
|
||||
<?php /** @var \SP\Mvc\View\Components\SelectItem[] $usersEdit */
|
||||
foreach ($usersEdit as $user): ?>
|
||||
<?php if ($user->isSkip()): continue; endif; ?>
|
||||
<option
|
||||
value="<?php echo $user->getId(); ?>"
|
||||
<?php echo $user->isSelected() ? 'selected' : '' ?>><?php echo $user->getName(); ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="descField"><?php echo __('Grupos'); ?></td>
|
||||
<td class="valField">
|
||||
<div class="account-permissions">
|
||||
<div class="tag-list-box">
|
||||
<div class="tag-list-header"><?php echo __('Ver'); ?></div>
|
||||
|
||||
<select id="user_groups_view" name="user_groups_view[]" multiple="multiple"
|
||||
class="select-box">
|
||||
<option value=""><?php echo __('Seleccionar Grupos'); ?></option>
|
||||
<?php /** @var \SP\Mvc\View\Components\SelectItem[] $userGroupsView */
|
||||
foreach ($userGroupsView as $userGroup): ?>
|
||||
<?php if ($userGroup->isSkip()): continue; endif; ?>
|
||||
<option
|
||||
value="<?php echo $userGroup->getId(); ?>"
|
||||
<?php echo $userGroup->isSelected() ? 'selected' : '' ?>><?php echo $userGroup->getName(); ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="tag-list-box">
|
||||
<div class="tag-list-header"><?php echo __('Editar'); ?></div>
|
||||
|
||||
<select id="user_groups_edit" name="user_groups_edit[]" multiple="multiple"
|
||||
class="select-box">
|
||||
<option value=""><?php echo __('Seleccionar Grupos'); ?></option>
|
||||
<?php /** @var \SP\Mvc\View\Components\SelectItem[] $userGroupsEdit */
|
||||
foreach ($userGroupsEdit as $userGroup): ?>
|
||||
<?php if ($userGroup->isSkip()): continue; endif; ?>
|
||||
<option
|
||||
value="<?php echo $userGroup->getId(); ?>"
|
||||
<?php echo $userGroup->isSelected() ? 'selected' : '' ?>><?php echo $userGroup->getName(); ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php if (isset($typeTemplate)) : include $this->includeTemplate($typeTemplate, 'itemshow'); endif; ?>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<input type="hidden" name="type" value="<?php echo $preset->getType(); ?>">
|
||||
<input type="hidden" name="sk" value="">
|
||||
<input type="hidden" name="isAjax" value="1">
|
||||
</form>
|
||||
<div class="action-in-box">
|
||||
<button
|
||||
class="mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-button--colored <?php echo $icons->getIconSave()->getClassButton(); ?>"
|
||||
form="frmAccountDefaultGroup" title="<?php echo $icons->getIconSave()->getTitle(); ?>">
|
||||
form="frmItemPreset" title="<?php echo $icons->getIconSave()->getTitle(); ?>">
|
||||
<i class="material-icons"><?php echo $icons->getIconSave()->getIcon(); ?></i>
|
||||
</button>
|
||||
</div>
|
||||
@@ -419,14 +419,14 @@
|
||||
<span class="mdl-list__item-primary-content">
|
||||
<i class="material-icons mdl-list__item-icon">vpn_key</i>
|
||||
<span><?php echo __('Permisos'); ?></span>
|
||||
<span class="mdl-list__item-sub-title"><?php echo __('Gestión de Permisos'); ?></span>
|
||||
<span class="mdl-list__item-sub-title"><?php echo __('Gestión de Valores por Defecto'); ?></span>
|
||||
</span>
|
||||
|
||||
<span class="mdl-list__item-secondary-action">
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="profile_permissions">
|
||||
<input type="checkbox" id="profile_permissions"
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="profile_items_preset">
|
||||
<input type="checkbox" id="profile_items_preset"
|
||||
class="mdl-switch__input"
|
||||
name="profile_permissions" <?php echo $profileData->isMgmAccountDefaultPermissions() ? 'CHECKED' : ''; ?> <?php echo $disabled; ?>/>
|
||||
name="profile_items_preset" <?php echo $profileData->isMgmItemsPreset() ? 'CHECKED' : ''; ?> <?php echo $disabled; ?>/>
|
||||
</label>
|
||||
</span>
|
||||
</li>
|
||||
|
||||
@@ -255,13 +255,13 @@ final class Acl implements ActionsInterface
|
||||
case self::AUTHTOKEN_EDIT:
|
||||
case self::AUTHTOKEN_DELETE:
|
||||
return $userProfile->isMgmApiTokens();
|
||||
case self::ACCOUNT_DEFAULT_PERMISSION:
|
||||
case self::ACCOUNT_DEFAULT_PERMISSION_SEARCH:
|
||||
case self::ACCOUNT_DEFAULT_PERMISSION_VIEW:
|
||||
case self::ACCOUNT_DEFAULT_PERMISSION_CREATE:
|
||||
case self::ACCOUNT_DEFAULT_PERMISSION_EDIT:
|
||||
case self::ACCOUNT_DEFAULT_PERMISSION_DELETE:
|
||||
return $userProfile->isMgmAccountDefaultPermissions();
|
||||
case self::ITEMPRESET:
|
||||
case self::ITEMPRESET_SEARCH:
|
||||
case self::ITEMPRESET_VIEW:
|
||||
case self::ITEMPRESET_CREATE:
|
||||
case self::ITEMPRESET_EDIT:
|
||||
case self::ITEMPRESET_DELETE:
|
||||
return $userProfile->isMgmItemsPreset();
|
||||
case self::EVENTLOG:
|
||||
case self::EVENTLOG_SEARCH:
|
||||
case self::EVENTLOG_CLEAR:
|
||||
|
||||
@@ -169,12 +169,12 @@ interface ActionsInterface
|
||||
const EVENTLOG = 1701;
|
||||
const EVENTLOG_SEARCH = 1702;
|
||||
const EVENTLOG_CLEAR = 1703;
|
||||
const ACCOUNT_DEFAULT_PERMISSION = 1801;
|
||||
const ACCOUNT_DEFAULT_PERMISSION_SEARCH = 1802;
|
||||
const ACCOUNT_DEFAULT_PERMISSION_VIEW = 1803;
|
||||
const ACCOUNT_DEFAULT_PERMISSION_CREATE = 1804;
|
||||
const ACCOUNT_DEFAULT_PERMISSION_EDIT = 1805;
|
||||
const ACCOUNT_DEFAULT_PERMISSION_DELETE = 1806;
|
||||
const ITEMPRESET = 1801;
|
||||
const ITEMPRESET_SEARCH = 1802;
|
||||
const ITEMPRESET_VIEW = 1803;
|
||||
const ITEMPRESET_CREATE = 1804;
|
||||
const ITEMPRESET_EDIT = 1805;
|
||||
const ITEMPRESET_DELETE = 1806;
|
||||
const ITEMS_MANAGE = 5001;
|
||||
const ACCESS_MANAGE = 5002;
|
||||
const USERSETTINGS = 5010;
|
||||
|
||||
35
lib/SP/Core/Exceptions/NoSuchPropertyException.php
Normal file
35
lib/SP/Core/Exceptions/NoSuchPropertyException.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?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\Core\Exceptions;
|
||||
|
||||
/**
|
||||
* Class NoSuchPropertyException
|
||||
*
|
||||
* @package SP\Core\Exceptions
|
||||
*/
|
||||
class NoSuchPropertyException extends \Exception
|
||||
{
|
||||
|
||||
}
|
||||
42
lib/SP/DataModel/HydratableInterface.php
Normal file
42
lib/SP/DataModel/HydratableInterface.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?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\DataModel;
|
||||
|
||||
/**
|
||||
* Interface HydratableInterface
|
||||
*
|
||||
* @package SP\DataModel
|
||||
*/
|
||||
interface HydratableInterface
|
||||
{
|
||||
/**
|
||||
* @param string $class
|
||||
*
|
||||
* @param string $property
|
||||
*
|
||||
* @return mixed|null
|
||||
*/
|
||||
public function hydrate(string $class = null, string $property = 'data');
|
||||
}
|
||||
@@ -24,19 +24,24 @@
|
||||
|
||||
namespace SP\DataModel;
|
||||
|
||||
use SP\Core\Exceptions\NoSuchPropertyException;
|
||||
use SP\Util\Util;
|
||||
|
||||
/**
|
||||
* Class AccountDefaultPermission
|
||||
* Class ItemPresetData
|
||||
*
|
||||
* @package SP\DataModel
|
||||
*/
|
||||
class AccountDefaultPermissionData extends DataModelBase
|
||||
class ItemPresetData extends DataModelBase implements HydratableInterface
|
||||
{
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $id;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $type;
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
@@ -60,11 +65,7 @@ class AccountDefaultPermissionData extends DataModelBase
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $permission;
|
||||
/**
|
||||
* @var AccountPermission
|
||||
*/
|
||||
private $accountPermission;
|
||||
public $data;
|
||||
|
||||
/**
|
||||
* @return int
|
||||
@@ -77,7 +78,7 @@ class AccountDefaultPermissionData extends DataModelBase
|
||||
/**
|
||||
* @param int $id
|
||||
*
|
||||
* @return AccountDefaultPermissionData
|
||||
* @return ItemPresetData
|
||||
*/
|
||||
public function setId(int $id)
|
||||
{
|
||||
@@ -97,7 +98,7 @@ class AccountDefaultPermissionData extends DataModelBase
|
||||
/**
|
||||
* @param int $userId
|
||||
*
|
||||
* @return AccountDefaultPermissionData
|
||||
* @return ItemPresetData
|
||||
*/
|
||||
public function setUserId(int $userId)
|
||||
{
|
||||
@@ -117,7 +118,7 @@ class AccountDefaultPermissionData extends DataModelBase
|
||||
/**
|
||||
* @param int $userGroupId
|
||||
*
|
||||
* @return AccountDefaultPermissionData
|
||||
* @return ItemPresetData
|
||||
*/
|
||||
public function setUserGroupId(int $userGroupId)
|
||||
{
|
||||
@@ -137,7 +138,7 @@ class AccountDefaultPermissionData extends DataModelBase
|
||||
/**
|
||||
* @param int $userProfileId
|
||||
*
|
||||
* @return AccountDefaultPermissionData
|
||||
* @return ItemPresetData
|
||||
*/
|
||||
public function setUserProfileId(int $userProfileId)
|
||||
{
|
||||
@@ -157,7 +158,7 @@ class AccountDefaultPermissionData extends DataModelBase
|
||||
/**
|
||||
* @param int $fixed
|
||||
*
|
||||
* @return AccountDefaultPermissionData
|
||||
* @return ItemPresetData
|
||||
*/
|
||||
public function setFixed(int $fixed)
|
||||
{
|
||||
@@ -177,7 +178,7 @@ class AccountDefaultPermissionData extends DataModelBase
|
||||
/**
|
||||
* @param int $priority
|
||||
*
|
||||
* @return AccountDefaultPermissionData
|
||||
* @return ItemPresetData
|
||||
*/
|
||||
public function setPriority(int $priority)
|
||||
{
|
||||
@@ -189,9 +190,17 @@ class AccountDefaultPermissionData extends DataModelBase
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getPermission()
|
||||
public function getData()
|
||||
{
|
||||
return $this->permission;
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $data
|
||||
*/
|
||||
public function setData(string $data)
|
||||
{
|
||||
$this->data = $data;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -199,39 +208,43 @@ class AccountDefaultPermissionData extends DataModelBase
|
||||
*/
|
||||
public function getHash()
|
||||
{
|
||||
return sha1((int)$this->userId . (int)$this->userGroupId . (int)$this->userProfileId . (int)$this->priority);
|
||||
return sha1($this->type . (int)$this->userId . (int)$this->userGroupId . (int)$this->userProfileId . (int)$this->priority);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return $this
|
||||
* @param string $class
|
||||
*
|
||||
* @param string $property
|
||||
*
|
||||
* @return mixed
|
||||
* @throws NoSuchPropertyException
|
||||
*/
|
||||
public function hydrate()
|
||||
public function hydrate(string $class = null, string $property = 'data')
|
||||
{
|
||||
if ($this->permission !== null) {
|
||||
$this->accountPermission = Util::unserialize(AccountPermission::class, $this->permission);
|
||||
if (property_exists($this, $property)) {
|
||||
if ($this->data !== null) {
|
||||
return $class !== null ? Util::unserialize($class, $this->data) : unserialize($this->data);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
return $this;
|
||||
throw new NoSuchPropertyException($property);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return AccountPermission
|
||||
* @return string
|
||||
*/
|
||||
public function getAccountPermission()
|
||||
public function getType()
|
||||
{
|
||||
return $this->accountPermission;
|
||||
return $this->type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param AccountPermission $accountPermission
|
||||
*
|
||||
* @return AccountDefaultPermissionData
|
||||
* @param string $type
|
||||
*/
|
||||
public function setAccountPermission(AccountPermission $accountPermission)
|
||||
public function setType(string $type)
|
||||
{
|
||||
$this->accountPermission = $accountPermission;
|
||||
$this->permission = serialize($accountPermission);
|
||||
|
||||
return $this;
|
||||
$this->type = $type;
|
||||
}
|
||||
}
|
||||
@@ -144,7 +144,7 @@ class ProfileData
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $mgmAccountDefaultPermissions = false;
|
||||
protected $mgmItemsPreset = false;
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
@@ -769,19 +769,19 @@ class ProfileData
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function isMgmAccountDefaultPermissions(): bool
|
||||
public function isMgmItemsPreset(): bool
|
||||
{
|
||||
return $this->mgmAccountDefaultPermissions;
|
||||
return $this->mgmItemsPreset;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $mgmAccountDefaultPermissions
|
||||
* @param bool $mgmItemsPreset
|
||||
*
|
||||
* @return ProfileData
|
||||
*/
|
||||
public function setMgmAccountDefaultPermissions(bool $mgmAccountDefaultPermissions)
|
||||
public function setMgmItemsPreset(bool $mgmItemsPreset)
|
||||
{
|
||||
$this->mgmAccountDefaultPermissions = $mgmAccountDefaultPermissions;
|
||||
$this->mgmItemsPreset = $mgmItemsPreset;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
@@ -22,9 +22,9 @@
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\Repositories\Account;
|
||||
namespace SP\Repositories\ItemPreset;
|
||||
|
||||
use SP\DataModel\AccountDefaultPermissionData;
|
||||
use SP\DataModel\ItemPresetData;
|
||||
use SP\DataModel\ItemSearchData;
|
||||
use SP\Repositories\Repository;
|
||||
use SP\Repositories\RepositoryItemInterface;
|
||||
@@ -37,14 +37,14 @@ use SP\Storage\Database\QueryResult;
|
||||
*
|
||||
* @package SP\Repositories\Account
|
||||
*/
|
||||
class AccountDefaultPermissionRepository extends Repository implements RepositoryItemInterface
|
||||
class ItemPresetRepository extends Repository implements RepositoryItemInterface
|
||||
{
|
||||
use RepositoryItemTrait;
|
||||
|
||||
/**
|
||||
* Creates an item
|
||||
*
|
||||
* @param AccountDefaultPermissionData $itemData
|
||||
* @param ItemPresetData $itemData
|
||||
*
|
||||
* @return int
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
@@ -54,21 +54,23 @@ class AccountDefaultPermissionRepository extends Repository implements Repositor
|
||||
{
|
||||
$queryData = new QueryData();
|
||||
$queryData->setQuery(
|
||||
'INSERT INTO AccountDefaultPermission
|
||||
SET userId = ?,
|
||||
'INSERT INTO ItemPreset
|
||||
SET type = ?,
|
||||
userId = ?,
|
||||
userGroupId = ?,
|
||||
userProfileId = ?,
|
||||
`fixed` = ?,
|
||||
priority = ?,
|
||||
permission = ?,
|
||||
`data` = ?,
|
||||
`hash` = ?');
|
||||
$queryData->setParams([
|
||||
$itemData->getType(),
|
||||
$itemData->getUserId(),
|
||||
$itemData->getUserGroupId(),
|
||||
$itemData->getUserProfileId(),
|
||||
$itemData->getFixed(),
|
||||
$itemData->getPriority(),
|
||||
$itemData->getPermission(),
|
||||
$itemData->getData(),
|
||||
$itemData->getHash()
|
||||
]);
|
||||
$queryData->setOnErrorMessage(__u('Error al crear permiso'));
|
||||
@@ -79,7 +81,7 @@ class AccountDefaultPermissionRepository extends Repository implements Repositor
|
||||
/**
|
||||
* Updates an item
|
||||
*
|
||||
* @param AccountDefaultPermissionData $itemData
|
||||
* @param ItemPresetData $itemData
|
||||
*
|
||||
* @return int
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
@@ -89,22 +91,24 @@ class AccountDefaultPermissionRepository extends Repository implements Repositor
|
||||
{
|
||||
$queryData = new QueryData();
|
||||
$queryData->setQuery(
|
||||
'UPDATE AccountDefaultPermission
|
||||
SET userId = ?,
|
||||
'UPDATE ItemPreset
|
||||
SET type = ?,
|
||||
userId = ?,
|
||||
userGroupId = ?,
|
||||
userProfileId = ?,
|
||||
`fixed` = ?,
|
||||
priority = ?,
|
||||
permission = ?,
|
||||
`data` = ?,
|
||||
`hash` = ?
|
||||
WHERE id = ? LIMIT 1');
|
||||
$queryData->setParams([
|
||||
$itemData->getType(),
|
||||
$itemData->getUserId(),
|
||||
$itemData->getUserGroupId(),
|
||||
$itemData->getUserProfileId(),
|
||||
$itemData->getFixed(),
|
||||
$itemData->getPriority(),
|
||||
$itemData->getPermission(),
|
||||
$itemData->getData(),
|
||||
$itemData->getHash(),
|
||||
$itemData->getId()
|
||||
]);
|
||||
@@ -125,7 +129,7 @@ class AccountDefaultPermissionRepository extends Repository implements Repositor
|
||||
public function delete($id)
|
||||
{
|
||||
$queryData = new QueryData();
|
||||
$queryData->setQuery('DELETE FROM AccountDefaultPermission WHERE id = ? LIMIT 1');
|
||||
$queryData->setQuery('DELETE FROM ItemPreset WHERE id = ? LIMIT 1');
|
||||
$queryData->setParams([$id]);
|
||||
$queryData->setOnErrorMessage(__u('Error al eliminar permiso'));
|
||||
|
||||
@@ -144,10 +148,10 @@ class AccountDefaultPermissionRepository extends Repository implements Repositor
|
||||
public function getById($id)
|
||||
{
|
||||
$queryData = new QueryData();
|
||||
$queryData->setMapClassName(AccountDefaultPermissionData::class);
|
||||
$queryData->setMapClassName(ItemPresetData::class);
|
||||
$queryData->setQuery(
|
||||
'SELECT id, userId, userGroupId, userProfileId, `fixed`, priority, permission
|
||||
FROM AccountDefaultPermission WHERE id = ? LIMIT 1');
|
||||
'SELECT id, type, userId, userGroupId, userProfileId, `fixed`, priority, `data`
|
||||
FROM ItemPreset WHERE id = ? LIMIT 1');
|
||||
$queryData->setParams([$id]);
|
||||
|
||||
return $this->db->doSelect($queryData);
|
||||
@@ -156,26 +160,27 @@ class AccountDefaultPermissionRepository extends Repository implements Repositor
|
||||
/**
|
||||
* Returns the item for given id
|
||||
*
|
||||
* @param int $userId
|
||||
* @param int $userGroupId
|
||||
* @param int $userProfileId
|
||||
* @param string $type
|
||||
* @param int $userId
|
||||
* @param int $userGroupId
|
||||
* @param int $userProfileId
|
||||
*
|
||||
* @return QueryResult
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function getByFilter(int $userId, int $userGroupId, int $userProfileId)
|
||||
public function getByFilter(string $type, int $userId, int $userGroupId, int $userProfileId)
|
||||
{
|
||||
$queryData = new QueryData();
|
||||
$queryData->setMapClassName(AccountDefaultPermissionData::class);
|
||||
$queryData->setMapClassName(ItemPresetData::class);
|
||||
$queryData->setQuery(
|
||||
'SELECT id, userId, userGroupId, userProfileId, `fixed`, priority, permission
|
||||
FROM AccountDefaultPermission
|
||||
WHERE userId = ? OR userGroupId = ? OR userProfileId = ?
|
||||
'SELECT id, type, userId, userGroupId, userProfileId, `fixed`, priority, `data`
|
||||
FROM ItemPreset
|
||||
WHERE type = ? AND (userId = ? OR userGroupId = ? OR userProfileId = ?)
|
||||
ORDER BY priority DESC, userId DESC, userProfileId DESC, userGroupId DESC
|
||||
LIMIT 1');
|
||||
|
||||
$queryData->setParams([$userId, $userGroupId, $userProfileId]);
|
||||
$queryData->setParams([$type, $userId, $userGroupId, $userProfileId]);
|
||||
|
||||
return $this->db->doSelect($queryData);
|
||||
}
|
||||
@@ -190,10 +195,10 @@ class AccountDefaultPermissionRepository extends Repository implements Repositor
|
||||
public function getAll()
|
||||
{
|
||||
$queryData = new QueryData();
|
||||
$queryData->setMapClassName(AccountDefaultPermissionData::class);
|
||||
$queryData->setMapClassName(ItemPresetData::class);
|
||||
$queryData->setQuery(
|
||||
'SELECT id, userId, userGroupId, userProfileId, `fixed`, priority, permission
|
||||
FROM AccountDefaultPermission');
|
||||
'SELECT id, type, userId, userGroupId, userProfileId, `fixed`, priority, `data`
|
||||
FROM ItemPreset');
|
||||
|
||||
return $this->db->doSelect($queryData);
|
||||
}
|
||||
@@ -214,10 +219,10 @@ class AccountDefaultPermissionRepository extends Repository implements Repositor
|
||||
}
|
||||
|
||||
$queryData = new QueryData();
|
||||
$queryData->setMapClassName(AccountDefaultPermissionData::class);
|
||||
$queryData->setMapClassName(ItemPresetData::class);
|
||||
$queryData->setQuery(
|
||||
'SELECT userId, userGroupId, userProfileId, `fixed`, priority, permission
|
||||
FROM AccountDefaultPermission WHERE id IN (' . $this->getParamsFromArray($ids) . ')');
|
||||
'SELECT type, userId, userGroupId, userProfileId, `fixed`, priority, `data`
|
||||
FROM ItemPreset WHERE id IN (' . $this->getParamsFromArray($ids) . ')');
|
||||
$queryData->setParams($ids);
|
||||
|
||||
return $this->db->doSelect($queryData);
|
||||
@@ -239,7 +244,7 @@ class AccountDefaultPermissionRepository extends Repository implements Repositor
|
||||
}
|
||||
|
||||
$queryData = new QueryData();
|
||||
$queryData->setQuery('DELETE FROM AccountDefaultPermission WHERE id IN (' . $this->getParamsFromArray($ids) . ')');
|
||||
$queryData->setQuery('DELETE FROM ItemPreset WHERE id IN (' . $this->getParamsFromArray($ids) . ')');
|
||||
$queryData->setParams($ids);
|
||||
$queryData->setOnErrorMessage(__u('Error al eliminar los permisos'));
|
||||
|
||||
@@ -289,30 +294,32 @@ class AccountDefaultPermissionRepository extends Repository implements Repositor
|
||||
{
|
||||
$queryData = new QueryData();
|
||||
$queryData->setSelect(
|
||||
'ADP.id,
|
||||
ADP.userId,
|
||||
ADP.userGroupId,
|
||||
ADP.userProfileId,
|
||||
ADP.`fixed`,
|
||||
ADP.priority,
|
||||
ADP.permission,
|
||||
'IP.id,
|
||||
IP.type,
|
||||
IP.userId,
|
||||
IP.userGroupId,
|
||||
IP.userProfileId,
|
||||
IP.`fixed`,
|
||||
IP.priority,
|
||||
IP.data,
|
||||
U.name AS userName,
|
||||
UP.name AS userProfileName,
|
||||
UG.name AS userGroupName');
|
||||
$queryData->setFrom('
|
||||
AccountDefaultPermission ADP
|
||||
LEFT JOIN User U ON ADP.userId = U.id
|
||||
LEFT JOIN UserProfile UP ON ADP.userProfileId = UP.id
|
||||
LEFT JOIN UserGroup UG ON ADP.userGroupId = UG.id');
|
||||
$queryData->setOrder('id');
|
||||
ItemPreset IP
|
||||
LEFT JOIN User U ON IP.userId = U.id
|
||||
LEFT JOIN UserProfile UP ON IP.userProfileId = UP.id
|
||||
LEFT JOIN UserGroup UG ON IP.userGroupId = UG.id');
|
||||
$queryData->setOrder('IP.type, IP.priority DESC, IP.userId DESC, IP.userProfileId DESC, IP.userGroupId DESC');
|
||||
|
||||
if ($itemSearchData->getSeachString() !== '') {
|
||||
$queryData->setWhere('U.name LIKE ? OR UP.name LIKE ? OR UG.name LIKE ?');
|
||||
$queryData->setWhere('IP.type LIKE ? OR U.name LIKE ? OR UP.name LIKE ? OR UG.name LIKE ?');
|
||||
|
||||
$search = '%' . $itemSearchData->getSeachString() . '%';
|
||||
$queryData->addParam($search);
|
||||
$queryData->addParam($search);
|
||||
$queryData->addParam($search);
|
||||
$queryData->addParam($search);
|
||||
}
|
||||
|
||||
$queryData->setLimit('?,?');
|
||||
@@ -321,14 +328,4 @@ class AccountDefaultPermissionRepository extends Repository implements Repositor
|
||||
|
||||
return $this->db->doSelect($queryData, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param AccountDefaultPermissionData $data
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private function getHash(AccountDefaultPermissionData $data)
|
||||
{
|
||||
return sha1((int)$data->getUserId() . (int)$data->getUserGroupId() . (int)$data->getUserProfileId() . (int)$data->getPriority());
|
||||
}
|
||||
}
|
||||
@@ -31,6 +31,7 @@ use SP\Core\Exceptions\SPException;
|
||||
use SP\DataModel\AccountData;
|
||||
use SP\DataModel\AccountHistoryData;
|
||||
use SP\DataModel\AccountPassData;
|
||||
use SP\DataModel\AccountPermission;
|
||||
use SP\DataModel\AccountSearchVData;
|
||||
use SP\DataModel\Dto\AccountDetailsResponse;
|
||||
use SP\DataModel\Dto\AccountHistoryCreateDto;
|
||||
@@ -41,6 +42,8 @@ use SP\Repositories\Account\AccountToUserGroupRepository;
|
||||
use SP\Repositories\Account\AccountToUserRepository;
|
||||
use SP\Repositories\NoSuchItemException;
|
||||
use SP\Services\Config\ConfigService;
|
||||
use SP\Services\ItemPreset\ItemPresetInterface;
|
||||
use SP\Services\ItemPreset\ItemPresetService;
|
||||
use SP\Services\Service;
|
||||
use SP\Services\ServiceException;
|
||||
use SP\Services\ServiceItemTrait;
|
||||
@@ -72,9 +75,9 @@ final class AccountService extends Service implements AccountServiceInterface
|
||||
*/
|
||||
protected $accountToTagRepository;
|
||||
/**
|
||||
* @var AccountDefaultPermissionService
|
||||
* @var ItemPresetService
|
||||
*/
|
||||
protected $accountDefaultPermissionService;
|
||||
protected $itemPresetService;
|
||||
|
||||
/**
|
||||
* @param int $id
|
||||
@@ -293,16 +296,17 @@ final class AccountService extends Service implements AccountServiceInterface
|
||||
*
|
||||
* @throws QueryException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\NoSuchPropertyException
|
||||
*/
|
||||
private function addDefaultPermissions(int $accountId)
|
||||
{
|
||||
$accountDefaultPermission = $this->accountDefaultPermissionService->getForCurrentUser();
|
||||
$itemPresetData = $this->itemPresetService->getForCurrentUser(ItemPresetInterface::ITEM_TYPE_PERMISSION);
|
||||
|
||||
if ($accountDefaultPermission !== null
|
||||
&& $accountDefaultPermission->getFixed()
|
||||
if ($itemPresetData !== null
|
||||
&& $itemPresetData->getFixed()
|
||||
) {
|
||||
$userData = $this->context->getUserData();
|
||||
$accountPermission = $accountDefaultPermission->getAccountPermission();
|
||||
$accountPermission = $itemPresetData->hydrate(AccountPermission::class);
|
||||
|
||||
$accountRequest = new AccountRequest();
|
||||
$accountRequest->id = $accountId;
|
||||
@@ -694,6 +698,6 @@ final class AccountService extends Service implements AccountServiceInterface
|
||||
$this->accountToUserRepository = $this->dic->get(AccountToUserRepository::class);
|
||||
$this->accountToUserGroupRepository = $this->dic->get(AccountToUserGroupRepository::class);
|
||||
$this->accountToTagRepository = $this->dic->get(AccountToTagRepository::class);
|
||||
$this->accountDefaultPermissionService = $this->dic->get(AccountDefaultPermissionService::class);
|
||||
$this->itemPresetService = $this->dic->get(ItemPresetService::class);
|
||||
}
|
||||
}
|
||||
@@ -57,7 +57,7 @@ final class Installer extends Service
|
||||
*/
|
||||
const VERSION = [3, 0, 0];
|
||||
const VERSION_TEXT = '3.0-beta';
|
||||
const BUILD = 18083001;
|
||||
const BUILD = 18083002;
|
||||
|
||||
/**
|
||||
* @var DatabaseSetupInterface
|
||||
|
||||
38
lib/SP/Services/ItemPreset/ItemPresetInterface.php
Normal file
38
lib/SP/Services/ItemPreset/ItemPresetInterface.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?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\Services\ItemPreset;
|
||||
|
||||
/**
|
||||
* Interface ItemPresetInterface
|
||||
*
|
||||
* @package SP\Services\ItemPreset
|
||||
*/
|
||||
interface ItemPresetInterface
|
||||
{
|
||||
const ITEM_TYPE_PERMISSION = 'permission';
|
||||
const ITEM_TYPE_TAGS = 'tag';
|
||||
const ITEM_TYPE_PASSWORD = 'password';
|
||||
const ITEM_TYPE_PRIVATE_ACCOUNT = 'private_account';
|
||||
}
|
||||
83
lib/SP/Services/ItemPreset/ItemPresetRequest.php
Normal file
83
lib/SP/Services/ItemPreset/ItemPresetRequest.php
Normal file
@@ -0,0 +1,83 @@
|
||||
<?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\Services\ItemPreset;
|
||||
|
||||
use SP\DataModel\ItemPresetData;
|
||||
|
||||
|
||||
/**
|
||||
* Class ItemPresetRequest
|
||||
*
|
||||
* @package SP\Services\ItemPreset
|
||||
*/
|
||||
class ItemPresetRequest
|
||||
{
|
||||
/**
|
||||
* @var ItemPresetData
|
||||
*/
|
||||
private $itemPresetData;
|
||||
/**
|
||||
* @var mixed
|
||||
*/
|
||||
private $data;
|
||||
|
||||
/**
|
||||
* ItemPresetRequest constructor.
|
||||
*
|
||||
* @param ItemPresetData $itemPresetData
|
||||
* @param mixed $data
|
||||
*/
|
||||
public function __construct(ItemPresetData $itemPresetData, $data)
|
||||
{
|
||||
$this->itemPresetData = $itemPresetData;
|
||||
$this->data = $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ItemPresetData
|
||||
*/
|
||||
public function getItemPresetData(): ItemPresetData
|
||||
{
|
||||
return $this->itemPresetData;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getData()
|
||||
{
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ItemPresetData
|
||||
*/
|
||||
public function prepareToPersist()
|
||||
{
|
||||
$this->itemPresetData->setData(serialize($this->data));
|
||||
|
||||
return $this->itemPresetData;
|
||||
}
|
||||
}
|
||||
@@ -22,50 +22,50 @@
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\Services\Account;
|
||||
namespace SP\Services\ItemPreset;
|
||||
|
||||
use SP\DataModel\AccountDefaultPermissionData;
|
||||
use SP\DataModel\ItemPresetData;
|
||||
use SP\DataModel\ItemSearchData;
|
||||
use SP\Repositories\Account\AccountDefaultPermissionRepository;
|
||||
use SP\Repositories\ItemPreset\ItemPresetRepository;
|
||||
use SP\Repositories\NoSuchItemException;
|
||||
use SP\Services\Service;
|
||||
use SP\Services\ServiceException;
|
||||
use SP\Storage\Database\QueryResult;
|
||||
|
||||
/**
|
||||
* Class AccountDefaultPermissionService
|
||||
* Class ItemPresetService
|
||||
*
|
||||
* @package SP\Services\Account
|
||||
*/
|
||||
class AccountDefaultPermissionService extends Service
|
||||
class ItemPresetService extends Service
|
||||
{
|
||||
/**
|
||||
* @var AccountDefaultPermissionRepository
|
||||
* @var ItemPresetRepository
|
||||
*/
|
||||
private $accountDefaultPermissionRepository;
|
||||
private $itemPresetRepository;
|
||||
|
||||
/**
|
||||
* @param AccountDefaultPermissionData $accountDefaultPermissionData
|
||||
* @param ItemPresetRequest $itemPresetRequest
|
||||
*
|
||||
* @return int
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function create(AccountDefaultPermissionData $accountDefaultPermissionData)
|
||||
public function create(ItemPresetRequest $itemPresetRequest)
|
||||
{
|
||||
return $this->accountDefaultPermissionRepository->create($accountDefaultPermissionData);
|
||||
return $this->itemPresetRepository->create($itemPresetRequest->prepareToPersist());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param AccountDefaultPermissionData $accountDefaultPermissionData
|
||||
* @param ItemPresetRequest $itemPresetRequest
|
||||
*
|
||||
* @return int
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function update(AccountDefaultPermissionData $accountDefaultPermissionData)
|
||||
public function update(ItemPresetRequest $itemPresetRequest)
|
||||
{
|
||||
return $this->accountDefaultPermissionRepository->update($accountDefaultPermissionData);
|
||||
return $this->itemPresetRepository->update($itemPresetRequest->prepareToPersist());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -73,15 +73,15 @@ class AccountDefaultPermissionService extends Service
|
||||
*
|
||||
* @param $id
|
||||
*
|
||||
* @return AccountDefaultPermissionService
|
||||
* @return ItemPresetService
|
||||
* @throws NoSuchItemException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function delete($id)
|
||||
{
|
||||
if ($this->accountDefaultPermissionRepository->delete($id) === 0) {
|
||||
throw new NoSuchItemException(__u('Permiso no encontrada'));
|
||||
if ($this->itemPresetRepository->delete($id) === 0) {
|
||||
throw new NoSuchItemException(__u('Valor no encontrada'));
|
||||
}
|
||||
|
||||
return $this;
|
||||
@@ -92,35 +92,32 @@ class AccountDefaultPermissionService extends Service
|
||||
*
|
||||
* @param int $id
|
||||
*
|
||||
* @return AccountDefaultPermissionData
|
||||
* @return ItemPresetData
|
||||
* @throws NoSuchItemException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function getById($id)
|
||||
{
|
||||
$result = $this->accountDefaultPermissionRepository->getById($id);
|
||||
$result = $this->itemPresetRepository->getById($id);
|
||||
|
||||
if ($result->getNumRows() === 0) {
|
||||
throw new NoSuchItemException(__u('Permiso no encontrada'));
|
||||
throw new NoSuchItemException(__u('Valor no encontrada'));
|
||||
}
|
||||
|
||||
/** @var AccountDefaultPermissionData $data */
|
||||
$data = $result->getData();
|
||||
|
||||
return $data->hydrate();
|
||||
return $result->getData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the items
|
||||
*
|
||||
* @return AccountDefaultPermissionData[]
|
||||
* @return ItemPresetData[]
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function getAll()
|
||||
{
|
||||
return $this->accountDefaultPermissionRepository->getAll()->getDataAsArray();
|
||||
return $this->itemPresetRepository->getAll()->getDataAsArray();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -134,40 +131,44 @@ class AccountDefaultPermissionService extends Service
|
||||
*/
|
||||
public function search(ItemSearchData $itemSearchData)
|
||||
{
|
||||
return $this->accountDefaultPermissionRepository->search($itemSearchData);
|
||||
return $this->itemPresetRepository->search($itemSearchData);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return AccountDefaultPermissionData
|
||||
* @param string $type
|
||||
*
|
||||
* @return ItemPresetData
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function getForCurrentUser()
|
||||
public function getForCurrentUser(string $type)
|
||||
{
|
||||
$userData = $this->context->getUserData();
|
||||
|
||||
return $this->getForUser($userData->getId(), $userData->getUserGroupId(), $userData->getUserProfileId());
|
||||
return $this->getForUser($type, $userData->getId(), $userData->getUserGroupId(), $userData->getUserProfileId());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $userId
|
||||
* @param int $userGroupId
|
||||
* @param int $userProfileId
|
||||
* @param string $type
|
||||
* @param int $userId
|
||||
* @param int $userGroupId
|
||||
* @param int $userProfileId
|
||||
*
|
||||
* @return AccountDefaultPermissionData
|
||||
* @return ItemPresetData
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function getForUser(int $userId, int $userGroupId, int $userProfileId)
|
||||
public function getForUser(string $type, int $userId, int $userGroupId, int $userProfileId)
|
||||
{
|
||||
$result = $this->accountDefaultPermissionRepository->getByFilter(
|
||||
$result = $this->itemPresetRepository->getByFilter(
|
||||
$type,
|
||||
$userId,
|
||||
$userGroupId,
|
||||
$userProfileId
|
||||
);
|
||||
|
||||
if ($result->getNumRows() === 1) {
|
||||
return $result->getData()->hydrate();
|
||||
return $result->getData();
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -183,8 +184,8 @@ class AccountDefaultPermissionService extends Service
|
||||
*/
|
||||
public function deleteByIdBatch(array $ids)
|
||||
{
|
||||
if (($count = $this->accountDefaultPermissionRepository->deleteByIdBatch($ids)) !== count($ids)) {
|
||||
throw new ServiceException(__u('Error al eliminar los permisos'), ServiceException::WARNING);
|
||||
if (($count = $this->itemPresetRepository->deleteByIdBatch($ids)) !== count($ids)) {
|
||||
throw new ServiceException(__u('Error al eliminar los valores'), ServiceException::WARNING);
|
||||
}
|
||||
|
||||
return $count;
|
||||
@@ -192,6 +193,6 @@ class AccountDefaultPermissionService extends Service
|
||||
|
||||
protected function initialize()
|
||||
{
|
||||
$this->accountDefaultPermissionRepository = $this->dic->get(AccountDefaultPermissionRepository::class);
|
||||
$this->itemPresetRepository = $this->dic->get(ItemPresetRepository::class);
|
||||
}
|
||||
}
|
||||
@@ -45,7 +45,7 @@ final class UpgradeDatabaseService extends Service implements UpgradeInterface
|
||||
/**
|
||||
* @var array Versiones actualizables
|
||||
*/
|
||||
const UPGRADES = ['300.18010101', '300.18072302', '300.18072501', '300.18083001'];
|
||||
const UPGRADES = ['300.18010101', '300.18072302', '300.18072501', '300.18083001', '300.18083002'];
|
||||
|
||||
/**
|
||||
* @var Database
|
||||
@@ -72,6 +72,7 @@ final class UpgradeDatabaseService extends Service implements UpgradeInterface
|
||||
*
|
||||
* @return bool
|
||||
* @throws UpgradeException
|
||||
* @throws FileException
|
||||
*/
|
||||
public function upgrade($version, ConfigData $configData)
|
||||
{
|
||||
|
||||
@@ -87,11 +87,12 @@ final class QueryResult
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
* @param string $class
|
||||
*
|
||||
* @return mixed|null
|
||||
*/
|
||||
public function getData()
|
||||
public function getData(string $class = null)
|
||||
{
|
||||
// FIXME
|
||||
if ($this->numRows === 1) {
|
||||
return $this->data[0];
|
||||
}
|
||||
|
||||
53
schemas/30018083002.sql
Normal file
53
schemas/30018083002.sql
Normal file
@@ -0,0 +1,53 @@
|
||||
DELIMITER $$
|
||||
|
||||
ALTER TABLE AccountDefaultPermission
|
||||
CHANGE permission data blob $$
|
||||
DROP INDEX uk_AccountDefaultPermission_01
|
||||
ON AccountDefaultPermission $$
|
||||
ALTER TABLE AccountDefaultPermission
|
||||
DROP FOREIGN KEY fk_AccountDefaultPermission_userProfileId $$
|
||||
ALTER TABLE AccountDefaultPermission
|
||||
DROP FOREIGN KEY fk_AccountDefaultPermission_userGroupId $$
|
||||
ALTER TABLE AccountDefaultPermission
|
||||
DROP FOREIGN KEY fk_AccountDefaultPermission_userId $$
|
||||
DROP INDEX fk_AccountDefaultPermission_userProfileId
|
||||
ON AccountDefaultPermission $$
|
||||
DROP INDEX fk_AccountDefaultPermission_userGroupId
|
||||
ON AccountDefaultPermission $$
|
||||
DROP INDEX fk_AccountDefaultPermission_userId
|
||||
ON AccountDefaultPermission $$
|
||||
ALTER TABLE AccountDefaultPermission
|
||||
RENAME TO ItemPreset $$
|
||||
ALTER TABLE ItemPreset
|
||||
ADD type varchar(25) NOT NULL $$
|
||||
ALTER TABLE ItemPreset
|
||||
MODIFY COLUMN type varchar(25) NOT NULL
|
||||
AFTER id $$
|
||||
CREATE UNIQUE INDEX uk_ItemPreset_01
|
||||
ON ItemPreset (hash) $$
|
||||
CREATE INDEX fk_ItemPreset_userId
|
||||
ON ItemPreset (userId) $$
|
||||
CREATE INDEX fk_ItemPreset_userGroupId
|
||||
ON ItemPreset (userGroupId) $$
|
||||
CREATE INDEX fk_ItemPreset_userProfileId
|
||||
ON ItemPreset (userProfileId) $$
|
||||
ALTER TABLE ItemPreset
|
||||
ADD CONSTRAINT fk_ItemPreset_userId
|
||||
FOREIGN KEY (userId) REFERENCES User (id)
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE CASCADE $$
|
||||
ALTER TABLE ItemPreset
|
||||
ADD CONSTRAINT fk_ItemPreset_userGroupId
|
||||
FOREIGN KEY (userGroupId) REFERENCES UserGroup (id)
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE CASCADE $$
|
||||
ALTER TABLE ItemPreset
|
||||
ADD CONSTRAINT fk_ItemPreset_userProfileId
|
||||
FOREIGN KEY (userProfileId) REFERENCES UserProfile (id)
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE CASCADE $$
|
||||
UPDATE ItemPreset
|
||||
SET type = 'permission'
|
||||
WHERE type = '' $$
|
||||
UPDATE ItemPreset
|
||||
set hash = sha1(CONCAT(type, coalesce(userId, 0), coalesce(userGroupId, 0), coalesce(userProfileId, 0), priority)) $$
|
||||
@@ -51,29 +51,30 @@ CREATE TABLE `Account` (
|
||||
ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
DROP TABLE IF EXISTS `AccountDefaultPermission`;
|
||||
DROP TABLE IF EXISTS `ItemPreset`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `AccountDefaultPermission`
|
||||
CREATE TABLE `ItemPreset`
|
||||
(
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`type` varchar(25) not null,
|
||||
`userId` smallint(5) unsigned,
|
||||
`userGroupId` smallint(5) unsigned,
|
||||
`userProfileId` smallint(5) unsigned,
|
||||
`fixed` tinyint(1) unsigned DEFAULT 0 NOT NULL,
|
||||
`priority` tinyint(3) unsigned DEFAULT 0 NOT NULL,
|
||||
`permission` blob,
|
||||
`hash` varbinary(40) NOT NULL,
|
||||
UNIQUE INDEX `uk_AccountDefaultPermission_01` (`hash`),
|
||||
CONSTRAINT `fk_AccountDefaultPermission_userId`
|
||||
`data` blob,
|
||||
`hash` varbinary(40) NOT NULL,
|
||||
UNIQUE INDEX `uk_ItemPreset_01` (`hash`),
|
||||
CONSTRAINT `fk_ItemPreset_userId`
|
||||
FOREIGN KEY (`userId`) REFERENCES `User` (`id`)
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE CASCADE,
|
||||
CONSTRAINT `fk_AccountDefaultPermission_userGroupId`
|
||||
CONSTRAINT `fk_ItemPreset_userGroupId`
|
||||
FOREIGN KEY (`userGroupId`) REFERENCES `UserGroup` (`id`)
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE CASCADE,
|
||||
CONSTRAINT `fk_AccountDefaultPermission_userProfileId`
|
||||
CONSTRAINT `fk_ItemPreset_userProfileId`
|
||||
FOREIGN KEY (`userProfileId`) REFERENCES `UserProfile` (`id`)
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE CASCADE,
|
||||
|
||||
@@ -25,22 +25,22 @@
|
||||
namespace SP\Tests\Repositories;
|
||||
|
||||
use SP\Core\Exceptions\ConstraintException;
|
||||
use SP\DataModel\AccountDefaultPermissionData;
|
||||
use SP\DataModel\ItemPresetData;
|
||||
use SP\DataModel\ItemSearchData;
|
||||
use SP\Repositories\Account\AccountDefaultPermissionRepository;
|
||||
use SP\Repositories\ItemPreset\ItemPresetRepository;
|
||||
use SP\Storage\Database\DatabaseConnectionData;
|
||||
use SP\Tests\DatabaseTestCase;
|
||||
use function SP\Tests\setupContext;
|
||||
|
||||
/**
|
||||
* Class AccountDefaultPermissionRepositoryTest
|
||||
* Class ItemPresetRepositoryTest
|
||||
*
|
||||
* @package SP\Tests\Repositories
|
||||
*/
|
||||
class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
class ItemPresetRepositoryTest extends DatabaseTestCase
|
||||
{
|
||||
/**
|
||||
* @var AccountDefaultPermissionRepository
|
||||
* @var ItemPresetRepository
|
||||
*/
|
||||
private static $repository;
|
||||
|
||||
@@ -53,13 +53,13 @@ class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
{
|
||||
$dic = setupContext();
|
||||
|
||||
self::$dataset = 'syspass_accountDefaultPermission.xml';
|
||||
self::$dataset = 'syspass_itemPreset.xml';
|
||||
|
||||
// Datos de conexión a la BBDD
|
||||
self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class);
|
||||
|
||||
// Inicializar el repositorio
|
||||
self::$repository = $dic->get(AccountDefaultPermissionRepository::class);
|
||||
self::$repository = $dic->get(ItemPresetRepository::class);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -70,7 +70,7 @@ class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
{
|
||||
$this->assertEquals(3, self::$repository->deleteByIdBatch([1, 2, 3, 10]));
|
||||
|
||||
$this->assertEquals(2, $this->conn->getRowCount('AccountDefaultPermission'));
|
||||
$this->assertEquals(2, $this->conn->getRowCount('ItemPreset'));
|
||||
|
||||
$this->assertEquals(0, self::$repository->deleteByIdBatch([]));
|
||||
}
|
||||
@@ -87,7 +87,7 @@ class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
|
||||
$this->assertEquals(0, self::$repository->delete(10));
|
||||
|
||||
$this->assertEquals(3, $this->conn->getRowCount('AccountDefaultPermission'));
|
||||
$this->assertEquals(3, $this->conn->getRowCount('ItemPreset'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -107,12 +107,13 @@ class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
*/
|
||||
public function testUpdate()
|
||||
{
|
||||
$data = new AccountDefaultPermissionData();
|
||||
$data = new ItemPresetData();
|
||||
$data->id = 1;
|
||||
$data->userGroupId = 1;
|
||||
$data->fixed = 1;
|
||||
$data->priority = 1;
|
||||
$data->permission = 'data';
|
||||
$data->data = 'data';
|
||||
$data->type = 'permission';
|
||||
|
||||
self::$repository->update($data);
|
||||
|
||||
@@ -127,12 +128,13 @@ class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
{
|
||||
$this->expectException(ConstraintException::class);
|
||||
|
||||
$data = new AccountDefaultPermissionData();
|
||||
$data = new ItemPresetData();
|
||||
$data->id = 1;
|
||||
$data->userGroupId = 1;
|
||||
$data->fixed = 1;
|
||||
$data->priority = 10;
|
||||
$data->permission = 'data';
|
||||
$data->data = 'data';
|
||||
$data->type = 'permission';
|
||||
|
||||
self::$repository->update($data);
|
||||
}
|
||||
@@ -145,9 +147,13 @@ class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
{
|
||||
$this->expectException(ConstraintException::class);
|
||||
|
||||
$data = new AccountDefaultPermissionData();
|
||||
$data = new ItemPresetData();
|
||||
$data->id = 2;
|
||||
$data->userId = 10;
|
||||
$data->fixed = 1;
|
||||
$data->priority = 1;
|
||||
$data->data = 'data';
|
||||
$data->type = 'permission';
|
||||
|
||||
self::$repository->update($data);
|
||||
}
|
||||
@@ -160,9 +166,13 @@ class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
{
|
||||
$this->expectException(ConstraintException::class);
|
||||
|
||||
$data = new AccountDefaultPermissionData();
|
||||
$data = new ItemPresetData();
|
||||
$data->id = 2;
|
||||
$data->userGroupId = 10;
|
||||
$data->fixed = 1;
|
||||
$data->priority = 1;
|
||||
$data->data = 'data';
|
||||
$data->type = 'permission';
|
||||
|
||||
self::$repository->update($data);
|
||||
}
|
||||
@@ -175,9 +185,13 @@ class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
{
|
||||
$this->expectException(ConstraintException::class);
|
||||
|
||||
$data = new AccountDefaultPermissionData();
|
||||
$data = new ItemPresetData();
|
||||
$data->id = 2;
|
||||
$data->userProfileId = 10;
|
||||
$data->fixed = 1;
|
||||
$data->priority = 1;
|
||||
$data->data = 'data';
|
||||
$data->type = 'permission';
|
||||
|
||||
self::$repository->update($data);
|
||||
}
|
||||
@@ -188,12 +202,13 @@ class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
*/
|
||||
public function testUpdateUnknownId()
|
||||
{
|
||||
$data = new AccountDefaultPermissionData();
|
||||
$data = new ItemPresetData();
|
||||
$data->id = 10;
|
||||
$data->userGroupId = 1;
|
||||
$data->fixed = 1;
|
||||
$data->priority = 1;
|
||||
$data->permission = 'data';
|
||||
$data->data = 'data';
|
||||
$data->type = 'permission';
|
||||
|
||||
self::$repository->update($data);
|
||||
|
||||
@@ -206,11 +221,12 @@ class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
*/
|
||||
public function testGetById()
|
||||
{
|
||||
$data = new AccountDefaultPermissionData();
|
||||
$data = new ItemPresetData();
|
||||
$data->id = 1;
|
||||
$data->userId = 1;
|
||||
$data->fixed = 0;
|
||||
$data->priority = 0;
|
||||
$data->type = 'permission';
|
||||
|
||||
$result = self::$repository->getById(1);
|
||||
|
||||
@@ -224,29 +240,32 @@ class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
*/
|
||||
public function testGetAll()
|
||||
{
|
||||
$count = $this->conn->getRowCount('AccountDefaultPermission');
|
||||
$count = $this->conn->getRowCount('ItemPreset');
|
||||
|
||||
$result = self::$repository->getAll();
|
||||
$this->assertEquals($count, $result->getNumRows());
|
||||
|
||||
/** @var AccountDefaultPermissionData[] $data */
|
||||
/** @var ItemPresetData[] $data */
|
||||
$data = $result->getDataAsArray();
|
||||
$this->assertCount($count, $data);
|
||||
|
||||
$this->assertInstanceOf(AccountDefaultPermissionData::class, $data[0]);
|
||||
$this->assertInstanceOf(ItemPresetData::class, $data[0]);
|
||||
$this->assertEquals(1, $data[0]->getId());
|
||||
$this->assertEquals('permission', $data[0]->getType());
|
||||
$this->assertEquals(1, $data[0]->getUserId());
|
||||
$this->assertNull($data[0]->getUserGroupId());
|
||||
$this->assertNull($data[0]->getUserProfileId());
|
||||
$this->assertNull($data[0]->getPermission());
|
||||
$this->assertNull($data[0]->getData());
|
||||
$this->assertEquals(0, $data[0]->getFixed());
|
||||
$this->assertEquals(0, $data[0]->getPriority());
|
||||
|
||||
$this->assertInstanceOf(AccountDefaultPermissionData::class, $data[1]);
|
||||
$this->assertInstanceOf(ItemPresetData::class, $data[1]);
|
||||
$this->assertEquals(2, $data[1]->getId());
|
||||
$this->assertEquals('permission', $data[1]->getType());
|
||||
|
||||
$this->assertInstanceOf(AccountDefaultPermissionData::class, $data[2]);
|
||||
$this->assertInstanceOf(ItemPresetData::class, $data[2]);
|
||||
$this->assertEquals(3, $data[2]->getId());
|
||||
$this->assertEquals('permission', $data[2]->getType());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -267,10 +286,11 @@ class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
$this->assertCount(1, $data);
|
||||
$this->assertInstanceOf(\stdClass::class, $data[0]);
|
||||
$this->assertEquals(4, $data[0]->id);
|
||||
$this->assertEquals('permission', $data[0]->type);
|
||||
$this->assertEquals(2, $data[0]->userId);
|
||||
$this->assertNull($data[0]->userGroupId);
|
||||
$this->assertNull($data[0]->userProfileId);
|
||||
$this->assertNull($data[0]->permission);
|
||||
$this->assertNull($data[0]->data);
|
||||
$this->assertEquals(0, $data[0]->fixed);
|
||||
$this->assertEquals(0, $data[0]->priority);
|
||||
$this->assertEquals('sysPass demo', $data[0]->userName);
|
||||
@@ -287,10 +307,11 @@ class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
$this->assertCount(1, $data);
|
||||
$this->assertInstanceOf(\stdClass::class, $data[0]);
|
||||
$this->assertEquals(2, $data[0]->id);
|
||||
$this->assertEquals('permission', $data[0]->type);
|
||||
$this->assertNull($data[0]->userId);
|
||||
$this->assertEquals(1, $data[0]->userGroupId);
|
||||
$this->assertNull($data[0]->userProfileId);
|
||||
$this->assertNull($data[0]->permission);
|
||||
$this->assertNull($data[0]->data);
|
||||
$this->assertEquals(0, $data[0]->fixed);
|
||||
$this->assertEquals(10, $data[0]->priority);
|
||||
$this->assertEquals('Admins', $data[0]->userGroupName);
|
||||
@@ -307,10 +328,11 @@ class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
$this->assertCount(1, $data);
|
||||
$this->assertInstanceOf(\stdClass::class, $data[0]);
|
||||
$this->assertEquals(5, $data[0]->id);
|
||||
$this->assertEquals('permission', $data[0]->type);
|
||||
$this->assertNull($data[0]->userId);
|
||||
$this->assertNull($data[0]->userGroupId);
|
||||
$this->assertEquals(3, $data[0]->userProfileId);
|
||||
$this->assertNull($data[0]->permission);
|
||||
$this->assertNull($data[0]->data);
|
||||
$this->assertEquals(0, $data[0]->fixed);
|
||||
$this->assertEquals(10, $data[0]->priority);
|
||||
$this->assertEquals('Usuarios', $data[0]->userProfileName);
|
||||
@@ -333,12 +355,13 @@ class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
*/
|
||||
public function testCreate()
|
||||
{
|
||||
$data = new AccountDefaultPermissionData();
|
||||
$data = new ItemPresetData();
|
||||
$data->id = 6;
|
||||
$data->userGroupId = 1;
|
||||
$data->fixed = 1;
|
||||
$data->priority = 20;
|
||||
$data->permission = 'data';
|
||||
$data->data = 'data';
|
||||
$data->type = 'permission';
|
||||
|
||||
$id = self::$repository->create($data);
|
||||
|
||||
@@ -354,11 +377,12 @@ class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
{
|
||||
$this->expectException(ConstraintException::class);
|
||||
|
||||
$data = new AccountDefaultPermissionData();
|
||||
$data = new ItemPresetData();
|
||||
$data->userGroupId = 1;
|
||||
$data->fixed = 1;
|
||||
$data->priority = 10;
|
||||
$data->permission = 'data';
|
||||
$data->data = 'data';
|
||||
$data->type = 'permission';
|
||||
|
||||
self::$repository->create($data);
|
||||
}
|
||||
@@ -376,14 +400,14 @@ class AccountDefaultPermissionRepositoryTest extends DatabaseTestCase
|
||||
*/
|
||||
public function testGetByFilter($userId, $userGroupId, $userProfileId, $expected)
|
||||
{
|
||||
$result = self::$repository->getByFilter($userId, $userGroupId, $userProfileId);
|
||||
$result = self::$repository->getByFilter('permission', $userId, $userGroupId, $userProfileId);
|
||||
|
||||
$this->assertEquals(1, $result->getNumRows());
|
||||
|
||||
/** @var AccountDefaultPermissionData $data */
|
||||
/** @var ItemPresetData $data */
|
||||
$data = $result->getData();
|
||||
|
||||
$this->assertInstanceOf(AccountDefaultPermissionData::class, $data);
|
||||
$this->assertInstanceOf(ItemPresetData::class, $data);
|
||||
$this->assertEquals($expected, $data->getId());
|
||||
}
|
||||
|
||||
@@ -22,27 +22,28 @@
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\Tests\Services\Account;
|
||||
namespace SP\Tests\Services\ItemPreset;
|
||||
|
||||
use SP\Core\Exceptions\ConstraintException;
|
||||
use SP\DataModel\AccountDefaultPermissionData;
|
||||
use SP\DataModel\AccountPermission;
|
||||
use SP\DataModel\ItemPresetData;
|
||||
use SP\DataModel\ItemSearchData;
|
||||
use SP\Repositories\NoSuchItemException;
|
||||
use SP\Services\Account\AccountDefaultPermissionService;
|
||||
use SP\Services\ItemPreset\ItemPresetRequest;
|
||||
use SP\Services\ItemPreset\ItemPresetService;
|
||||
use SP\Storage\Database\DatabaseConnectionData;
|
||||
use SP\Tests\DatabaseTestCase;
|
||||
use function SP\Tests\setupContext;
|
||||
|
||||
/**
|
||||
* Class AccountDefaultPermissionServiceTest
|
||||
* Class ItemPresetServiceTest
|
||||
*
|
||||
* @package SP\Tests\Services\Account
|
||||
* @package SP\Tests\Services\ItemPreset
|
||||
*/
|
||||
class AccountDefaultPermissionServiceTest extends DatabaseTestCase
|
||||
class ItemPresetServiceTest extends DatabaseTestCase
|
||||
{
|
||||
/**
|
||||
* @var AccountDefaultPermissionService
|
||||
* @var ItemPresetService
|
||||
*/
|
||||
private static $service;
|
||||
|
||||
@@ -55,13 +56,13 @@ class AccountDefaultPermissionServiceTest extends DatabaseTestCase
|
||||
{
|
||||
$dic = setupContext();
|
||||
|
||||
self::$dataset = 'syspass_accountDefaultPermission.xml';
|
||||
self::$dataset = 'syspass_itemPreset.xml';
|
||||
|
||||
// Datos de conexión a la BBDD
|
||||
self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class);
|
||||
|
||||
// Inicializar el servicio
|
||||
self::$service = $dic->get(AccountDefaultPermissionService::class);
|
||||
self::$service = $dic->get(ItemPresetService::class);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -77,9 +78,9 @@ class AccountDefaultPermissionServiceTest extends DatabaseTestCase
|
||||
*/
|
||||
public function testGetForUser($userId, $userGroupId, $userProfileId, $expected)
|
||||
{
|
||||
$result = self::$service->getForUser($userId, $userGroupId, $userProfileId);
|
||||
$result = self::$service->getForUser('permission', $userId, $userGroupId, $userProfileId);
|
||||
|
||||
$this->assertInstanceOf(AccountDefaultPermissionData::class, $result);
|
||||
$this->assertInstanceOf(ItemPresetData::class, $result);
|
||||
$this->assertEquals($expected, $result->getId());
|
||||
}
|
||||
|
||||
@@ -107,15 +108,16 @@ class AccountDefaultPermissionServiceTest extends DatabaseTestCase
|
||||
*/
|
||||
public function testGetById()
|
||||
{
|
||||
$data = new AccountDefaultPermissionData();
|
||||
$data = new ItemPresetData();
|
||||
$data->id = 1;
|
||||
$data->userId = 1;
|
||||
$data->fixed = 0;
|
||||
$data->priority = 0;
|
||||
$data->type = 'permission';
|
||||
|
||||
$result = self::$service->getById(1);
|
||||
|
||||
$this->assertInstanceOf(AccountDefaultPermissionData::class, $result);
|
||||
$this->assertInstanceOf(ItemPresetData::class, $result);
|
||||
$this->assertEquals($data, $result);
|
||||
}
|
||||
|
||||
@@ -125,24 +127,25 @@ class AccountDefaultPermissionServiceTest extends DatabaseTestCase
|
||||
*/
|
||||
public function testGetAll()
|
||||
{
|
||||
$count = $this->conn->getRowCount('AccountDefaultPermission');
|
||||
$count = $this->conn->getRowCount('ItemPreset');
|
||||
|
||||
$result = self::$service->getAll();
|
||||
$this->assertCount($count, $result);
|
||||
|
||||
$this->assertInstanceOf(AccountDefaultPermissionData::class, $result[0]);
|
||||
$this->assertInstanceOf(ItemPresetData::class, $result[0]);
|
||||
$this->assertEquals(1, $result[0]->getId());
|
||||
$this->assertEquals('permission', $result[0]->getType());
|
||||
$this->assertEquals(1, $result[0]->getUserId());
|
||||
$this->assertNull($result[0]->getUserGroupId());
|
||||
$this->assertNull($result[0]->getUserProfileId());
|
||||
$this->assertNull($result[0]->getPermission());
|
||||
$this->assertNull($result[0]->getData());
|
||||
$this->assertEquals(0, $result[0]->getFixed());
|
||||
$this->assertEquals(0, $result[0]->getPriority());
|
||||
|
||||
$this->assertInstanceOf(AccountDefaultPermissionData::class, $result[1]);
|
||||
$this->assertInstanceOf(ItemPresetData::class, $result[1]);
|
||||
$this->assertEquals(2, $result[1]->getId());
|
||||
|
||||
$this->assertInstanceOf(AccountDefaultPermissionData::class, $result[2]);
|
||||
$this->assertInstanceOf(ItemPresetData::class, $result[2]);
|
||||
$this->assertEquals(3, $result[2]->getId());
|
||||
}
|
||||
|
||||
@@ -150,6 +153,7 @@ class AccountDefaultPermissionServiceTest extends DatabaseTestCase
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
* @throws \SP\Repositories\NoSuchItemException
|
||||
* @throws \SP\Core\Exceptions\NoSuchPropertyException
|
||||
*/
|
||||
public function testUpdate()
|
||||
{
|
||||
@@ -159,19 +163,21 @@ class AccountDefaultPermissionServiceTest extends DatabaseTestCase
|
||||
$accountPermission->setUserGroupsView([2]);
|
||||
$accountPermission->setUserGroupsEdit([1, 3]);
|
||||
|
||||
$data = new AccountDefaultPermissionData();
|
||||
$data = new ItemPresetData();
|
||||
$data->id = 1;
|
||||
$data->userGroupId = 1;
|
||||
$data->fixed = 1;
|
||||
$data->priority = 1;
|
||||
$data->setAccountPermission($accountPermission);
|
||||
$data->type = 'permission';
|
||||
|
||||
self::$service->update($data);
|
||||
$request = new ItemPresetRequest($data, $accountPermission);
|
||||
|
||||
self::$service->update($request);
|
||||
|
||||
$resultData = self::$service->getById(1);
|
||||
|
||||
$this->assertEquals($data, $resultData);
|
||||
$this->assertEquals($accountPermission, $resultData->getAccountPermission());
|
||||
$this->assertEquals($accountPermission, $resultData->hydrate(AccountPermission::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -186,13 +192,16 @@ class AccountDefaultPermissionServiceTest extends DatabaseTestCase
|
||||
$accountPermission->setUserGroupsView([2]);
|
||||
$accountPermission->setUserGroupsEdit([1, 3]);
|
||||
|
||||
$data = new AccountDefaultPermissionData();
|
||||
$data = new ItemPresetData();
|
||||
$data->id = 10;
|
||||
$data->userGroupId = 1;
|
||||
$data->fixed = 1;
|
||||
$data->priority = 1;
|
||||
$data->type = 'permission';
|
||||
|
||||
$this->assertEquals(0, self::$service->update($data));
|
||||
$request = new ItemPresetRequest($data, $accountPermission);
|
||||
|
||||
$this->assertEquals(0, self::$service->update($request));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -206,7 +215,7 @@ class AccountDefaultPermissionServiceTest extends DatabaseTestCase
|
||||
->delete(3)
|
||||
->delete(4);
|
||||
|
||||
$this->assertEquals(3, $this->conn->getRowCount('AccountDefaultPermission'));
|
||||
$this->assertEquals(3, $this->conn->getRowCount('ItemPreset'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -239,10 +248,11 @@ class AccountDefaultPermissionServiceTest extends DatabaseTestCase
|
||||
$this->assertCount(1, $data);
|
||||
$this->assertInstanceOf(\stdClass::class, $data[0]);
|
||||
$this->assertEquals(4, $data[0]->id);
|
||||
$this->assertEquals('permission', $data[0]->type);
|
||||
$this->assertEquals(2, $data[0]->userId);
|
||||
$this->assertNull($data[0]->userGroupId);
|
||||
$this->assertNull($data[0]->userProfileId);
|
||||
$this->assertNull($data[0]->permission);
|
||||
$this->assertNull($data[0]->data);
|
||||
$this->assertEquals(0, $data[0]->fixed);
|
||||
$this->assertEquals(0, $data[0]->priority);
|
||||
$this->assertEquals('sysPass demo', $data[0]->userName);
|
||||
@@ -259,10 +269,11 @@ class AccountDefaultPermissionServiceTest extends DatabaseTestCase
|
||||
$this->assertCount(1, $data);
|
||||
$this->assertInstanceOf(\stdClass::class, $data[0]);
|
||||
$this->assertEquals(2, $data[0]->id);
|
||||
$this->assertEquals('permission', $data[0]->type);
|
||||
$this->assertNull($data[0]->userId);
|
||||
$this->assertEquals(1, $data[0]->userGroupId);
|
||||
$this->assertNull($data[0]->userProfileId);
|
||||
$this->assertNull($data[0]->permission);
|
||||
$this->assertNull($data[0]->data);
|
||||
$this->assertEquals(0, $data[0]->fixed);
|
||||
$this->assertEquals(10, $data[0]->priority);
|
||||
$this->assertEquals('Admins', $data[0]->userGroupName);
|
||||
@@ -279,10 +290,11 @@ class AccountDefaultPermissionServiceTest extends DatabaseTestCase
|
||||
$this->assertCount(1, $data);
|
||||
$this->assertInstanceOf(\stdClass::class, $data[0]);
|
||||
$this->assertEquals(5, $data[0]->id);
|
||||
$this->assertEquals('permission', $data[0]->type);
|
||||
$this->assertNull($data[0]->userId);
|
||||
$this->assertNull($data[0]->userGroupId);
|
||||
$this->assertEquals(3, $data[0]->userProfileId);
|
||||
$this->assertNull($data[0]->permission);
|
||||
$this->assertNull($data[0]->data);
|
||||
$this->assertEquals(0, $data[0]->fixed);
|
||||
$this->assertEquals(10, $data[0]->priority);
|
||||
$this->assertEquals('Usuarios', $data[0]->userProfileName);
|
||||
@@ -305,9 +317,9 @@ class AccountDefaultPermissionServiceTest extends DatabaseTestCase
|
||||
*/
|
||||
public function testGetForCurrentUser()
|
||||
{
|
||||
$data = self::$service->getForCurrentUser();
|
||||
$data = self::$service->getForCurrentUser('permission');
|
||||
|
||||
$this->assertInstanceOf(AccountDefaultPermissionData::class, $data);
|
||||
$this->assertInstanceOf(ItemPresetData::class, $data);
|
||||
$this->assertEquals(2, $data->getId());
|
||||
}
|
||||
|
||||
@@ -315,6 +327,7 @@ class AccountDefaultPermissionServiceTest extends DatabaseTestCase
|
||||
* @throws ConstraintException
|
||||
* @throws NoSuchItemException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
* @throws \SP\Core\Exceptions\NoSuchPropertyException
|
||||
*/
|
||||
public function testCreate()
|
||||
{
|
||||
@@ -324,17 +337,22 @@ class AccountDefaultPermissionServiceTest extends DatabaseTestCase
|
||||
$accountPermission->setUserGroupsView([2]);
|
||||
$accountPermission->setUserGroupsEdit([1, 3]);
|
||||
|
||||
$data = new AccountDefaultPermissionData();
|
||||
$data = new ItemPresetData();
|
||||
$data->id = 6;
|
||||
$data->userGroupId = 1;
|
||||
$data->fixed = 1;
|
||||
$data->priority = 20;
|
||||
$data->setAccountPermission($accountPermission);
|
||||
$data->type = 'permission';
|
||||
|
||||
$id = self::$service->create($data);
|
||||
$request = new ItemPresetRequest($data, $accountPermission);
|
||||
|
||||
$id = self::$service->create($request);
|
||||
|
||||
$result = self::$service->getById($id);
|
||||
|
||||
$this->assertEquals($data->id, $id);
|
||||
$this->assertEquals($data, self::$service->getById($id));
|
||||
$this->assertEquals($data, $result);
|
||||
$this->assertEquals($accountPermission, $result->hydrate(AccountPermission::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -349,13 +367,16 @@ class AccountDefaultPermissionServiceTest extends DatabaseTestCase
|
||||
$accountPermission->setUserGroupsView([2]);
|
||||
$accountPermission->setUserGroupsEdit([1, 3]);
|
||||
|
||||
$data = new AccountDefaultPermissionData();
|
||||
$data = new ItemPresetData();
|
||||
$data->userGroupId = 1;
|
||||
$data->fixed = 1;
|
||||
$data->priority = 10;
|
||||
$data->type = 'permission';
|
||||
|
||||
$request = new ItemPresetRequest($data, $accountPermission);
|
||||
|
||||
$this->expectException(ConstraintException::class);
|
||||
|
||||
self::$service->create($data);
|
||||
self::$service->create($request);
|
||||
}
|
||||
}
|
||||
@@ -328,7 +328,7 @@
|
||||
<action multiple="1">
|
||||
<id>304</id>
|
||||
<name>CLIENT_CREATE</name>
|
||||
<text>Nuevo CLiente</text>
|
||||
<text>Nuevo Cliente</text>
|
||||
<route>client/create</route>
|
||||
</action>
|
||||
<action multiple="1">
|
||||
@@ -829,4 +829,40 @@
|
||||
<text>Buscar Notificación</text>
|
||||
<route>notification/search</route>
|
||||
</action>
|
||||
<action multiple="1">
|
||||
<id>1801</id>
|
||||
<name>ITEMPRESET</name>
|
||||
<text>Gestión Permisos</text>
|
||||
<route>itemPreset/index</route>
|
||||
</action>
|
||||
<action multiple="1">
|
||||
<id>1802</id>
|
||||
<name>ITEMPRESET_SEARCH</name>
|
||||
<text>Buscar Permiso</text>
|
||||
<route>itemPreset/search</route>
|
||||
</action>
|
||||
<action multiple="1">
|
||||
<id>1803</id>
|
||||
<name>ITEMPRESET_VIEW</name>
|
||||
<text>Ver Permiso</text>
|
||||
<route>itemPreset/view</route>
|
||||
</action>
|
||||
<action multiple="1">
|
||||
<id>1804</id>
|
||||
<name>ITEMPRESET_CREATE</name>
|
||||
<text>Nuevo Permiso</text>
|
||||
<route>itemPreset/create</route>
|
||||
</action>
|
||||
<action multiple="1">
|
||||
<id>1805</id>
|
||||
<name>ITEMPRESET_EDIT</name>
|
||||
<text>Editar Permiso</text>
|
||||
<route>itemPreset/edit</route>
|
||||
</action>
|
||||
<action multiple="1">
|
||||
<id>1806</id>
|
||||
<name>ITEMPRESET_DELETE</name>
|
||||
<text>Eliminar Permiso</text>
|
||||
<route>itemPreset/delete</route>
|
||||
</action>
|
||||
</actions>
|
||||
@@ -9,11 +9,11 @@
|
||||
<authBasicAutoLoginEnabled>1</authBasicAutoLoginEnabled>
|
||||
<authBasicDomain></authBasicDomain>
|
||||
<authBasicEnabled>1</authBasicEnabled>
|
||||
<backup_hash>e3a34a99dcadc6abf94883a67e91ed05f49eed81</backup_hash>
|
||||
<backup_hash>c8fe86b8b3f1ac71e62daf6c731065910f775dcf</backup_hash>
|
||||
<checkUpdates>0</checkUpdates>
|
||||
<checknotices>0</checknotices>
|
||||
<configDate>1535584064</configDate>
|
||||
<configHash>0cf71c39a7de70930b31dd6c12631cbf2849a44b</configHash>
|
||||
<configDate>1535637654</configDate>
|
||||
<configHash>c6cfea1957d8c1b4e30c916f724197a432159564</configHash>
|
||||
<configSaver></configSaver>
|
||||
<configVersion></configVersion>
|
||||
<databaseVersion></databaseVersion>
|
||||
@@ -32,7 +32,7 @@
|
||||
<dokuwikiUrlBase></dokuwikiUrlBase>
|
||||
<dokuwikiUser></dokuwikiUser>
|
||||
<encryptSession>0</encryptSession>
|
||||
<export_hash>0d5bfbb33cdcc40548d29018157bf99a1c03b528</export_hash>
|
||||
<export_hash>d635cf0e628e8214b00aff938a09f5be6158e590</export_hash>
|
||||
<filesAllowedExts>
|
||||
<item type="filesAllowedExts">PDF</item>
|
||||
<item type="filesAllowedExts">JPG</item>
|
||||
|
||||
@@ -540,6 +540,6 @@
|
||||
<field name="used">0</field>
|
||||
</row>
|
||||
</table_data>
|
||||
<table_data name="AccountDefaultPermission"/>
|
||||
<table_data name="ItemPreset"/>
|
||||
</database>
|
||||
</mysqldump>
|
||||
|
||||
@@ -432,6 +432,6 @@
|
||||
<field name="isPrivateGroup">0</field>
|
||||
</row>
|
||||
</table_data>
|
||||
<table_data name="AccountDefaultPermission"/>
|
||||
<table_data name="ItemPreset"/>
|
||||
</database>
|
||||
</mysqldump>
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
<field name="preferences" xsi:nil="true" />
|
||||
</row>
|
||||
</table_data>
|
||||
<table_data name="AccountDefaultPermission">
|
||||
<table_data name="ItemPreset">
|
||||
<row>
|
||||
<field name="id">1</field>
|
||||
<field name="userId">1</field>
|
||||
@@ -149,8 +149,9 @@
|
||||
<field name="userProfileId" xsi:nil="true"/>
|
||||
<field name="fixed">0</field>
|
||||
<field name="priority">0</field>
|
||||
<field name="permission" xsi:nil="true"/>
|
||||
<field name="hash">e3cbba8883fe746c6e35783c9404b4bc0c7ee9eb</field>
|
||||
<field name="data" xsi:nil="true"/>
|
||||
<field name="type">permission</field>
|
||||
<field name="hash">284985459df4616aa682a6de4c4994a9fedf164d</field>
|
||||
</row>
|
||||
<row>
|
||||
<field name="id">2</field>
|
||||
@@ -159,8 +160,9 @@
|
||||
<field name="userProfileId" xsi:nil="true"/>
|
||||
<field name="fixed">0</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="permission" xsi:nil="true"/>
|
||||
<field name="hash">9c5975f336463693254939bfde7042459607d834</field>
|
||||
<field name="data" xsi:nil="true"/>
|
||||
<field name="type">permission</field>
|
||||
<field name="hash">ac1de29cfbc9db8c63b3b109c899148e904ccced</field>
|
||||
</row>
|
||||
<row>
|
||||
<field name="id">3</field>
|
||||
@@ -169,8 +171,9 @@
|
||||
<field name="userProfileId">1</field>
|
||||
<field name="fixed">0</field>
|
||||
<field name="priority">20</field>
|
||||
<field name="permission" xsi:nil="true"/>
|
||||
<field name="hash">19fc3ecd72937e313c4a4a7023eb0ab07890cee7</field>
|
||||
<field name="data" xsi:nil="true"/>
|
||||
<field name="type">permission</field>
|
||||
<field name="hash">3ec16d2bece6de02ed9423f98fcaaba260ffd36b</field>
|
||||
</row>
|
||||
<row>
|
||||
<field name="id">4</field>
|
||||
@@ -179,8 +182,9 @@
|
||||
<field name="userProfileId" xsi:nil="true"/>
|
||||
<field name="fixed">0</field>
|
||||
<field name="priority">0</field>
|
||||
<field name="permission" xsi:nil="true"/>
|
||||
<field name="hash">a4ac914c09d7c097fe1f4f96b897e625b6922069</field>
|
||||
<field name="data" xsi:nil="true"/>
|
||||
<field name="type">permission</field>
|
||||
<field name="hash">8eca5d3518e5531aa968ce0d5a7221f659f5d0ee</field>
|
||||
</row>
|
||||
<row>
|
||||
<field name="id">5</field>
|
||||
@@ -189,8 +193,9 @@
|
||||
<field name="userProfileId">3</field>
|
||||
<field name="fixed">0</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="permission" xsi:nil="true"/>
|
||||
<field name="hash">0e718dd1e04a0f28f7e31ddfaed950e2d70ee477</field>
|
||||
<field name="data" xsi:nil="true"/>
|
||||
<field name="type">permission</field>
|
||||
<field name="hash">fa66da8c08bf2728dfa90bb0682494a763dc0c11</field>
|
||||
</row>
|
||||
</table_data>
|
||||
</database>
|
||||
Reference in New Issue
Block a user