From 2fc71e87dcbe522683f4e4642b7a6deae89f809e Mon Sep 17 00:00:00 2001 From: nuxsmin Date: Thu, 30 Aug 2018 16:19:18 +0200 Subject: [PATCH] * [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 --- app/config/actions.xml | 24 +- app/locales/en_US/LC_MESSAGES/messages.mo | Bin 101785 -> 102156 bytes app/locales/en_US/LC_MESSAGES/messages.po | 786 ++++++++++-------- .../Controllers/AccessManagerController.php | 20 - .../Helpers/Account/AccountHelper.php | 13 +- .../Controllers/Helpers/Grid/AccountGrid.php | 6 +- .../Helpers/Grid/AccountHistoryGrid.php | 7 +- .../Helpers/Grid/AuthTokenGrid.php | 7 +- .../Controllers/Helpers/Grid/CategoryGrid.php | 8 +- .../Controllers/Helpers/Grid/ClientGrid.php | 8 +- .../Helpers/Grid/CustomFieldGrid.php | 7 +- .../web/Controllers/Helpers/Grid/FileGrid.php | 7 +- ...tPermissionGrid.php => ItemPresetGrid.php} | 55 +- .../Helpers/Grid/NotificationGrid.php | 6 +- .../Helpers/Grid/PublicLinkGrid.php | 6 +- .../web/Controllers/Helpers/Grid/TagGrid.php | 8 +- .../web/Controllers/Helpers/Grid/UserGrid.php | 7 +- .../Helpers/Grid/UserGroupGrid.php | 7 +- .../Helpers/Grid/UserProfileGrid.php | 7 +- .../Controllers/Helpers/ItemPresetHelper.php | 93 +++ .../web/Controllers/ItemManagerController.php | 20 + ...ontroller.php => ItemPresetController.php} | 149 ++-- ...PermissionForm.php => ItemsPresetForm.php} | 73 +- app/modules/web/Forms/UserProfileForm.php | 2 +- .../views/grid/datagrid-grid.inc | 2 +- .../views/grid/datagrid-table.inc | 2 +- .../views/itemshow/item_preset-permission.inc | 81 ++ ...default_permission.inc => item_preset.inc} | 96 +-- .../views/itemshow/user_profile.inc | 8 +- lib/SP/Core/Acl/Acl.php | 14 +- lib/SP/Core/Acl/ActionsInterface.php | 12 +- .../Exceptions/NoSuchPropertyException.php | 35 + lib/SP/DataModel/HydratableInterface.php | 42 + ...tPermissionData.php => ItemPresetData.php} | 77 +- lib/SP/DataModel/ProfileData.php | 12 +- .../ItemPresetRepository.php} | 109 ++- lib/SP/Services/Account/AccountService.php | 18 +- lib/SP/Services/Install/Installer.php | 2 +- .../ItemPreset/ItemPresetInterface.php | 38 + .../Services/ItemPreset/ItemPresetRequest.php | 83 ++ .../ItemPresetService.php} | 79 +- .../Upgrade/UpgradeDatabaseService.php | 3 +- lib/SP/Storage/Database/QueryResult.php | 7 +- schemas/30018083002.sql | 53 ++ schemas/dbstructure.sql | 17 +- ...yTest.php => ItemPresetRepositoryTest.php} | 94 ++- .../ItemPresetServiceTest.php} | 93 ++- tests/res/config/actions.xml | 38 +- tests/res/config/config.xml | 8 +- tests/res/datasets/syspass.xml | 2 +- tests/res/datasets/syspass_account.xml | 2 +- ...tPermission.xml => syspass_itemPreset.xml} | 27 +- 52 files changed, 1447 insertions(+), 933 deletions(-) rename app/modules/web/Controllers/Helpers/Grid/{AccountDefaultPermissionGrid.php => ItemPresetGrid.php} (78%) create mode 100644 app/modules/web/Controllers/Helpers/ItemPresetHelper.php rename app/modules/web/Controllers/{AccountDefaultPermissionController.php => ItemPresetController.php} (59%) rename app/modules/web/Forms/{AccountDefaultPermissionForm.php => ItemsPresetForm.php} (58%) create mode 100644 app/modules/web/themes/material-blue/views/itemshow/item_preset-permission.inc rename app/modules/web/themes/material-blue/views/itemshow/{account_default_permission.inc => item_preset.inc} (54%) create mode 100644 lib/SP/Core/Exceptions/NoSuchPropertyException.php create mode 100644 lib/SP/DataModel/HydratableInterface.php rename lib/SP/DataModel/{AccountDefaultPermissionData.php => ItemPresetData.php} (71%) rename lib/SP/Repositories/{Account/AccountDefaultPermissionRepository.php => ItemPreset/ItemPresetRepository.php} (72%) create mode 100644 lib/SP/Services/ItemPreset/ItemPresetInterface.php create mode 100644 lib/SP/Services/ItemPreset/ItemPresetRequest.php rename lib/SP/Services/{Account/AccountDefaultPermissionService.php => ItemPreset/ItemPresetService.php} (59%) create mode 100644 schemas/30018083002.sql rename tests/SP/Repositories/{AccountDefaultPermissionRepositoryTest.php => ItemPresetRepositoryTest.php} (80%) rename tests/SP/Services/{Account/AccountDefaultPermissionServiceTest.php => ItemPreset/ItemPresetServiceTest.php} (77%) rename tests/res/datasets/{syspass_accountDefaultPermission.xml => syspass_itemPreset.xml} (94%) diff --git a/app/config/actions.xml b/app/config/actions.xml index 25f9c729..c472d2e1 100644 --- a/app/config/actions.xml +++ b/app/config/actions.xml @@ -831,38 +831,38 @@ 1801 - ACCOUNT_DEFAULT_PERMISSION + ITEMPRESET Gestión Permisos - accountDefaultPermission/index + itemPreset/index 1802 - ACCOUNT_DEFAULT_PERMISSION_SEARCH + ITEMPRESET_SEARCH Buscar Permiso - accountDefaultPermission/search + itemPreset/search 1803 - ACCOUNT_DEFAULT_PERMISSION_VIEW + ITEMPRESET_VIEW Ver Permiso - accountDefaultPermission/view + itemPreset/view 1804 - ACCOUNT_DEFAULT_PERMISSION_CREATE + ITEMPRESET_CREATE Nuevo Permiso - accountDefaultPermission/create + itemPreset/create 1805 - ACCOUNT_DEFAULT_PERMISSION_EDIT + ITEMPRESET_EDIT Editar Permiso - accountDefaultPermission/edit + itemPreset/edit 1806 - ACCOUNT_DEFAULT_PERMISSION_DELETE + ITEMPRESET_DELETE Eliminar Permiso - accountDefaultPermission/delete + itemPreset/delete \ No newline at end of file diff --git a/app/locales/en_US/LC_MESSAGES/messages.mo b/app/locales/en_US/LC_MESSAGES/messages.mo index 24a0a6e161a964e07292343784ebd5f2f3a48b2d..1981aa64f154003ec77a136f89bacd1981e18e48 100644 GIT binary patch delta 29794 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 a9#8PL^ros6H?UvtnBg|j`jfm(68#^|k8&9R delta 29601 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
~R5 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 Vcw~wj({!9iU5}VO<2`D6{y%5PFb@C# diff --git a/app/locales/en_US/LC_MESSAGES/messages.po b/app/locales/en_US/LC_MESSAGES/messages.po index dee24b89..9395962e 100644 --- a/app/locales/en_US/LC_MESSAGES/messages.po +++ b/app/locales/en_US/LC_MESSAGES/messages.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: sysPass\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-08-30 01:52+0100\n" -"PO-Revision-Date: 2018-08-30 01:52+0100\n" +"POT-Creation-Date: 2018-08-30 16:16+0100\n" +"PO-Revision-Date: 2018-08-30 16:16+0100\n" "Last-Translator: nuxsmin \n" "Language-Team: nuxsmin@syspass.org\n" "Language: en_US\n" @@ -83,7 +83,7 @@ msgid "Acceso denegado" msgstr "Access denied" #: ../../../../lib/SP/Core/Acl/Acl.php:288 -#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:106 +#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:103 #: ../../../modules/web/themes/material-blue/views/itemshow/auth_token.inc:30 #: ../../../modules/web/themes/material-blue/views/itemshow/auth_token.inc:32 msgid "Acción" @@ -102,9 +102,9 @@ msgstr "Action" #: ../../../../lib/SP/Services/Auth/LoginService.php:586 #: ../../../../lib/SP/Services/Ldap/LdapImportService.php:230 #: ../../../modules/web/Controllers/Helpers/Account/AccountSearchHelper.php:235 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php:102 -#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:105 -#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:109 +#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:102 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:101 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:107 #: ../../../modules/web/Controllers/LoginController.php:102 #: ../../../modules/web/Controllers/UserController.php:278 #: ../../../modules/web/Controllers/UserController.php:312 @@ -126,11 +126,11 @@ msgstr "Action" #: ../../../modules/web/themes/material-blue/views/config/mail.inc:111 #: ../../../modules/web/themes/material-blue/views/config/wiki.inc:230 #: ../../../modules/web/themes/material-blue/views/config/wiki.inc:244 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:17 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:19 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:22 #: ../../../modules/web/themes/material-blue/views/itemshow/auth_token.inc:16 #: ../../../modules/web/themes/material-blue/views/itemshow/auth_token.inc:18 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:18 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:20 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:23 #: ../../../modules/web/themes/material-blue/views/itemshow/public_link.inc:60 #: ../../../modules/web/themes/material-blue/views/itemshow/public_link.inc:62 #: ../../../modules/web/themes/material-blue/views/itemshow/user.inc:11 @@ -190,8 +190,8 @@ msgstr "The key file does not exist" #: ../../../../lib/SP/Repositories/AuthToken/AuthTokenRepository.php:333 #: ../../../../lib/SP/Repositories/AuthToken/AuthTokenRepository.php:388 #: ../../../../lib/SP/Repositories/AuthToken/AuthTokenRepository.php:416 -#: ../../../../lib/SP/Services/Account/AccountService.php:237 -#: ../../../../lib/SP/Services/Account/AccountService.php:242 +#: ../../../../lib/SP/Services/Account/AccountService.php:240 +#: ../../../../lib/SP/Services/Account/AccountService.php:245 #: ../../../../lib/SP/Services/Api/ApiService.php:129 #: ../../../../lib/SP/Services/Api/ApiService.php:227 #: ../../../../lib/SP/Services/Api/ApiService.php:235 @@ -309,16 +309,16 @@ msgstr "New Plugin" #: ../../../../lib/SP/Plugin/PluginManager.php:246 #: ../../../modules/web/Controllers/Helpers/Account/AccountSearchHelper.php:221 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:100 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:102 -#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:103 -#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:102 -#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:103 -#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:104 -#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:103 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:114 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:105 -#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:105 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:98 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:99 +#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:101 +#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:100 +#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:102 +#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:103 +#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:101 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:111 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:102 +#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:102 #: ../../../modules/web/Controllers/UserGroupController.php:254 #: ../../../modules/web/Controllers/UserGroupController.php:293 #: ../../../modules/web/themes/material-blue/views/account/account-editpass.inc:22 @@ -398,8 +398,8 @@ msgstr "Error while searching the group RDN" #: ../../../../lib/SP/Providers/Auth/Ldap/LdapStd.php:115 #: ../../../../lib/SP/Providers/Auth/Ldap/LdapStd.php:127 #: ../../../../lib/SP/Services/Ldap/LdapImportService.php:137 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php:103 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:117 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:102 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:114 #: ../../../modules/web/Controllers/UserGroupController.php:220 #: ../../../modules/web/themes/material-blue/views/_partials/fixed-header.inc:137 #: ../../../modules/web/themes/material-blue/views/_partials/footer.inc:15 @@ -407,9 +407,9 @@ msgstr "Error while searching the group RDN" #: ../../../modules/web/themes/material-blue/views/config/encryption.inc:272 #: ../../../modules/web/themes/material-blue/views/config/ldap.inc:186 #: ../../../modules/web/themes/material-blue/views/config/ldap.inc:213 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:34 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:36 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:39 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:35 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:37 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:40 #: ../../../modules/web/themes/material-blue/views/itemshow/user.inc:139 #: ../../../modules/web/themes/material-blue/views/itemshow/user.inc:141 msgid "Grupo" @@ -463,7 +463,7 @@ msgstr "Request" #: ../../../../lib/SP/Services/CustomField/CustomFieldDefService.php:74 #: ../../../modules/web/Controllers/ConfigBackupController.php:120 #: ../../../modules/web/Controllers/ConfigManagerController.php:171 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:88 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:86 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:20 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:389 #: ../../../config/actions.xml:13 @@ -476,23 +476,6 @@ msgstr "Accounts" msgid "Notificación" msgstr "Notification" -#: ../../../../lib/SP/Repositories/Account/AccountDefaultPermissionRepository.php:74 -msgid "Error al crear permiso" -msgstr "Error while creating the permission" - -#: ../../../../lib/SP/Repositories/Account/AccountDefaultPermissionRepository.php:111 -msgid "Error al actualizar permiso" -msgstr "Error while updating the permission" - -#: ../../../../lib/SP/Repositories/Account/AccountDefaultPermissionRepository.php:130 -msgid "Error al eliminar permiso" -msgstr "Error while removing the permission" - -#: ../../../../lib/SP/Repositories/Account/AccountDefaultPermissionRepository.php:244 -#: ../../../../lib/SP/Services/Account/AccountDefaultPermissionService.php:187 -msgid "Error al eliminar los permisos" -msgstr "Error while removing the permissions" - #: ../../../../lib/SP/Repositories/Account/AccountFileRepository.php:77 msgid "No se pudo guardar el archivo" msgstr "Error while saving file" @@ -517,7 +500,7 @@ msgstr "Error while deleting the account" #: ../../../../lib/SP/Repositories/Account/AccountHistoryRepository.php:292 #: ../../../../lib/SP/Repositories/Account/AccountRepository.php:455 -#: ../../../../lib/SP/Services/Account/AccountService.php:538 +#: ../../../../lib/SP/Services/Account/AccountService.php:542 msgid "Error al eliminar las cuentas" msgstr "Error while deleting the accounts" @@ -533,7 +516,7 @@ msgid "Error al crear la cuenta" msgstr "Error while creating the account" #: ../../../../lib/SP/Repositories/Account/AccountRepository.php:303 -#: ../../../../lib/SP/Services/Account/AccountService.php:504 +#: ../../../../lib/SP/Services/Account/AccountService.php:508 msgid "Error al restaurar cuenta" msgstr "Error on restoring the account" @@ -678,6 +661,22 @@ msgstr "Error while deleting the field type" msgid "Error al vaciar el registro de eventos" msgstr "Error while clearing the event log" +#: ../../../../lib/SP/Repositories/ItemPreset/ItemPresetRepository.php:76 +msgid "Error al crear permiso" +msgstr "Error while creating the permission" + +#: ../../../../lib/SP/Repositories/ItemPreset/ItemPresetRepository.php:115 +msgid "Error al actualizar permiso" +msgstr "Error while updating the permission" + +#: ../../../../lib/SP/Repositories/ItemPreset/ItemPresetRepository.php:134 +msgid "Error al eliminar permiso" +msgstr "Error while removing the permission" + +#: ../../../../lib/SP/Repositories/ItemPreset/ItemPresetRepository.php:249 +msgid "Error al eliminar los permisos" +msgstr "Error while removing the permissions" + #: ../../../../lib/SP/Repositories/Notification/NotificationRepository.php:78 msgid "Error al crear la notificación" msgstr "Error while adding the notification" @@ -946,11 +945,6 @@ msgstr "Update Master Password (H)" msgid "Errores al actualizar las claves de las cuentas del histórico" msgstr "Error while updating the accounts' passwords in history" -#: ../../../../lib/SP/Services/Account/AccountDefaultPermissionService.php:84 -#: ../../../../lib/SP/Services/Account/AccountDefaultPermissionService.php:105 -msgid "Permiso no encontrada" -msgstr "Permission not found" - #: ../../../../lib/SP/Services/Account/AccountFileService.php:145 msgid "Error al eliminar archivos" msgstr "Error while deleting the files" @@ -959,18 +953,18 @@ msgstr "Error while deleting the files" msgid "Archivo no encontrado" msgstr "File not found" -#: ../../../../lib/SP/Services/Account/AccountService.php:92 -#: ../../../../lib/SP/Services/Account/AccountService.php:594 -#: ../../../../lib/SP/Services/Account/AccountService.php:649 +#: ../../../../lib/SP/Services/Account/AccountService.php:95 +#: ../../../../lib/SP/Services/Account/AccountService.php:598 +#: ../../../../lib/SP/Services/Account/AccountService.php:653 msgid "La cuenta no existe" msgstr "The account doesn't exist" -#: ../../../../lib/SP/Services/Account/AccountService.php:179 -#: ../../../../lib/SP/Services/Account/AccountService.php:521 +#: ../../../../lib/SP/Services/Account/AccountService.php:182 +#: ../../../../lib/SP/Services/Account/AccountService.php:525 msgid "Cuenta no encontrada" msgstr "Account not found" -#: ../../../../lib/SP/Services/Account/AccountService.php:230 +#: ../../../../lib/SP/Services/Account/AccountService.php:233 msgid "Clave maestra no establecida" msgstr "Master password not set" @@ -1049,9 +1043,12 @@ msgstr "The Master Password either is not saved or is wrong" #: ../../../../lib/SP/Services/Auth/LoginService.php:542 #: ../../../../lib/SP/Services/Auth/LoginService.php:585 #: ../../../modules/web/Controllers/AccountFileController.php:233 -#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:105 -#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:105 -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:119 +#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:104 +#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:104 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:100 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:117 +#: ../../../modules/web/Controllers/ItemPresetController.php:297 +#: ../../../modules/web/Controllers/ItemPresetController.php:336 #: ../../../modules/web/themes/material-blue/views/itemshow/custom_field.inc:31 #: ../../../modules/web/themes/material-blue/views/itemshow/custom_field.inc:33 #: ../../../modules/web/themes/material-blue/views/notification/notification.inc:16 @@ -1235,22 +1232,22 @@ msgstr "Error while updating the custom fields data" #: ../../../../lib/SP/Services/CustomField/CustomFieldDefService.php:75 #: ../../../modules/web/Controllers/ConfigBackupController.php:122 -#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:91 +#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:89 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:293 msgid "Categorías" msgstr "Categories" #: ../../../../lib/SP/Services/CustomField/CustomFieldDefService.php:76 #: ../../../modules/web/Controllers/ConfigBackupController.php:121 -#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:90 +#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:88 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:325 msgid "Clientes" msgstr "Clients" #: ../../../../lib/SP/Services/CustomField/CustomFieldDefService.php:77 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:102 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:99 #: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:13 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:118 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset-permission.inc:4 #: ../../../modules/web/themes/material-blue/views/itemshow/user_group.inc:45 #: ../../../modules/web/themes/material-blue/views/itemshow/user_group.inc:47 #: ../../../modules/web/themes/material-blue/views/itemshow/user_group.inc:50 @@ -1259,9 +1256,9 @@ msgid "Usuarios" msgstr "Users" #: ../../../../lib/SP/Services/CustomField/CustomFieldDefService.php:78 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:93 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:90 #: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:51 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:157 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset-permission.inc:43 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:261 msgid "Grupos" msgstr "Groups" @@ -1375,10 +1372,10 @@ msgstr "Account imported" #: ../../../modules/web/Controllers/ClientController.php:245 #: ../../../modules/web/Controllers/ClientController.php:281 #: ../../../modules/web/Controllers/Helpers/Account/AccountSearchHelper.php:214 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:101 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:103 -#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:103 -#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:106 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:99 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:100 +#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:102 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:104 #: ../../../modules/web/themes/material-blue/views/account/account-editpass.inc:33 #: ../../../modules/web/themes/material-blue/views/account/account-editpass.inc:39 #: ../../../modules/web/themes/material-blue/views/account/account-history.inc:47 @@ -1473,8 +1470,8 @@ msgstr "Category imported" #: ../../../modules/web/Controllers/CategoryController.php:249 #: ../../../modules/web/Controllers/CategoryController.php:289 #: ../../../modules/web/Controllers/Helpers/Account/AccountSearchHelper.php:228 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:102 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:104 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:100 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:101 #: ../../../modules/web/themes/material-blue/views/account/account-history.inc:62 #: ../../../modules/web/themes/material-blue/views/account/account-history.inc:64 #: ../../../modules/web/themes/material-blue/views/account/account-link.inc:38 @@ -1707,6 +1704,15 @@ msgstr "Error while checking the database" msgid "Intente de nuevo la instalación" msgstr "Please, try the installation again" +#: ../../../../lib/SP/Services/ItemPreset/ItemPresetService.php:84 +#: ../../../../lib/SP/Services/ItemPreset/ItemPresetService.php:105 +msgid "Valor no encontrada" +msgstr "Value not found" + +#: ../../../../lib/SP/Services/ItemPreset/ItemPresetService.php:188 +msgid "Error al eliminar los valores" +msgstr "Error while deleting the values" + #: ../../../../lib/SP/Services/Ldap/LdapImportService.php:106 #: ../../../../lib/SP/Services/Ldap/LdapImportService.php:188 msgid "Objetos encontrados" @@ -1836,8 +1842,8 @@ msgid "Error al aplicar la actualización de la aplicación" msgstr "Error while applying the application update" #: ../../../../lib/SP/Services/Upgrade/UpgradeAppService.php:71 -#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:89 -#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:97 +#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:90 +#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:98 msgid "Compruebe el registro de eventos para más detalles" msgstr "Please, check the event log for more details" @@ -1873,7 +1879,7 @@ msgstr "Parameter" #: ../../../../lib/SP/Services/Upgrade/UpgradeConfigService.php:113 #: ../../../../lib/SP/Services/Upgrade/UpgradeConfigService.php:229 -#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:164 +#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:165 #: ../../../modules/web/Controllers/ConfigBackupController.php:118 #: ../../../modules/web/themes/material-blue/views/config/info.inc:40 #: ../../../modules/web/themes/material-blue/views/itemshow/plugin.inc:25 @@ -1919,27 +1925,27 @@ msgstr "Field updated" msgid "Campo" msgstr "Field" -#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:80 -#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:123 +#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:81 +#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:124 msgid "Actualizar BBDD" msgstr "Update DB" -#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:87 +#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:88 msgid "Error al aplicar la actualización auxiliar" msgstr "Error while applying an auxiliary update" -#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:95 -#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:177 -#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:181 +#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:96 +#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:178 +#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:182 msgid "Error al aplicar la actualización de la Base de Datos" msgstr "Error while updating the database" -#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:155 -#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:157 +#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:156 +#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:158 msgid "El archivo de actualización no contiene datos" msgstr "The update file does not contain data" -#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:187 +#: ../../../../lib/SP/Services/Upgrade/UpgradeDatabaseService.php:188 msgid "Actualización de la Base de Datos realizada correctamente." msgstr "Database updating was completed successfully." @@ -2119,13 +2125,6 @@ msgid "Opción no disponible" msgstr "Option unavailable" #: ../../../../lib/SP/Util/ErrorUtil.php:140 -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:68 -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:142 -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:177 -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:208 -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:238 -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:277 -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:313 #: ../../../modules/web/Controllers/AccountFileController.php:259 #: ../../../modules/web/Controllers/AccountHistoryManagerController.php:59 #: ../../../modules/web/Controllers/AccountManagerController.php:57 @@ -2158,6 +2157,13 @@ msgstr "Option unavailable" #: ../../../modules/web/Controllers/CustomFieldController.php:258 #: ../../../modules/web/Controllers/CustomFieldController.php:295 #: ../../../modules/web/Controllers/EventlogController.php:94 +#: ../../../modules/web/Controllers/ItemPresetController.php:67 +#: ../../../modules/web/Controllers/ItemPresetController.php:140 +#: ../../../modules/web/Controllers/ItemPresetController.php:175 +#: ../../../modules/web/Controllers/ItemPresetController.php:213 +#: ../../../modules/web/Controllers/ItemPresetController.php:243 +#: ../../../modules/web/Controllers/ItemPresetController.php:282 +#: ../../../modules/web/Controllers/ItemPresetController.php:321 #: ../../../modules/web/Controllers/NotificationController.php:100 #: ../../../modules/web/Controllers/NotificationController.php:160 #: ../../../modules/web/Controllers/NotificationController.php:175 @@ -2255,8 +2261,8 @@ msgstr "Account displayed" #: ../../../modules/web/Controllers/AccountHistoryManagerController.php:111 #: ../../../modules/web/Controllers/AccountHistoryManagerController.php:146 #: ../../../modules/web/Controllers/AccountManagerController.php:114 -#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:102 -#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:105 +#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:101 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:103 #: ../../../modules/web/themes/material-blue/views/account/account-history.inc:15 #: ../../../modules/web/themes/material-blue/views/account/account.inc:24 #: ../../../modules/web/themes/material-blue/views/itemshow/public_link.inc:16 @@ -2278,10 +2284,10 @@ msgstr "Account" #: ../../../modules/api/Controllers/ClientController.php:126 #: ../../../modules/api/Controllers/ClientController.php:155 #: ../../../modules/api/Controllers/TagController.php:118 -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:260 -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:290 -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:326 #: ../../../modules/web/Controllers/Helpers/Grid/EventlogGrid.php:100 +#: ../../../modules/web/Controllers/ItemPresetController.php:265 +#: ../../../modules/web/Controllers/ItemPresetController.php:298 +#: ../../../modules/web/Controllers/ItemPresetController.php:337 #: ../../../modules/web/themes/material-blue/views/account/details.inc:138 #: ../../../modules/web/themes/material-blue/views/account/details.inc:140 msgid "ID" @@ -2586,8 +2592,8 @@ msgid "Descripción del cliente" msgstr "Client description" #: ../../../modules/api/Controllers/Help/ClientHelp.php:56 -#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:104 -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:144 +#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:102 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:142 #: ../../../modules/web/themes/material-blue/views/itemshow/client.inc:62 #: ../../../modules/web/themes/material-blue/views/notification/notification.inc:92 msgid "Global" @@ -2679,10 +2685,10 @@ msgstr "Edit Account" #: ../../../modules/web/Controllers/AccountController.php:386 #: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:312 #: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:313 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:147 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:148 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:175 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:176 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:145 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:146 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:172 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:173 #: ../../../config/actions.xml:163 ../../../config/actions.xml:481 #: ../../../config/actions.xml:781 msgid "Eliminar Cuenta" @@ -2725,11 +2731,11 @@ msgid "Solicitante" msgstr "Requester" #: ../../../modules/web/Controllers/AccountController.php:901 -#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:104 -#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:103 +#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:102 +#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:101 #: ../../../modules/web/Controllers/Helpers/Grid/EventlogGrid.php:106 -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:121 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:106 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:119 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:103 #: ../../../modules/web/themes/material-blue/views/itemshow/category.inc:28 #: ../../../modules/web/themes/material-blue/views/itemshow/client.inc:32 #: ../../../modules/web/themes/material-blue/views/itemshow/user_group.inc:32 @@ -2742,48 +2748,6 @@ msgstr "Description" msgid "Solicitud realizada" msgstr "Request done" -#. (itstool) path: action/text -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:71 -#: ../../../config/actions.xml:847 -msgid "Ver Permiso" -msgstr "View Permission" - -#. (itstool) path: action/text -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:181 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php:156 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php:157 -#: ../../../config/actions.xml:853 -msgid "Nuevo Permiso" -msgstr "New Permission" - -#. (itstool) path: action/text -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:211 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php:174 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php:175 -#: ../../../config/actions.xml:859 -msgid "Editar Permiso" -msgstr "Edit Permission" - -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:248 -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:251 -msgid "Permisos eliminados" -msgstr "Permissions deleted" - -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:259 -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:263 -msgid "Permiso eliminado" -msgstr "Permission deleted" - -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:289 -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:293 -msgid "Permiso creado" -msgstr "Permission added" - -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:325 -#: ../../../modules/web/Controllers/AccountDefaultPermissionController.php:329 -msgid "Permiso actualizado" -msgstr "Permission updated" - #: ../../../modules/web/Controllers/AccountFavoriteController.php:55 msgid "Favorito añadido" msgstr "Favorite added" @@ -2853,7 +2817,7 @@ msgid "Archivo guardado" msgstr "File saved" #: ../../../modules/web/Controllers/AccountFileController.php:234 -#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:106 +#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:105 msgid "Tamaño" msgstr "Size" @@ -2879,14 +2843,14 @@ msgid "No hay archivos asociados a la cuenta" msgstr "There are no linked files for the account" #: ../../../modules/web/Controllers/AuthTokenController.php:101 -#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:153 -#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:154 +#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:150 +#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:151 msgid "Nueva Autorización" msgstr "New Authorization" #: ../../../modules/web/Controllers/AuthTokenController.php:165 -#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:188 -#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:189 +#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:185 +#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:186 msgid "Editar Autorización" msgstr "Edit Authorization" @@ -2914,8 +2878,8 @@ msgstr "Authorization viewed" #. (itstool) path: action/text #: ../../../modules/web/Controllers/CategoryController.php:99 -#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:149 -#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:150 +#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:147 +#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:148 #: ../../../modules/web/themes/material-blue/views/account/account.inc:110 #: ../../../config/actions.xml:301 msgid "Nueva Categoría" @@ -2923,8 +2887,8 @@ msgstr "New Category" #. (itstool) path: action/text #: ../../../modules/web/Controllers/CategoryController.php:162 -#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:167 -#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:168 +#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:165 +#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:166 #: ../../../config/actions.xml:307 msgid "Editar Categoría" msgstr "Edit Category" @@ -2942,8 +2906,8 @@ msgstr "View Category" #. (itstool) path: action/text #: ../../../modules/web/Controllers/ClientController.php:100 -#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:152 -#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:153 +#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:150 +#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:151 #: ../../../modules/web/themes/material-blue/views/account/account.inc:86 #: ../../../config/actions.xml:331 msgid "Nuevo Cliente" @@ -2951,8 +2915,8 @@ msgstr "New Client" #. (itstool) path: action/text #: ../../../modules/web/Controllers/ClientController.php:163 -#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:170 -#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:171 +#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:168 +#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:169 #: ../../../config/actions.xml:337 msgid "Editar Cliente" msgstr "Edit Client" @@ -3012,7 +2976,7 @@ msgid "Verificación de datos exportados finalizada" msgstr "Verification of exported data finished" #: ../../../modules/web/Controllers/ConfigBackupController.php:119 -#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:124 +#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:123 #: ../../../modules/web/themes/material-blue/views/common/aux-customfields.inc:13 #: ../../../modules/web/themes/material-blue/views/itemshow/custom_field.inc:86 msgid "Encriptado" @@ -3029,7 +2993,7 @@ msgid "No" msgstr "No" #: ../../../modules/web/Controllers/ConfigBackupController.php:123 -#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:91 +#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:89 #: ../../../modules/web/themes/material-blue/views/account/account.inc:203 #: ../../../modules/web/themes/material-blue/views/account/account.inc:205 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:309 @@ -3292,14 +3256,14 @@ msgid "DokuWiki deshabilitada" msgstr "DokuWiki disabled" #: ../../../modules/web/Controllers/CustomFieldController.php:101 +#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:154 #: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:155 -#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:156 msgid "Nuevo Campo" msgstr "New Field" #: ../../../modules/web/Controllers/CustomFieldController.php:162 +#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:172 #: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:173 -#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:174 msgid "Editar Campo" msgstr "Edit Field" @@ -3458,69 +3422,36 @@ msgstr "URL / IP" msgid "Ordenar por URL / IP" msgstr "Sort by URL / IP" -#: ../../../modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php:90 -msgid "Permisos por Defecto" -msgstr "Default Permissions" - -#: ../../../modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php:104 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:116 -#: ../../../modules/web/Controllers/UserProfileController.php:216 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:51 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:53 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:56 -#: ../../../modules/web/themes/material-blue/views/itemshow/user.inc:122 -#: ../../../modules/web/themes/material-blue/views/itemshow/user.inc:124 -msgid "Perfil" -msgstr "Profile" - -#: ../../../modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php:105 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:69 -msgid "Prioridad" -msgstr "Priority" - -#: ../../../modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php:106 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:105 -msgid "Forzado" -msgstr "Forced" - -#: ../../../modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php:124 -#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:120 -#: ../../../config/strings.js.inc:66 -msgid "SI" -msgstr "YES" - -#: ../../../modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php:124 -#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:120 -#: ../../../config/strings.js.inc:67 -msgid "NO" -msgstr "NO" +#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:67 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:68 +#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:71 +#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:70 +#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:69 +#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:70 +#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:69 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:69 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:83 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:71 +#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:70 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:80 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:71 +#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:71 +msgid "Eliminar Seleccionados" +msgstr "Delete Selected" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php:141 -#: ../../../config/actions.xml:841 -msgid "Buscar Permiso" -msgstr "Search for Permission" - -#. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php:191 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php:192 -#: ../../../config/actions.xml:865 -msgid "Eliminar Permiso" -msgstr "Delete Permission" - -#. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:132 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:143 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:130 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:140 #: ../../../config/actions.xml:487 ../../../config/actions.xml:787 msgid "Buscar Cuenta" msgstr "Search for Account" -#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:90 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:87 msgid "Cuentas (H)" msgstr "Accounts (H)" -#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:105 -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:118 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:102 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:116 #: ../../../modules/web/themes/material-blue/views/account/account-editpass.inc:98 #: ../../../modules/web/themes/material-blue/views/account/account-history.inc:112 #: ../../../modules/web/themes/material-blue/views/account/account.inc:182 @@ -3530,95 +3461,107 @@ msgstr "Accounts (H)" msgid "Fecha" msgstr "Date" -#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:106 -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:122 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:103 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:120 #: ../../../modules/web/Controllers/Helpers/Grid/PluginGrid.php:102 msgid "Estado" msgstr "Status" -#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:127 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:124 msgid "Modificada" msgstr "Modified" -#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:128 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:125 msgid "Eliminada" msgstr "Removed" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:158 -#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:159 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:155 +#: ../../../modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php:156 #: ../../../config/actions.xml:181 ../../../config/actions.xml:793 msgid "Restaurar Cuenta" msgstr "Account Restore" -#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:93 +#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:90 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:357 msgid "Autorizaciones API" msgstr "API Authorizations" -#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:138 +#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:135 msgid "Buscar Token" msgstr "Search for Token" -#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:171 -#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:172 +#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:168 +#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:169 msgid "Ver token de Autorización" msgstr "View Authorization token" -#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:205 -#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:206 +#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:202 +#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:203 msgid "Eliminar Autorización" msgstr "Delete Authorization" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:134 +#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:132 #: ../../../config/actions.xml:319 msgid "Buscar Categoría" msgstr "Search for Category" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:184 -#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:185 +#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:182 +#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:183 #: ../../../config/actions.xml:313 msgid "Eliminar Categoría" msgstr "Delete Category" +#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:118 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:124 +#: ../../../config/strings.js.inc:66 +msgid "SI" +msgstr "YES" + +#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:118 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:124 +#: ../../../config/strings.js.inc:67 +msgid "NO" +msgstr "NO" + #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:137 +#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:135 #: ../../../config/actions.xml:349 msgid "Buscar Cliente" msgstr "Search for Client" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:187 -#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:188 +#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:185 +#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:186 #: ../../../config/actions.xml:343 msgid "Eliminar Cliente" msgstr "Delete Client" -#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:91 +#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:90 #: ../../../modules/web/themes/material-blue/views/account/account.inc:27 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:341 msgid "Campos Personalizados" msgstr "Custom Fields" -#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:104 +#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:103 #: ../../../modules/web/themes/material-blue/views/itemshow/custom_field.inc:45 #: ../../../modules/web/themes/material-blue/views/itemshow/custom_field.inc:47 msgid "Módulo" msgstr "Module" -#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:106 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:118 +#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:105 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:115 msgid "Propiedades" msgstr "Properties" -#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:140 +#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:139 msgid "Buscar Campo" msgstr "Search for Field" +#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:189 #: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:190 -#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:191 msgid "Eliminar Campo" msgstr "Delete Field" @@ -3643,7 +3586,7 @@ msgid "Evento" msgstr "Event" #: ../../../modules/web/Controllers/Helpers/Grid/EventlogGrid.php:104 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:115 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:112 #: ../../../modules/web/themes/material-blue/views/itemshow/user.inc:44 #: ../../../modules/web/themes/material-blue/views/itemshow/user_pass.inc:26 msgid "Login" @@ -3668,7 +3611,7 @@ msgid "Vaciar registro de eventos" msgstr "Clear event log" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:90 +#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:89 #: ../../../modules/web/themes/material-blue/views/account/account.inc:35 #: ../../../modules/web/themes/material-blue/views/config/accounts.inc:277 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:145 @@ -3678,37 +3621,84 @@ msgid "Archivos" msgstr "Files" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:141 +#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:140 #: ../../../config/actions.xml:469 msgid "Buscar Archivo" msgstr "Search for File" #. (itstool) path: action/text +#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:155 #: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:156 -#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:157 #: ../../../modules/web/themes/material-blue/views/account/files-list.inc:45 #: ../../../config/actions.xml:199 ../../../config/actions.xml:445 msgid "Ver Archivo" msgstr "View File" #. (itstool) path: action/text +#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:172 #: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:173 -#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:174 #: ../../../modules/web/themes/material-blue/views/account/files-list.inc:38 #: ../../../config/actions.xml:211 ../../../config/actions.xml:451 msgid "Descargar Archivo" msgstr "Download File" #. (itstool) path: action/text +#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:189 #: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:190 -#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:191 #: ../../../modules/web/themes/material-blue/views/account/files-list.inc:30 #: ../../../config/actions.xml:217 ../../../config/actions.xml:457 msgid "Eliminar Archivo" msgstr "Delete File" +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:88 +msgid "Valores por Defecto" +msgstr "Default Values" + +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:103 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:113 +#: ../../../modules/web/Controllers/UserProfileController.php:216 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:52 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:54 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:57 +#: ../../../modules/web/themes/material-blue/views/itemshow/user.inc:122 +#: ../../../modules/web/themes/material-blue/views/itemshow/user.inc:124 +msgid "Perfil" +msgstr "Profile" + +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:104 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:70 +msgid "Prioridad" +msgstr "Priority" + +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:105 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:106 +msgid "Forzado" +msgstr "Forced" + +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:141 +msgid "Buscar Valor" +msgstr "Search for Value" + #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:105 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:156 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:157 +#: ../../../config/actions.xml:853 +msgid "Nuevo Permiso" +msgstr "New Permission" + +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:177 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:178 +#: ../../../modules/web/Controllers/ItemPresetController.php:216 +msgid "Editar Valor" +msgstr "Edit Value" + +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:194 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:195 +msgid "Eliminar Valor" +msgstr "Delete Value" + +#. (itstool) path: action/text +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:103 #: ../../../modules/web/themes/material-blue/inc/Icons.php:67 #: ../../../modules/web/themes/material-blue/views/_partials/fixed-header.inc:105 #: ../../../modules/web/themes/material-blue/views/notification/index.inc:1 @@ -3716,60 +3706,60 @@ msgstr "Delete File" msgid "Notificaciones" msgstr "Notifications" -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:120 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:118 #: ../../../modules/web/themes/material-blue/views/notification/notification.inc:28 #: ../../../modules/web/themes/material-blue/views/notification/notification.inc:35 msgid "Componente" msgstr "Component" -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:142 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:140 #: ../../../modules/web/themes/material-blue/views/notification/notification.inc:104 #: ../../../modules/web/themes/material-blue/views/notification/notification.inc:108 msgid "Leída" msgstr "Read" -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:143 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:141 msgid "Sólo Admins" msgstr "Only Admins" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:160 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:158 #: ../../../config/actions.xml:829 msgid "Buscar Notificación" msgstr "Search for Notification" -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:175 -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:176 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:173 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:174 #: ../../../modules/web/Controllers/NotificationController.php:179 msgid "Nueva Notificación" msgstr "New Notification" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:193 -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:194 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:191 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:192 #: ../../../modules/web/Controllers/NotificationController.php:103 #: ../../../config/actions.xml:799 msgid "Ver Notificación" msgstr "View Notification" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:223 -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:224 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:221 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:222 #: ../../../config/actions.xml:823 msgid "Marcar Notificación" msgstr "Checkout Notification" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:241 -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:242 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:239 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:240 #: ../../../modules/web/Controllers/NotificationController.php:210 #: ../../../config/actions.xml:811 msgid "Editar Notificación" msgstr "Edit Notification" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:258 -#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:259 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:256 +#: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:257 #: ../../../config/actions.xml:817 msgid "Eliminar Notificación" msgstr "Delete Notification" @@ -3815,32 +3805,32 @@ msgstr "Disable" msgid "Restablecer Datos" msgstr "Reset Data" -#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:93 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:91 #: ../../../modules/web/themes/material-blue/views/account/account.inc:43 msgid "Enlaces" msgstr "Links" -#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:107 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:105 #: ../../../modules/web/themes/material-blue/views/itemshow/public_link.inc:44 #: ../../../modules/web/themes/material-blue/views/itemshow/public_link.inc:46 msgid "Fecha Creación" msgstr "Creation Date" -#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:108 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:106 #: ../../../modules/web/themes/material-blue/views/account/search-rows.inc:182 #: ../../../modules/web/themes/material-blue/views/itemshow/public_link.inc:52 #: ../../../modules/web/themes/material-blue/views/itemshow/public_link.inc:54 msgid "Fecha Caducidad" msgstr "Expiry Date " -#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:110 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:108 #: ../../../modules/web/themes/material-blue/views/itemshow/public_link.inc:31 #: ../../../modules/web/themes/material-blue/views/itemshow/public_link.inc:34 #: ../../../modules/web/themes/material-blue/views/itemshow/public_link.inc:38 msgid "Notificar" msgstr "Notify" -#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:111 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:109 #: ../../../modules/web/themes/material-blue/views/account/details.inc:9 #: ../../../modules/web/themes/material-blue/views/account/details.inc:11 #: ../../../modules/web/themes/material-blue/views/account/search-rows.inc:184 @@ -3849,102 +3839,102 @@ msgstr "Notify" msgid "Visitas" msgstr "Visits" -#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:146 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:144 msgid "Buscar Enlace" msgstr "Search for Link" -#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:161 -#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:162 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:159 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:160 msgid "Nuevo Enlace" msgstr "New Link" -#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:179 -#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:180 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:177 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:178 #: ../../../modules/web/Controllers/PublicLinkController.php:336 msgid "Ver Enlace" msgstr "View Link" -#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:195 -#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:196 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:193 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:194 msgid "Renovar Enlace" msgstr "Renew Link" -#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:212 -#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:213 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:210 +#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:211 msgid "Eliminar Enlace" msgstr "Delete Link" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:132 +#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:130 #: ../../../config/actions.xml:517 msgid "Buscar Etiqueta" msgstr "Search for Tag" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:147 -#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:148 +#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:145 +#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:146 #: ../../../modules/web/Controllers/TagController.php:98 #: ../../../config/actions.xml:493 msgid "Nueva Etiqueta" msgstr "New Tag" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:165 -#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:166 +#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:163 +#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:164 #: ../../../modules/web/Controllers/TagController.php:157 #: ../../../config/actions.xml:505 msgid "Editar Etiqueta" msgstr "Edit Tag" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:182 -#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:183 +#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:180 +#: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:181 #: ../../../config/actions.xml:511 msgid "Eliminar Etiqueta" msgstr "Delete Tag" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:154 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:151 #: ../../../config/actions.xml:589 msgid "Buscar Usuario" msgstr "Search for User" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:169 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:170 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:166 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:167 #: ../../../modules/web/Controllers/UserController.php:105 #: ../../../config/actions.xml:565 msgid "Nuevo Usuario" msgstr "New User" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:187 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:188 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:184 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:185 #: ../../../modules/web/Controllers/UserController.php:190 #: ../../../config/actions.xml:571 msgid "Editar Usuario" msgstr "Edit User" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:204 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:205 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:201 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:202 #: ../../../config/actions.xml:577 msgid "Eliminar Usuario" msgstr "Delete User" -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:221 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:222 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:218 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:219 #: ../../../modules/web/themes/material-blue/views/config/ldap.inc:440 msgid "Importar usuarios de LDAP" msgstr "Import users from LDAP" -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:236 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:237 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:233 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:234 msgid "Ver Detalles de Usuario" msgstr "View User Details" -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:253 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:254 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:250 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGrid.php:251 #: ../../../modules/web/themes/material-blue/views/_partials/fixed-header.inc:62 #: ../../../modules/web/themes/material-blue/views/_partials/fixed-header.inc:120 #: ../../../modules/web/themes/material-blue/views/_partials/fixed-header.inc:126 @@ -3952,77 +3942,77 @@ msgid "Cambiar Clave de Usuario" msgstr "Change User's Password" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:136 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:133 #: ../../../config/actions.xml:619 msgid "Buscar Grupo" msgstr "Search for Group" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:151 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:152 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:148 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:149 #: ../../../modules/web/Controllers/UserGroupController.php:106 #: ../../../config/actions.xml:601 msgid "Nuevo Grupo" msgstr "New Group" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:169 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:170 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:166 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:167 #: ../../../modules/web/Controllers/UserGroupController.php:319 #: ../../../config/actions.xml:595 msgid "Ver Grupo" msgstr "View Group" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:186 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:187 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:183 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:184 #: ../../../modules/web/Controllers/UserGroupController.php:171 #: ../../../config/actions.xml:607 msgid "Editar Grupo" msgstr "Edit Group" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:203 -#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:204 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:200 +#: ../../../modules/web/Controllers/Helpers/Grid/UserGroupGrid.php:201 #: ../../../config/actions.xml:613 msgid "Eliminar Grupo" msgstr "Delete Group" -#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:93 +#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:90 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:277 msgid "Perfiles" msgstr "Profiles" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:134 +#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:131 #: ../../../config/actions.xml:649 msgid "Buscar Perfil" msgstr "Search for Profile" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:149 -#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:150 +#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:146 +#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:147 #: ../../../modules/web/Controllers/UserProfileController.php:100 #: ../../../config/actions.xml:631 msgid "Nuevo Perfil" msgstr "New Profile" -#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:167 -#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:168 +#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:164 +#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:165 msgid "Ver Detalles de Perfil" msgstr "View Profile Details" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:184 -#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:185 +#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:181 +#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:182 #: ../../../modules/web/Controllers/UserProfileController.php:166 #: ../../../config/actions.xml:637 msgid "Editar Perfil" msgstr "Edit Profile" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:201 -#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:202 +#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:198 +#: ../../../modules/web/Controllers/Helpers/Grid/UserProfileGrid.php:199 #: ../../../config/actions.xml:643 msgid "Eliminar Perfil" msgstr "Delete Profile" @@ -4065,6 +4055,34 @@ msgstr "Without this module the application could not run correctly" msgid "Instalación finalizada" msgstr "Installation finished" +#: ../../../modules/web/Controllers/ItemPresetController.php:70 +msgid "Ver Valor" +msgstr "Display Value" + +#: ../../../modules/web/Controllers/ItemPresetController.php:186 +msgid "Nuevo Valor" +msgstr "New Value" + +#: ../../../modules/web/Controllers/ItemPresetController.php:253 +#: ../../../modules/web/Controllers/ItemPresetController.php:256 +msgid "Valores eliminados" +msgstr "Values deleted" + +#: ../../../modules/web/Controllers/ItemPresetController.php:264 +#: ../../../modules/web/Controllers/ItemPresetController.php:268 +msgid "Valor eliminado" +msgstr "Value deleted" + +#: ../../../modules/web/Controllers/ItemPresetController.php:296 +#: ../../../modules/web/Controllers/ItemPresetController.php:301 +msgid "Valor creado" +msgstr "Value created" + +#: ../../../modules/web/Controllers/ItemPresetController.php:335 +#: ../../../modules/web/Controllers/ItemPresetController.php:340 +msgid "Valor actualizado" +msgstr "Value updated" + #: ../../../modules/web/Controllers/LoginController.php:101 msgid "Finalizar sesión" msgstr "Logout session" @@ -4295,14 +4313,6 @@ msgstr "Preferences updated" msgid "Preferencias" msgstr "Preferences" -#: ../../../modules/web/Forms/AccountDefaultPermissionForm.php:111 -msgid "Es necesario asignar un elemento del tipo usuario, grupo o perfil" -msgstr "An element of type user, group or profile need to be set" - -#: ../../../modules/web/Forms/AccountDefaultPermissionForm.php:115 -msgid "No hay permisos definidos" -msgstr "There aren't any defined permissions" - #: ../../../modules/web/Forms/AccountForm.php:139 msgid "Es necesaria una clave" msgstr "A key is needed" @@ -4348,6 +4358,18 @@ msgstr "Field type not set" msgid "Módulo del campo no indicado" msgstr "Field module not set" +#: ../../../modules/web/Forms/ItemsPresetForm.php:102 +msgid "Tipo de valor no definido o incorrecto" +msgstr "Value type not set or incorrect" + +#: ../../../modules/web/Forms/ItemsPresetForm.php:119 +msgid "No hay permisos definidos" +msgstr "There aren't any defined permissions" + +#: ../../../modules/web/Forms/ItemsPresetForm.php:136 +msgid "Es necesario asignar un elemento del tipo usuario, grupo o perfil" +msgstr "An element of type user, group or profile need to be set" + #: ../../../modules/web/Forms/NotificationForm.php:92 msgid "Es necesario un componente" msgstr "A component is needed" @@ -4411,8 +4433,8 @@ msgstr "View Details" #: ../../../modules/web/themes/material-blue/inc/Icons.php:37 #: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:33 #: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:71 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:138 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:177 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset-permission.inc:24 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset-permission.inc:63 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:97 msgid "Editar" msgstr "Edit" @@ -4611,7 +4633,7 @@ msgstr "Clear event log?" #: ../../../modules/web/themes/material-blue/views/config/general-auth.inc:87 #: ../../../modules/web/themes/material-blue/views/config/import.inc:57 #: ../../../modules/web/themes/material-blue/views/config/ldap.inc:233 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:40 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:41 #: ../../../modules/web/themes/material-blue/views/itemshow/user.inc:145 msgid "Seleccionar Grupo" msgstr "Select Group" @@ -4621,14 +4643,14 @@ msgstr "Select Group" #: ../../../modules/web/themes/material-blue/views/config/general-auth.inc:112 #: ../../../modules/web/themes/material-blue/views/config/import.inc:30 #: ../../../modules/web/themes/material-blue/views/config/ldap.inc:258 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:23 #: ../../../modules/web/themes/material-blue/views/itemshow/auth_token.inc:21 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:24 #: ../../../modules/web/themes/material-blue/views/notification/notification.inc:74 msgid "Seleccionar Usuario" msgstr "Select User" #: ../../../config/strings.js.inc:49 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:57 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:58 #: ../../../modules/web/themes/material-blue/views/itemshow/user.inc:128 msgid "Seleccionar Perfil" msgstr "Select Profile" @@ -4923,24 +4945,24 @@ msgstr "Last Modification" #: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:17 #: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:55 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:122 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:161 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset-permission.inc:8 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset-permission.inc:47 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:48 msgid "Ver" msgstr "View" #: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:21 #: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:37 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:126 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:142 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset-permission.inc:12 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset-permission.inc:28 #: ../../../modules/web/themes/material-blue/views/itemshow/user_group.inc:51 msgid "Seleccionar Usuarios" msgstr "Select Users" #: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:59 #: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:75 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:165 -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:181 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset-permission.inc:51 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset-permission.inc:67 msgid "Seleccionar Grupos" msgstr "Select Groups" @@ -6308,10 +6330,6 @@ msgstr "Namespace used to search pages." msgid "Instalar" msgstr "Install" -#: ../../../modules/web/themes/material-blue/views/grid/datagrid-grid.inc:97 -msgid "Eliminar Seleccionados" -msgstr "Delete Selected" - #: ../../../modules/web/themes/material-blue/views/grid/datagrid-nav-full.inc:11 msgid "Filtro ON" msgstr "Filter ON" @@ -6373,28 +6391,6 @@ msgstr "Hosting Mode" msgid "No crea ni verifica los permisos del usuario sobre la BBDD" msgstr "It does not create or verify the user's permissions on the DB" -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:75 -msgid "" -"Prioridad de asignación en caso de coincidir con otros permisos asignados " -"por usuario, grupo o perfil." -msgstr "" -"Assignment priority if permissions match with others assigned by user, group " -"or profile." - -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:86 -msgid "Prioridad de asignación" -msgstr "Assignment Priority" - -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:107 -msgid "Indica si los permisos serán forzados al crear o modificar la cuenta." -msgstr "" -"Enforces the permissions to be set either on creating or updating an " -"account ." - -#: ../../../modules/web/themes/material-blue/views/itemshow/account_default_permission.inc:109 -msgid "Los permisos serán añadidos a los existentes." -msgstr "Permissions will be merged with the existing ones." - #: ../../../modules/web/themes/material-blue/views/itemshow/auth_token.inc:58 #: ../../../modules/web/themes/material-blue/views/itemshow/user.inc:12 #: ../../../modules/web/themes/material-blue/views/notification/notification.inc:85 @@ -6439,6 +6435,27 @@ msgstr "Field help" msgid "Obligatorio" msgstr "Required" +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:76 +msgid "" +"Prioridad de asignación en caso de coincidir con otros valores asignados por " +"usuario, grupo o perfil." +msgstr "" +"Assignment priority if values match with others assigned by user, group or " +"profile." + +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:87 +msgid "Prioridad de asignación" +msgstr "Assignment Priority" + +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:108 +msgid "" +"Indica si los valores serán forzados al crear o modificar los elementos." +msgstr "Enforces the values to be set either on creating or updating an item." + +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:110 +msgid "Los valores serán añadidos a los existentes." +msgstr "Values will be merged with the existing ones." + #: ../../../modules/web/themes/material-blue/views/itemshow/plugin.inc:20 msgid "Nombre del plugin" msgstr "Plugin name" @@ -6665,8 +6682,8 @@ msgid "Gestión de cuentas" msgstr "Accounts management" #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:422 -msgid "Gestión de Permisos" -msgstr "Permissions Management" +msgid "Gestión de Valores por Defecto" +msgstr "Default Values Management" #. (itstool) path: action/text #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:442 @@ -7199,6 +7216,26 @@ msgstr "Create Notification" msgid "Gestión Permisos" msgstr "Permissions Management" +#. (itstool) path: action/text +#: ../../../config/actions.xml:841 +msgid "Buscar Permiso" +msgstr "Search for Permission" + +#. (itstool) path: action/text +#: ../../../config/actions.xml:847 +msgid "Ver Permiso" +msgstr "View Permission" + +#. (itstool) path: action/text +#: ../../../config/actions.xml:859 +msgid "Editar Permiso" +msgstr "Edit Permission" + +#. (itstool) path: action/text +#: ../../../config/actions.xml:865 +msgid "Eliminar Permiso" +msgstr "Delete Permission" + #. (itstool) path: strings/text #: ../../../config/strings.xml:4 msgid "Color" @@ -7229,6 +7266,24 @@ msgstr "Text" msgid "Link" msgstr "Link" +#~ msgid "Permiso no encontrada" +#~ msgstr "Permission not found" + +#~ msgid "Permisos eliminados" +#~ msgstr "Permissions deleted" + +#~ msgid "Permiso eliminado" +#~ msgstr "Permission deleted" + +#~ msgid "Permiso creado" +#~ msgstr "Permission added" + +#~ msgid "Permiso actualizado" +#~ msgstr "Permission updated" + +#~ msgid "Gestión de Permisos" +#~ msgstr "Permissions Management" + #, fuzzy #~ msgid "Error al eliminar permisos" #~ msgstr "Error while removing the profile" @@ -7394,9 +7449,6 @@ msgstr "Link" #~ msgid "Modificar configuración" #~ msgstr "Update Configuration" -#~ msgid "Valor" -#~ msgstr "Value" - #~ msgid "Sección" #~ msgstr "Section" diff --git a/app/modules/web/Controllers/AccessManagerController.php b/app/modules/web/Controllers/AccessManagerController.php index 687509ab..1bdcadaa 100644 --- a/app/modules/web/Controllers/AccessManagerController.php +++ b/app/modules/web/Controllers/AccessManagerController.php @@ -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 */ diff --git a/app/modules/web/Controllers/Helpers/Account/AccountHelper.php b/app/modules/web/Controllers/Helpers/Account/AccountHelper.php index 4519959d..85db694d 100644 --- a/app/modules/web/Controllers/Helpers/Account/AccountHelper.php +++ b/app/modules/web/Controllers/Helpers/Account/AccountHelper.php @@ -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'); diff --git a/app/modules/web/Controllers/Helpers/Grid/AccountGrid.php b/app/modules/web/Controllers/Helpers/Grid/AccountGrid.php index 6f956a12..7038c2f3 100644 --- a/app/modules/web/Controllers/Helpers/Grid/AccountGrid.php +++ b/app/modules/web/Controllers/Helpers/Grid/AccountGrid.php @@ -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)); diff --git a/app/modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php b/app/modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php index 53d465f8..29f09c68 100644 --- a/app/modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php +++ b/app/modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php @@ -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)); diff --git a/app/modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php b/app/modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php index b25dc4db..7757bb17 100644 --- a/app/modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php +++ b/app/modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php @@ -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)); diff --git a/app/modules/web/Controllers/Helpers/Grid/CategoryGrid.php b/app/modules/web/Controllers/Helpers/Grid/CategoryGrid.php index 34b3dac0..dba47f0c 100644 --- a/app/modules/web/Controllers/Helpers/Grid/CategoryGrid.php +++ b/app/modules/web/Controllers/Helpers/Grid/CategoryGrid.php @@ -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)); diff --git a/app/modules/web/Controllers/Helpers/Grid/ClientGrid.php b/app/modules/web/Controllers/Helpers/Grid/ClientGrid.php index 7dbf92d3..db700d6e 100644 --- a/app/modules/web/Controllers/Helpers/Grid/ClientGrid.php +++ b/app/modules/web/Controllers/Helpers/Grid/ClientGrid.php @@ -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)); diff --git a/app/modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php b/app/modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php index c1dba695..3382f6bf 100644 --- a/app/modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php +++ b/app/modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php @@ -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)); diff --git a/app/modules/web/Controllers/Helpers/Grid/FileGrid.php b/app/modules/web/Controllers/Helpers/Grid/FileGrid.php index c3fbdf08..6cc846f8 100644 --- a/app/modules/web/Controllers/Helpers/Grid/FileGrid.php +++ b/app/modules/web/Controllers/Helpers/Grid/FileGrid.php @@ -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)); diff --git a/app/modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php b/app/modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php similarity index 78% rename from app/modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php rename to app/modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php index 1484bc78..76086b7b 100644 --- a/app/modules/web/Controllers/Helpers/Grid/AccountDefaultPermissionGrid.php +++ b/app/modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php @@ -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; } diff --git a/app/modules/web/Controllers/Helpers/Grid/NotificationGrid.php b/app/modules/web/Controllers/Helpers/Grid/NotificationGrid.php index e1536ccd..b8845a8d 100644 --- a/app/modules/web/Controllers/Helpers/Grid/NotificationGrid.php +++ b/app/modules/web/Controllers/Helpers/Grid/NotificationGrid.php @@ -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)); diff --git a/app/modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php b/app/modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php index 2fd614e9..b222869a 100644 --- a/app/modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php +++ b/app/modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php @@ -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)); diff --git a/app/modules/web/Controllers/Helpers/Grid/TagGrid.php b/app/modules/web/Controllers/Helpers/Grid/TagGrid.php index a7f26b01..68a4df7a 100644 --- a/app/modules/web/Controllers/Helpers/Grid/TagGrid.php +++ b/app/modules/web/Controllers/Helpers/Grid/TagGrid.php @@ -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)); diff --git a/app/modules/web/Controllers/Helpers/Grid/UserGrid.php b/app/modules/web/Controllers/Helpers/Grid/UserGrid.php index 0f53c18a..3aa62618 100644 --- a/app/modules/web/Controllers/Helpers/Grid/UserGrid.php +++ b/app/modules/web/Controllers/Helpers/Grid/UserGrid.php @@ -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)); diff --git a/app/modules/web/Controllers/Helpers/Grid/UserGroupGrid.php b/app/modules/web/Controllers/Helpers/Grid/UserGroupGrid.php index a2290bd2..b029668f 100644 --- a/app/modules/web/Controllers/Helpers/Grid/UserGroupGrid.php +++ b/app/modules/web/Controllers/Helpers/Grid/UserGroupGrid.php @@ -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)); diff --git a/app/modules/web/Controllers/Helpers/Grid/UserProfileGrid.php b/app/modules/web/Controllers/Helpers/Grid/UserProfileGrid.php index 3c652637..1ee96709 100644 --- a/app/modules/web/Controllers/Helpers/Grid/UserProfileGrid.php +++ b/app/modules/web/Controllers/Helpers/Grid/UserProfileGrid.php @@ -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)); diff --git a/app/modules/web/Controllers/Helpers/ItemPresetHelper.php b/app/modules/web/Controllers/Helpers/ItemPresetHelper.php new file mode 100644 index 00000000..f88e7590 --- /dev/null +++ b/app/modules/web/Controllers/Helpers/ItemPresetHelper.php @@ -0,0 +1,93 @@ +. + */ + +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()); + } +} \ No newline at end of file diff --git a/app/modules/web/Controllers/ItemManagerController.php b/app/modules/web/Controllers/ItemManagerController.php index 6ab288fc..652364c1 100644 --- a/app/modules/web/Controllers/ItemManagerController.php +++ b/app/modules/web/Controllers/ItemManagerController.php @@ -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 * diff --git a/app/modules/web/Controllers/AccountDefaultPermissionController.php b/app/modules/web/Controllers/ItemPresetController.php similarity index 59% rename from app/modules/web/Controllers/AccountDefaultPermissionController.php rename to app/modules/web/Controllers/ItemPresetController.php index 76a031b3..05a74e9c 100644 --- a/app/modules/web/Controllers/AccountDefaultPermissionController.php +++ b/app/modules/web/Controllers/ItemPresetController.php @@ -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); } } \ No newline at end of file diff --git a/app/modules/web/Forms/AccountDefaultPermissionForm.php b/app/modules/web/Forms/ItemsPresetForm.php similarity index 58% rename from app/modules/web/Forms/AccountDefaultPermissionForm.php rename to app/modules/web/Forms/ItemsPresetForm.php index 51d3f404..e31fb773 100644 --- a/app/modules/web/Forms/AccountDefaultPermissionForm.php +++ b/app/modules/web/Forms/ItemsPresetForm.php @@ -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; } } \ No newline at end of file diff --git a/app/modules/web/Forms/UserProfileForm.php b/app/modules/web/Forms/UserProfileForm.php index 09b704e9..92b2a779 100644 --- a/app/modules/web/Forms/UserProfileForm.php +++ b/app/modules/web/Forms/UserProfileForm.php @@ -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)); diff --git a/app/modules/web/themes/material-blue/views/grid/datagrid-grid.inc b/app/modules/web/themes/material-blue/views/grid/datagrid-grid.inc index b73f8a90..7198cf0f 100644 --- a/app/modules/web/themes/material-blue/views/grid/datagrid-grid.inc +++ b/app/modules/web/themes/material-blue/views/grid/datagrid-grid.inc @@ -94,7 +94,7 @@ if (!isset($index)): $index = 0; endif; data-onclick="getOnClick(); ?>" getData() as $dataName => $dataValue): echo 'data-', $dataName, '=', '"', $dataValue, '"'; endforeach; ?>> getIcon()->getIcon(); ?> - + getTitle(); ?> diff --git a/app/modules/web/themes/material-blue/views/grid/datagrid-table.inc b/app/modules/web/themes/material-blue/views/grid/datagrid-table.inc index 593b5c94..a8832e9b 100644 --- a/app/modules/web/themes/material-blue/views/grid/datagrid-table.inc +++ b/app/modules/web/themes/material-blue/views/grid/datagrid-table.inc @@ -1,7 +1,7 @@ diff --git a/app/modules/web/themes/material-blue/views/itemshow/item_preset-permission.inc b/app/modules/web/themes/material-blue/views/itemshow/item_preset-permission.inc new file mode 100644 index 00000000..088200cf --- /dev/null +++ b/app/modules/web/themes/material-blue/views/itemshow/item_preset-permission.inc @@ -0,0 +1,81 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/modules/web/themes/material-blue/views/itemshow/account_default_permission.inc b/app/modules/web/themes/material-blue/views/itemshow/item_preset.inc similarity index 54% rename from app/modules/web/themes/material-blue/views/itemshow/account_default_permission.inc rename to app/modules/web/themes/material-blue/views/itemshow/item_preset.inc index 56b34819..056bd3b3 100644 --- a/app/modules/web/themes/material-blue/views/itemshow/account_default_permission.inc +++ b/app/modules/web/themes/material-blue/views/itemshow/item_preset.inc @@ -1,12 +1,13 @@

close

-
getIconHelp()->getIcon(); ?>

- +

@@ -81,7 +82,7 @@ + value="getPriority(); ?>"/> @@ -97,16 +98,16 @@ - +
- +
@@ -114,94 +115,19 @@ - - - - - - - - - - - - - + includeTemplate($typeTemplate, 'itemshow'); endif; ?> +
diff --git a/app/modules/web/themes/material-blue/views/itemshow/user_profile.inc b/app/modules/web/themes/material-blue/views/itemshow/user_profile.inc index 7a35fb09..c7c87574 100644 --- a/app/modules/web/themes/material-blue/views/itemshow/user_profile.inc +++ b/app/modules/web/themes/material-blue/views/itemshow/user_profile.inc @@ -419,14 +419,14 @@ vpn_key - + - diff --git a/lib/SP/Core/Acl/Acl.php b/lib/SP/Core/Acl/Acl.php index 315589f6..e8e0137b 100644 --- a/lib/SP/Core/Acl/Acl.php +++ b/lib/SP/Core/Acl/Acl.php @@ -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: diff --git a/lib/SP/Core/Acl/ActionsInterface.php b/lib/SP/Core/Acl/ActionsInterface.php index d3e3831c..0a428b36 100644 --- a/lib/SP/Core/Acl/ActionsInterface.php +++ b/lib/SP/Core/Acl/ActionsInterface.php @@ -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; diff --git a/lib/SP/Core/Exceptions/NoSuchPropertyException.php b/lib/SP/Core/Exceptions/NoSuchPropertyException.php new file mode 100644 index 00000000..d1b03e24 --- /dev/null +++ b/lib/SP/Core/Exceptions/NoSuchPropertyException.php @@ -0,0 +1,35 @@ +. + */ + +namespace SP\Core\Exceptions; + +/** + * Class NoSuchPropertyException + * + * @package SP\Core\Exceptions + */ +class NoSuchPropertyException extends \Exception +{ + +} \ No newline at end of file diff --git a/lib/SP/DataModel/HydratableInterface.php b/lib/SP/DataModel/HydratableInterface.php new file mode 100644 index 00000000..f96c8949 --- /dev/null +++ b/lib/SP/DataModel/HydratableInterface.php @@ -0,0 +1,42 @@ +. + */ + +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'); +} \ No newline at end of file diff --git a/lib/SP/DataModel/AccountDefaultPermissionData.php b/lib/SP/DataModel/ItemPresetData.php similarity index 71% rename from lib/SP/DataModel/AccountDefaultPermissionData.php rename to lib/SP/DataModel/ItemPresetData.php index 47d78e2d..9826e861 100644 --- a/lib/SP/DataModel/AccountDefaultPermissionData.php +++ b/lib/SP/DataModel/ItemPresetData.php @@ -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; } } \ No newline at end of file diff --git a/lib/SP/DataModel/ProfileData.php b/lib/SP/DataModel/ProfileData.php index 47cef519..e8063430 100644 --- a/lib/SP/DataModel/ProfileData.php +++ b/lib/SP/DataModel/ProfileData.php @@ -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; } diff --git a/lib/SP/Repositories/Account/AccountDefaultPermissionRepository.php b/lib/SP/Repositories/ItemPreset/ItemPresetRepository.php similarity index 72% rename from lib/SP/Repositories/Account/AccountDefaultPermissionRepository.php rename to lib/SP/Repositories/ItemPreset/ItemPresetRepository.php index 2a7af5eb..8d10a822 100644 --- a/lib/SP/Repositories/Account/AccountDefaultPermissionRepository.php +++ b/lib/SP/Repositories/ItemPreset/ItemPresetRepository.php @@ -22,9 +22,9 @@ * along with sysPass. If not, see . */ -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()); - } } \ No newline at end of file diff --git a/lib/SP/Services/Account/AccountService.php b/lib/SP/Services/Account/AccountService.php index 60adb84f..6c61c3ff 100644 --- a/lib/SP/Services/Account/AccountService.php +++ b/lib/SP/Services/Account/AccountService.php @@ -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); } } \ No newline at end of file diff --git a/lib/SP/Services/Install/Installer.php b/lib/SP/Services/Install/Installer.php index 671dc35b..b933e0d1 100644 --- a/lib/SP/Services/Install/Installer.php +++ b/lib/SP/Services/Install/Installer.php @@ -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 diff --git a/lib/SP/Services/ItemPreset/ItemPresetInterface.php b/lib/SP/Services/ItemPreset/ItemPresetInterface.php new file mode 100644 index 00000000..06b29a37 --- /dev/null +++ b/lib/SP/Services/ItemPreset/ItemPresetInterface.php @@ -0,0 +1,38 @@ +. + */ + +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'; +} \ No newline at end of file diff --git a/lib/SP/Services/ItemPreset/ItemPresetRequest.php b/lib/SP/Services/ItemPreset/ItemPresetRequest.php new file mode 100644 index 00000000..436930e2 --- /dev/null +++ b/lib/SP/Services/ItemPreset/ItemPresetRequest.php @@ -0,0 +1,83 @@ +. + */ + +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; + } +} \ No newline at end of file diff --git a/lib/SP/Services/Account/AccountDefaultPermissionService.php b/lib/SP/Services/ItemPreset/ItemPresetService.php similarity index 59% rename from lib/SP/Services/Account/AccountDefaultPermissionService.php rename to lib/SP/Services/ItemPreset/ItemPresetService.php index 1fa908f9..7334c241 100644 --- a/lib/SP/Services/Account/AccountDefaultPermissionService.php +++ b/lib/SP/Services/ItemPreset/ItemPresetService.php @@ -22,50 +22,50 @@ * along with sysPass. If not, see . */ -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); } } \ No newline at end of file diff --git a/lib/SP/Services/Upgrade/UpgradeDatabaseService.php b/lib/SP/Services/Upgrade/UpgradeDatabaseService.php index 815b6892..649bdda7 100644 --- a/lib/SP/Services/Upgrade/UpgradeDatabaseService.php +++ b/lib/SP/Services/Upgrade/UpgradeDatabaseService.php @@ -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) { diff --git a/lib/SP/Storage/Database/QueryResult.php b/lib/SP/Storage/Database/QueryResult.php index cf66ec85..7895e07e 100644 --- a/lib/SP/Storage/Database/QueryResult.php +++ b/lib/SP/Storage/Database/QueryResult.php @@ -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]; } diff --git a/schemas/30018083002.sql b/schemas/30018083002.sql new file mode 100644 index 00000000..51903790 --- /dev/null +++ b/schemas/30018083002.sql @@ -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)) $$ \ No newline at end of file diff --git a/schemas/dbstructure.sql b/schemas/dbstructure.sql index 31eeb25f..9136e0f7 100644 --- a/schemas/dbstructure.sql +++ b/schemas/dbstructure.sql @@ -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, diff --git a/tests/SP/Repositories/AccountDefaultPermissionRepositoryTest.php b/tests/SP/Repositories/ItemPresetRepositoryTest.php similarity index 80% rename from tests/SP/Repositories/AccountDefaultPermissionRepositoryTest.php rename to tests/SP/Repositories/ItemPresetRepositoryTest.php index 27a78738..54e30d1a 100644 --- a/tests/SP/Repositories/AccountDefaultPermissionRepositoryTest.php +++ b/tests/SP/Repositories/ItemPresetRepositoryTest.php @@ -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()); } diff --git a/tests/SP/Services/Account/AccountDefaultPermissionServiceTest.php b/tests/SP/Services/ItemPreset/ItemPresetServiceTest.php similarity index 77% rename from tests/SP/Services/Account/AccountDefaultPermissionServiceTest.php rename to tests/SP/Services/ItemPreset/ItemPresetServiceTest.php index 8d70ddec..f1aaaaa4 100644 --- a/tests/SP/Services/Account/AccountDefaultPermissionServiceTest.php +++ b/tests/SP/Services/ItemPreset/ItemPresetServiceTest.php @@ -22,27 +22,28 @@ * along with sysPass. If not, see . */ -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); } } diff --git a/tests/res/config/actions.xml b/tests/res/config/actions.xml index 768a5b1d..c472d2e1 100644 --- a/tests/res/config/actions.xml +++ b/tests/res/config/actions.xml @@ -328,7 +328,7 @@ 304 CLIENT_CREATE - Nuevo CLiente + Nuevo Cliente client/create @@ -829,4 +829,40 @@ Buscar Notificación notification/search + + 1801 + ITEMPRESET + Gestión Permisos + itemPreset/index + + + 1802 + ITEMPRESET_SEARCH + Buscar Permiso + itemPreset/search + + + 1803 + ITEMPRESET_VIEW + Ver Permiso + itemPreset/view + + + 1804 + ITEMPRESET_CREATE + Nuevo Permiso + itemPreset/create + + + 1805 + ITEMPRESET_EDIT + Editar Permiso + itemPreset/edit + + + 1806 + ITEMPRESET_DELETE + Eliminar Permiso + itemPreset/delete + \ No newline at end of file diff --git a/tests/res/config/config.xml b/tests/res/config/config.xml index ad6a2301..e0825a18 100644 --- a/tests/res/config/config.xml +++ b/tests/res/config/config.xml @@ -9,11 +9,11 @@ 1 1 - e3a34a99dcadc6abf94883a67e91ed05f49eed81 + c8fe86b8b3f1ac71e62daf6c731065910f775dcf 0 0 - 1535584064 - 0cf71c39a7de70930b31dd6c12631cbf2849a44b + 1535637654 + c6cfea1957d8c1b4e30c916f724197a432159564 @@ -32,7 +32,7 @@ 0 - 0d5bfbb33cdcc40548d29018157bf99a1c03b528 + d635cf0e628e8214b00aff938a09f5be6158e590 PDF JPG diff --git a/tests/res/datasets/syspass.xml b/tests/res/datasets/syspass.xml index 1ae75638..f941c7b5 100644 --- a/tests/res/datasets/syspass.xml +++ b/tests/res/datasets/syspass.xml @@ -540,6 +540,6 @@ 0 - + diff --git a/tests/res/datasets/syspass_account.xml b/tests/res/datasets/syspass_account.xml index d6e03edf..6763c26a 100644 --- a/tests/res/datasets/syspass_account.xml +++ b/tests/res/datasets/syspass_account.xml @@ -432,6 +432,6 @@ 0 - + diff --git a/tests/res/datasets/syspass_accountDefaultPermission.xml b/tests/res/datasets/syspass_itemPreset.xml similarity index 94% rename from tests/res/datasets/syspass_accountDefaultPermission.xml rename to tests/res/datasets/syspass_itemPreset.xml index fc42ef0e..be20ecb8 100644 --- a/tests/res/datasets/syspass_accountDefaultPermission.xml +++ b/tests/res/datasets/syspass_itemPreset.xml @@ -141,7 +141,7 @@ - + 1 1 @@ -149,8 +149,9 @@ 0 0 - - e3cbba8883fe746c6e35783c9404b4bc0c7ee9eb + + permission + 284985459df4616aa682a6de4c4994a9fedf164d 2 @@ -159,8 +160,9 @@ 0 10 - - 9c5975f336463693254939bfde7042459607d834 + + permission + ac1de29cfbc9db8c63b3b109c899148e904ccced 3 @@ -169,8 +171,9 @@ 1 0 20 - - 19fc3ecd72937e313c4a4a7023eb0ab07890cee7 + + permission + 3ec16d2bece6de02ed9423f98fcaaba260ffd36b 4 @@ -179,8 +182,9 @@ 0 0 - - a4ac914c09d7c097fe1f4f96b897e625b6922069 + + permission + 8eca5d3518e5531aa968ce0d5a7221f659f5d0ee 5 @@ -189,8 +193,9 @@ 3 0 10 - - 0e718dd1e04a0f28f7e31ddfaed950e2d70ee477 + + permission + fa66da8c08bf2728dfa90bb0682494a763dc0c11