From 3e43d6ec28a1e021bf6b98c72fa40dcfcec3d02b Mon Sep 17 00:00:00 2001 From: nuxsmin Date: Fri, 31 Aug 2018 01:49:43 +0200 Subject: [PATCH] * [ADD] New preset option for private accounts. * [MOD] Code refactoring. --- app/locales/en_US/LC_MESSAGES/messages.mo | Bin 102048 -> 102507 bytes app/locales/en_US/LC_MESSAGES/messages.po | 318 ++++++++++-------- .../Helpers/Account/AccountHelper.php | 22 +- .../Helpers/Grid/ItemPresetGrid.php | 28 +- .../Controllers/Helpers/ItemPresetHelper.php | 29 +- .../web/Controllers/Helpers/LayoutHelper.php | 28 +- .../web/Controllers/ItemPresetController.php | 8 +- app/modules/web/Forms/ItemsPresetForm.php | 18 +- .../views/account/account-permissions.inc | 15 +- .../views/itemshow/item_preset-private.inc | 50 +++ lib/SP/Bootstrap.php | 2 +- lib/SP/DataModel/AccountPrivate.php | 74 ++++ lib/SP/Services/Account/AccountService.php | 87 +++-- .../ItemPreset/ItemPresetInterface.php | 10 +- schemas/30018083002.sql | 2 +- tests/res/config/config.xml | 8 +- 16 files changed, 471 insertions(+), 228 deletions(-) create mode 100644 app/modules/web/themes/material-blue/views/itemshow/item_preset-private.inc create mode 100644 lib/SP/DataModel/AccountPrivate.php diff --git a/app/locales/en_US/LC_MESSAGES/messages.mo b/app/locales/en_US/LC_MESSAGES/messages.mo index 67ee44edecdd69d86bdcde554518919c0ceb433c..ec32c0d888b014e696bca44c6ac11bd5f4c5874c 100644 GIT binary patch delta 27130 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 Ee@kS{2><{9 delta 26668 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 A_y7O^ diff --git a/app/locales/en_US/LC_MESSAGES/messages.po b/app/locales/en_US/LC_MESSAGES/messages.po index 32fad2e3..87602d6f 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 22:51+0100\n" -"PO-Revision-Date: 2018-08-30 22:52+0100\n" +"POT-Creation-Date: 2018-08-31 01:42+0100\n" +"PO-Revision-Date: 2018-08-31 01:44+0100\n" "Last-Translator: nuxsmin \n" "Language-Team: nuxsmin@syspass.org\n" "Language: en_US\n" @@ -103,7 +103,7 @@ msgstr "Action" #: ../../../../lib/SP/Services/Ldap/LdapImportService.php:230 #: ../../../modules/web/Controllers/Helpers/Account/AccountSearchHelper.php:235 #: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:102 -#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:101 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:102 #: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:107 #: ../../../modules/web/Controllers/LoginController.php:102 #: ../../../modules/web/Controllers/UserController.php:278 @@ -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:240 -#: ../../../../lib/SP/Services/Account/AccountService.php:245 +#: ../../../../lib/SP/Services/Account/AccountService.php:226 +#: ../../../../lib/SP/Services/Account/AccountService.php:231 #: ../../../../lib/SP/Services/Api/ApiService.php:129 #: ../../../../lib/SP/Services/Api/ApiService.php:227 #: ../../../../lib/SP/Services/Api/ApiService.php:235 @@ -227,7 +227,7 @@ msgstr "An object is needed" msgid "Observador no inicializado" msgstr "Observer not initialized" -#: ../../../../lib/SP/Core/UI/Theme.php:191 +#: ../../../../lib/SP/Core/UI/Theme.php:193 msgid "Clase no válida para iconos" msgstr "Invalid icons class" @@ -331,12 +331,12 @@ msgstr "New Plugin" #: ../../../modules/web/themes/material-blue/views/itemshow/category.inc:16 #: ../../../modules/web/themes/material-blue/views/itemshow/client.inc:19 #: ../../../modules/web/themes/material-blue/views/itemshow/custom_field.inc:19 -#: ../../../modules/web/themes/material-blue/views/itemshow/plugin.inc:13 #: ../../../modules/web/themes/material-blue/views/itemshow/tag.inc:16 #: ../../../modules/web/themes/material-blue/views/itemshow/user.inc:29 #: ../../../modules/web/themes/material-blue/views/itemshow/user_group.inc:19 #: ../../../modules/web/themes/material-blue/views/itemshow/user_pass.inc:15 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:528 +#: ../../../modules/web/themes/material-blue/views/plugin/plugin.inc:16 msgid "Nombre" msgstr "Name" @@ -398,7 +398,7 @@ 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/ItemPresetGrid.php:102 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:103 #: ../../../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 @@ -500,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:542 +#: ../../../../lib/SP/Services/Account/AccountService.php:583 msgid "Error al eliminar las cuentas" msgstr "Error while deleting the accounts" @@ -516,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:508 +#: ../../../../lib/SP/Services/Account/AccountService.php:549 msgid "Error al restaurar cuenta" msgstr "Error on restoring the account" @@ -953,21 +953,21 @@ msgstr "Error while deleting the files" msgid "Archivo no encontrado" msgstr "File not found" -#: ../../../../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:182 -#: ../../../../lib/SP/Services/Account/AccountService.php:525 +#: ../../../../lib/SP/Services/Account/AccountService.php:164 +#: ../../../../lib/SP/Services/Account/AccountService.php:566 msgid "Cuenta no encontrada" msgstr "Account not found" -#: ../../../../lib/SP/Services/Account/AccountService.php:233 +#: ../../../../lib/SP/Services/Account/AccountService.php:219 msgid "Clave maestra no establecida" msgstr "Master password not set" +#: ../../../../lib/SP/Services/Account/AccountService.php:282 +#: ../../../../lib/SP/Services/Account/AccountService.php:639 +#: ../../../../lib/SP/Services/Account/AccountService.php:694 +msgid "La cuenta no existe" +msgstr "The account doesn't exist" + #: ../../../../lib/SP/Services/Api/ApiRequest.php:79 #: ../../../../lib/SP/Services/Api/ApiRequest.php:113 #: ../../../../lib/SP/Services/Api/ApiService.php:229 @@ -1045,10 +1045,10 @@ msgstr "The Master Password either is not saved or is wrong" #: ../../../modules/web/Controllers/AccountFileController.php:233 #: ../../../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/ItemPresetGrid.php:101 #: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:117 -#: ../../../modules/web/Controllers/ItemPresetController.php:297 -#: ../../../modules/web/Controllers/ItemPresetController.php:336 +#: ../../../modules/web/Controllers/ItemPresetController.php:299 +#: ../../../modules/web/Controllers/ItemPresetController.php:338 #: ../../../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 @@ -1246,7 +1246,7 @@ msgstr "Clients" #: ../../../../lib/SP/Services/CustomField/CustomFieldDefService.php:77 #: ../../../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/account/account-permissions.inc:14 #: ../../../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 @@ -1257,7 +1257,7 @@ msgstr "Users" #: ../../../../lib/SP/Services/CustomField/CustomFieldDefService.php:78 #: ../../../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/account/account-permissions.inc:52 #: ../../../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" @@ -1882,7 +1882,7 @@ msgstr "Parameter" #: ../../../../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 +#: ../../../modules/web/themes/material-blue/views/plugin/plugin.inc:28 msgid "Versión" msgstr "Version" @@ -2158,12 +2158,12 @@ msgstr "Option unavailable" #: ../../../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/ItemPresetController.php:142 +#: ../../../modules/web/Controllers/ItemPresetController.php:177 +#: ../../../modules/web/Controllers/ItemPresetController.php:215 +#: ../../../modules/web/Controllers/ItemPresetController.php:245 +#: ../../../modules/web/Controllers/ItemPresetController.php:284 +#: ../../../modules/web/Controllers/ItemPresetController.php:323 #: ../../../modules/web/Controllers/NotificationController.php:100 #: ../../../modules/web/Controllers/NotificationController.php:160 #: ../../../modules/web/Controllers/NotificationController.php:175 @@ -2172,7 +2172,7 @@ msgstr "Option unavailable" #: ../../../modules/web/Controllers/NotificationController.php:288 #: ../../../modules/web/Controllers/NotificationController.php:315 #: ../../../modules/web/Controllers/NotificationController.php:348 -#: ../../../modules/web/Controllers/PluginController.php:97 +#: ../../../modules/web/Controllers/PluginController.php:98 #: ../../../modules/web/Controllers/PluginController.php:117 #: ../../../modules/web/Controllers/PublicLinkController.php:68 #: ../../../modules/web/Controllers/PublicLinkController.php:100 @@ -2285,9 +2285,9 @@ msgstr "Account" #: ../../../modules/api/Controllers/ClientController.php:155 #: ../../../modules/api/Controllers/TagController.php:118 #: ../../../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/Controllers/ItemPresetController.php:267 +#: ../../../modules/web/Controllers/ItemPresetController.php:300 +#: ../../../modules/web/Controllers/ItemPresetController.php:339 #: ../../../modules/web/themes/material-blue/views/account/details.inc:138 #: ../../../modules/web/themes/material-blue/views/account/details.inc:140 msgid "ID" @@ -2516,14 +2516,16 @@ msgstr "Notes about the account" #: ../../../modules/api/Controllers/Help/AccountHelp.php:89 #: ../../../modules/api/Controllers/Help/AccountHelp.php:111 -#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:126 +#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:130 #: ../../../modules/web/themes/material-blue/views/account/search-rows.inc:106 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset-private.inc:19 msgid "Cuenta Privada" msgstr "Private Account" #: ../../../modules/api/Controllers/Help/AccountHelp.php:90 #: ../../../modules/api/Controllers/Help/AccountHelp.php:112 -#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:139 +#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:146 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset-private.inc:38 msgid "Cuenta Privada Grupo" msgstr "Private Account for Group" @@ -2667,7 +2669,7 @@ msgstr "HTTPS" #. (itstool) path: action/text #: ../../../modules/web/Controllers/AccountController.php:253 #: ../../../modules/web/Controllers/AccountController.php:297 -#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:275 +#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:276 #: ../../../config/actions.xml:151 msgid "Nueva Cuenta" msgstr "New Account" @@ -3227,7 +3229,7 @@ msgid "No instalado" msgstr "Not installed" #: ../../../modules/web/Controllers/ConfigManagerController.php:361 -#: ../../../modules/web/themes/material-blue/inc/Icons.php:65 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:63 msgid "Información" msgstr "Information" @@ -3337,7 +3339,7 @@ msgstr "Restore account from this point" #: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:237 #: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:238 -#: ../../../modules/web/themes/material-blue/inc/Icons.php:53 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:51 #: ../../../modules/web/themes/material-blue/views/account/account-editpass.inc:121 msgid "Guardar" msgstr "Save" @@ -3361,7 +3363,7 @@ msgstr "Create Public Link" #: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:374 #: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:418 #: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:419 -#: ../../../modules/web/themes/material-blue/inc/Icons.php:36 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:34 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:64 #: ../../../config/actions.xml:169 ../../../config/actions.xml:259 msgid "Ver Clave" @@ -3429,7 +3431,7 @@ msgstr "Sort by URL / IP" #: ../../../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/ItemPresetGrid.php:70 #: ../../../modules/web/Controllers/Helpers/Grid/NotificationGrid.php:83 #: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:71 #: ../../../modules/web/Controllers/Helpers/Grid/TagGrid.php:70 @@ -3515,13 +3517,11 @@ 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" @@ -3567,7 +3567,7 @@ msgstr "Delete Field" #. (itstool) path: action/text #: ../../../modules/web/Controllers/Helpers/Grid/EventlogGrid.php:88 -#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:331 +#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:318 #: ../../../modules/web/themes/material-blue/views/eventlog/index.inc:1 #: ../../../config/actions.xml:127 msgid "Registro de Eventos" @@ -3650,11 +3650,11 @@ msgstr "Download File" msgid "Eliminar Archivo" msgstr "Delete File" -#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:88 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:89 msgid "Valores Predeterminados" msgstr "Preset Values" -#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:103 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:104 #: ../../../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 @@ -3665,45 +3665,50 @@ msgstr "Preset Values" msgid "Perfil" msgstr "Profile" -#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:104 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:105 #: ../../../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/Controllers/Helpers/Grid/ItemPresetGrid.php:106 #: ../../../modules/web/themes/material-blue/views/itemshow/item_preset.inc:106 msgid "Forzado" msgstr "Forced" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:141 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:140 #: ../../../config/actions.xml:841 msgid "Buscar Valor" msgstr "Search for Value" +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:155 #: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:156 -#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:157 msgid "Nuevo Valor de Permiso" msgstr "New Permission Preset" -#. (itstool) path: action/text +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:176 #: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:177 -#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:178 -#: ../../../modules/web/Controllers/ItemPresetController.php:216 +msgid "Nuevo Valor de Cuenta Privada" +msgstr "New Private Account Preset" + +#. (itstool) path: action/text +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:197 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:198 +#: ../../../modules/web/Controllers/ItemPresetController.php:218 #: ../../../config/actions.xml:859 msgid "Editar Valor" msgstr "Edit Value" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:194 -#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:195 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:214 +#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:215 #: ../../../config/actions.xml:865 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/inc/Icons.php:65 #: ../../../modules/web/themes/material-blue/views/_partials/fixed-header.inc:105 #: ../../../modules/web/themes/material-blue/views/notification/index.inc:1 #: ../../../config/actions.xml:667 @@ -3769,6 +3774,8 @@ msgid "Eliminar Notificación" msgstr "Delete Notification" #: ../../../modules/web/Controllers/Helpers/Grid/PluginGrid.php:89 +#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:332 +#: ../../../modules/web/themes/material-blue/views/plugin/index.inc:1 msgid "Plugins" msgstr "Plugins" @@ -4021,26 +4028,26 @@ msgstr "Edit Profile" msgid "Eliminar Perfil" msgstr "Delete Profile" -#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:262 -#: ../../../modules/web/themes/material-blue/inc/Icons.php:60 +#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:263 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:58 msgid "Buscar" msgstr "Search" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:289 +#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:290 #: ../../../config/actions.xml:103 msgid "Usuarios y Accesos" msgstr "Users and Accesses" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:303 +#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:304 #: ../../../config/actions.xml:43 msgid "Elementos y Personalización" msgstr "Items and Customizations" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:317 -#: ../../../modules/web/themes/material-blue/inc/Icons.php:63 +#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:346 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:61 #: ../../../modules/web/themes/material-blue/views/config/ldap.inc:21 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:22 #: ../../../config/actions.xml:673 @@ -4066,28 +4073,28 @@ msgid "Ver Valor" msgstr "Display Value" #. (itstool) path: action/text -#: ../../../modules/web/Controllers/ItemPresetController.php:186 +#: ../../../modules/web/Controllers/ItemPresetController.php:188 #: ../../../config/actions.xml:853 msgid "Nuevo Valor" msgstr "New Value" -#: ../../../modules/web/Controllers/ItemPresetController.php:253 -#: ../../../modules/web/Controllers/ItemPresetController.php:256 +#: ../../../modules/web/Controllers/ItemPresetController.php:255 +#: ../../../modules/web/Controllers/ItemPresetController.php:258 msgid "Valores eliminados" msgstr "Values deleted" -#: ../../../modules/web/Controllers/ItemPresetController.php:264 -#: ../../../modules/web/Controllers/ItemPresetController.php:268 +#: ../../../modules/web/Controllers/ItemPresetController.php:266 +#: ../../../modules/web/Controllers/ItemPresetController.php:270 msgid "Valor eliminado" msgstr "Value deleted" -#: ../../../modules/web/Controllers/ItemPresetController.php:296 -#: ../../../modules/web/Controllers/ItemPresetController.php:301 +#: ../../../modules/web/Controllers/ItemPresetController.php:298 +#: ../../../modules/web/Controllers/ItemPresetController.php:303 msgid "Valor creado" msgstr "Value created" -#: ../../../modules/web/Controllers/ItemPresetController.php:335 -#: ../../../modules/web/Controllers/ItemPresetController.php:340 +#: ../../../modules/web/Controllers/ItemPresetController.php:337 +#: ../../../modules/web/Controllers/ItemPresetController.php:342 msgid "Valor actualizado" msgstr "Value updated" @@ -4128,18 +4135,18 @@ msgstr "Notification created" msgid "Notificación actualizada" msgstr "Notification updated" -#: ../../../modules/web/Controllers/PluginController.php:179 -#: ../../../modules/web/Controllers/PluginController.php:182 +#: ../../../modules/web/Controllers/PluginController.php:181 +#: ../../../modules/web/Controllers/PluginController.php:184 msgid "Plugin habilitado" msgstr "Plugin enabled" -#: ../../../modules/web/Controllers/PluginController.php:204 -#: ../../../modules/web/Controllers/PluginController.php:207 +#: ../../../modules/web/Controllers/PluginController.php:206 +#: ../../../modules/web/Controllers/PluginController.php:209 msgid "Plugin deshabilitado" msgstr "Plugin disabled" -#: ../../../modules/web/Controllers/PluginController.php:229 -#: ../../../modules/web/Controllers/PluginController.php:232 +#: ../../../modules/web/Controllers/PluginController.php:231 +#: ../../../modules/web/Controllers/PluginController.php:234 msgid "Plugin restablecido" msgstr "Plugin reset" @@ -4366,15 +4373,15 @@ msgstr "Field type not set" msgid "Módulo del campo no indicado" msgstr "Field module not set" -#: ../../../modules/web/Forms/ItemsPresetForm.php:102 +#: ../../../modules/web/Forms/ItemsPresetForm.php:106 msgid "Tipo de valor no definido o incorrecto" msgstr "Value type not set or incorrect" -#: ../../../modules/web/Forms/ItemsPresetForm.php:119 +#: ../../../modules/web/Forms/ItemsPresetForm.php:123 msgid "No hay permisos definidos" msgstr "There aren't any defined permissions" -#: ../../../modules/web/Forms/ItemsPresetForm.php:136 +#: ../../../modules/web/Forms/ItemsPresetForm.php:152 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" @@ -4430,72 +4437,72 @@ msgstr "A group name is needed" msgid "Es necesario un nombre de perfil" msgstr "A profile name is needed" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:34 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:32 msgid "Añadir" msgstr "Add" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:35 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:33 msgid "Ver Detalles" 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/inc/Icons.php:35 +#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:34 +#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:72 #: ../../../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" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:38 -#: ../../../modules/web/themes/material-blue/inc/Icons.php:68 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:36 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:66 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:129 msgid "Eliminar" msgstr "Delete" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:39 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:37 msgid "Cambiar Clave" msgstr "Change Password" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:40 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:38 #: ../../../modules/web/themes/material-blue/views/itemshow/user.inc:193 msgid "Admin Aplicación" msgstr "Application Admin" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:41 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:39 #: ../../../modules/web/themes/material-blue/views/itemshow/user.inc:211 msgid "Admin Cuentas" msgstr "Accounts Admin" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:42 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:40 msgid "Usuario de LDAP" msgstr "LDAP User" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:43 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:41 #: ../../../modules/web/themes/material-blue/views/itemshow/user.inc:250 msgid "Deshabilitado" msgstr "Disabled" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:44 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:42 msgid "Habilitado" msgstr "Enabled" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:45 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:43 #: ../../../modules/web/themes/material-blue/views/main/upgrade.inc:174 #: ../../../modules/web/themes/material-blue/views/upgrade/index.inc:49 msgid "Actualizar" msgstr "Update" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:46 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:44 msgid "Copiar" msgstr "Copy" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:48 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:46 #: ../../../modules/web/themes/material-blue/views/itemshow/user.inc:78 msgid "Email" msgstr "Email" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:51 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:49 #: ../../../modules/web/themes/material-blue/views/_partials/error.inc:14 #: ../../../modules/web/themes/material-blue/views/_partials/error.inc:15 #: ../../../modules/web/themes/material-blue/views/error/error-database.inc:13 @@ -4507,53 +4514,53 @@ msgstr "Email" msgid "Volver" msgstr "Back" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:52 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:50 msgid "Restaurar" msgstr "Restore" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:54 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:52 #: ../../../config/strings.js.inc:79 msgid "Ayuda" msgstr "Help" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:55 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:53 msgid "Limpiar" msgstr "Clear" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:56 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:54 msgid "Realizar" msgstr "Perform" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:57 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:55 msgid "Descargar" msgstr "Download" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:58 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:56 #: ../../../config/strings.js.inc:85 msgid "Aviso" msgstr "Warning" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:59 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:57 msgid "Comprobar" msgstr "Check" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:66 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:64 msgid "Crítico" msgstr "Critical" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:71 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:67 msgid "Página anterior" msgstr "Previous page" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:72 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:68 msgid "Página siguiente" msgstr "Next page" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:73 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:69 msgid "Primera página" msgstr "First page" -#: ../../../modules/web/themes/material-blue/inc/Icons.php:74 +#: ../../../modules/web/themes/material-blue/inc/Icons.php:70 msgid "Última página" msgstr "Last page" @@ -4636,7 +4643,7 @@ msgid "Vaciar el registro de eventos?" msgstr "Clear event log?" #: ../../../config/strings.js.inc:47 -#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:112 +#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:113 #: ../../../modules/web/themes/material-blue/views/config/encryption.inc:276 #: ../../../modules/web/themes/material-blue/views/config/general-auth.inc:87 #: ../../../modules/web/themes/material-blue/views/config/import.inc:57 @@ -4647,7 +4654,7 @@ msgid "Seleccionar Grupo" msgstr "Select Group" #: ../../../config/strings.js.inc:48 -#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:95 +#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:96 #: ../../../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 @@ -4951,47 +4958,47 @@ msgstr "Select date" msgid "Última Modificación" 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/account/account-permissions.inc:18 +#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:56 #: ../../../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/account/account-permissions.inc:22 +#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:38 #: ../../../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/account/account-permissions.inc:60 +#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:76 #: ../../../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" -#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:92 +#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:93 #: ../../../modules/web/themes/material-blue/views/account/details.inc:37 #: ../../../modules/web/themes/material-blue/views/account/details.inc:39 msgid "Creador" msgstr "Creator" -#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:109 +#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:110 #: ../../../modules/web/themes/material-blue/views/account/details.inc:45 #: ../../../modules/web/themes/material-blue/views/account/details.inc:47 msgid "Grupo Principal" msgstr "Main Group" -#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:131 +#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:135 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:177 msgid "Privada" msgstr "Private" -#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:144 +#: ../../../modules/web/themes/material-blue/views/account/account-permissions.inc:151 #: ../../../modules/web/themes/material-blue/views/itemshow/user_profile.inc:193 msgid "Privada Grupo" msgstr "Private for Group" @@ -5695,8 +5702,8 @@ msgstr "Sets the default profile for the newly created SSO users." #: ../../../modules/web/themes/material-blue/views/config/general-events.inc:99 #: ../../../modules/web/themes/material-blue/views/config/mail.inc:171 #: ../../../modules/web/themes/material-blue/views/config/mail.inc:174 -#: ../../../modules/web/themes/material-blue/views/itemshow/plugin.inc:61 -#: ../../../modules/web/themes/material-blue/views/itemshow/plugin.inc:63 +#: ../../../modules/web/themes/material-blue/views/plugin/plugin.inc:64 +#: ../../../modules/web/themes/material-blue/views/plugin/plugin.inc:66 msgid "Eventos" msgstr "Events" @@ -6442,6 +6449,19 @@ msgstr "Field help" msgid "Obligatorio" msgstr "Required" +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset-private.inc:21 +msgid "Las cuentas sólo serán visibles por el usuario." +msgstr "Accounts will be only visible by the user." + +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset-private.inc:23 +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset-private.inc:42 +msgid "Los administradores no podrán acceder a las cuentas." +msgstr "Administrators won't be able to display the accounts." + +#: ../../../modules/web/themes/material-blue/views/itemshow/item_preset-private.inc:40 +msgid "Las cuentas sólo serán visibles por el usuario y su grupo principal." +msgstr "Accounts will be only visible by the user and his/her main group." + #: ../../../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 " @@ -6463,31 +6483,6 @@ msgstr "Enforces the values to be set either on creating or updating an item." 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" - -#: ../../../modules/web/themes/material-blue/views/itemshow/plugin.inc:32 -msgid "Versión del plugin" -msgstr "Plugin version" - -#: ../../../modules/web/themes/material-blue/views/itemshow/plugin.inc:37 -msgid "Versión Compatible" -msgstr "Compatible Version" - -#: ../../../modules/web/themes/material-blue/views/itemshow/plugin.inc:44 -msgid "Versión de sysPass compatible" -msgstr "sysPass compatible version" - -#: ../../../modules/web/themes/material-blue/views/itemshow/plugin.inc:49 -#: ../../../modules/web/themes/material-blue/views/wiki/wikipage.inc:25 -msgid "Autor" -msgstr "Author" - -#: ../../../modules/web/themes/material-blue/views/itemshow/plugin.inc:56 -msgid "Autor del plugin" -msgstr "Plugin author" - #: ../../../modules/web/themes/material-blue/views/itemshow/public_link.inc:76 #: ../../../modules/web/themes/material-blue/views/itemshow/public_link.inc:78 msgid "Hash" @@ -6843,6 +6838,31 @@ msgstr "Only for application administrators" msgid "Solo Admins" msgstr "Only Admins" +#: ../../../modules/web/themes/material-blue/views/plugin/plugin.inc:23 +msgid "Nombre del plugin" +msgstr "Plugin name" + +#: ../../../modules/web/themes/material-blue/views/plugin/plugin.inc:35 +msgid "Versión del plugin" +msgstr "Plugin version" + +#: ../../../modules/web/themes/material-blue/views/plugin/plugin.inc:40 +msgid "Versión Compatible" +msgstr "Compatible Version" + +#: ../../../modules/web/themes/material-blue/views/plugin/plugin.inc:47 +msgid "Versión de sysPass compatible" +msgstr "sysPass compatible version" + +#: ../../../modules/web/themes/material-blue/views/plugin/plugin.inc:52 +#: ../../../modules/web/themes/material-blue/views/wiki/wikipage.inc:25 +msgid "Autor" +msgstr "Author" + +#: ../../../modules/web/themes/material-blue/views/plugin/plugin.inc:59 +msgid "Autor del plugin" +msgstr "Plugin author" + #: ../../../modules/web/themes/material-blue/views/upgrade/index.inc:11 msgid "La aplicación necesita actualizarse" msgstr "The application needs to be updated" diff --git a/app/modules/web/Controllers/Helpers/Account/AccountHelper.php b/app/modules/web/Controllers/Helpers/Account/AccountHelper.php index 85db694d..91878fb5 100644 --- a/app/modules/web/Controllers/Helpers/Account/AccountHelper.php +++ b/app/modules/web/Controllers/Helpers/Account/AccountHelper.php @@ -30,6 +30,7 @@ use SP\Core\Acl\ActionsInterface; use SP\Core\Acl\UnauthorizedPageException; use SP\Core\Exceptions\SPException; use SP\DataModel\AccountPermission; +use SP\DataModel\AccountPrivate; use SP\DataModel\Dto\AccountAclDto; use SP\DataModel\Dto\AccountDetailsResponse; use SP\Http\Uri; @@ -45,6 +46,7 @@ use SP\Services\Category\CategoryService; use SP\Services\Client\ClientService; use SP\Services\Crypt\MasterPassService; use SP\Services\ItemPreset\ItemPresetInterface; +use SP\Services\ItemPreset\ItemPresetService; use SP\Services\PublicLink\PublicLinkService; use SP\Services\Tag\TagService; use SP\Services\User\UpdatedMasterPassException; @@ -77,7 +79,7 @@ final class AccountHelper extends HelperBase */ private $publicLinkService; /** - * @var \SP\Services\ItemPreset\ItemPresetService + * @var ItemPresetService */ private $itemPresetService; /** @@ -182,8 +184,8 @@ final class AccountHelper extends HelperBase $userData = $this->context->getUserData(); $userProfileData = $this->context->getUserProfile(); - $this->view->assign('allowPrivate', $userProfileData->isAccPrivate() && $accountData->getUserId() === $userData->getId()); - $this->view->assign('allowPrivateGroup', $userProfileData->isAccPrivateGroup() && $accountData->getUserGroupId() === $userData->getUserGroupId()); + $this->view->assign('allowPrivate', ($userProfileData->isAccPrivate() && $accountData->getUserId() === $userData->getId()) || $userData->getIsAdminApp()); + $this->view->assign('allowPrivateGroup', ($userProfileData->isAccPrivateGroup() && $accountData->getUserGroupId() === $userData->getUserGroupId()) || $userData->getIsAdminApp()); $this->view->assign('accountPassDate', date('Y-m-d H:i:s', $accountData->getPassDate())); $this->view->assign('accountPassDateChange', $accountData->getPassDateChange() > 0 && date('Y-m-d', $accountData->getPassDateChange() ?: 0)); @@ -320,8 +322,11 @@ final class AccountHelper extends HelperBase $this->accountAcl->setShowPermission($userData->getIsAdminApp() || $userData->getIsAdminAcc() || $userProfileData->isAccPermission()); - $accountPermission = $this->itemPresetService->getForCurrentUser(ItemPresetInterface::ITEM_TYPE_PERMISSION) - ->hydrate(AccountPermission::class, 'data') ?: new AccountPermission(); + $accountPrivate = $this->itemPresetService->getForCurrentUser(ItemPresetInterface::ITEM_TYPE_ACCOUNT_PRIVATE) + ->hydrate(AccountPrivate::class) ?: new AccountPrivate(); + + $accountPermission = $this->itemPresetService->getForCurrentUser(ItemPresetInterface::ITEM_TYPE_ACCOUNT_PERMISSION) + ->hydrate(AccountPermission::class) ?: new AccountPermission(); $selectUsers = SelectItemAdapter::factory(UserService::getItemsBasic()); $selectUserGroups = SelectItemAdapter::factory(UserGroupService::getItemsBasic()); @@ -336,8 +341,9 @@ final class AccountHelper extends HelperBase $this->view->assign('userGroups', $selectUserGroups->getItemsFromModel()); $this->view->assign('tags', $selectTags->getItemsFromModel()); - $this->view->assign('allowPrivate', $userProfileData->isAccPrivate()); - $this->view->assign('allowPrivateGroup', $userProfileData->isAccPrivateGroup()); + $this->view->assign('allowPrivate', $userProfileData->isAccPrivate() || $userData->getIsAdminApp()); + $this->view->assign('allowPrivateGroup', $userProfileData->isAccPrivateGroup() || $userData->getIsAdminApp()); + $this->view->assign('accountPrivate', $accountPrivate); $this->view->assign('accountId', 0); $this->view->assign('gotData', false); @@ -395,7 +401,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->itemPresetService = $this->dic->get(\SP\Services\ItemPreset\ItemPresetService::class); + $this->itemPresetService = $this->dic->get(ItemPresetService::class); $this->view->assign('changesHash'); $this->view->assign('chkUserEdit'); diff --git a/app/modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php b/app/modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php index 50f2cdc7..9a948bf8 100644 --- a/app/modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php +++ b/app/modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php @@ -64,6 +64,7 @@ final class ItemPresetGrid extends GridBase $grid->setPager($this->getPager($searchAction)); $grid->setDataActions($this->getCreatePermissionAction(), true); + $grid->setDataActions($this->getCreatePrivateAction(), true); $grid->setDataActions($this->getEditAction()); $grid->setDataActions($this->getDeleteAction()); $grid->setDataActions($this->getDeleteAction()->setTitle(__('Eliminar Seleccionados')), true); @@ -120,9 +121,7 @@ final class ItemPresetGrid extends GridBase $gridData->addDataRowSource('userGroupName'); $gridData->addDataRowSource('userProfileName'); $gridData->addDataRowSource('priority'); - $gridData->addDataRowSource('fixed', false, function ($value) { - return $value === 1 ? __('SI') : __('NO'); - }); + $gridData->addDataRowSourceWithIcon('fixed', $this->icons->getIconEnabled()); $gridData->setData($this->queryResult); return $gridData; @@ -161,7 +160,28 @@ final class ItemPresetGrid extends GridBase $gridAction->setIcon($icon->setIcon('add_circle')); $gridAction->setSkip(true); $gridAction->setOnClickFunction('appMgmt/show'); - $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ITEMPRESET_CREATE) . '/permission'); + $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ITEMPRESET_CREATE) . '/account.permission'); + + return $gridAction; + } + + /** + * @return DataGridAction + */ + private function getCreatePrivateAction() + { + $gridAction = new DataGridAction(); + $gridAction->setId(ActionsInterface::ITEMPRESET_CREATE); + $gridAction->setType(DataGridActionType::MENUBAR_ITEM); + $gridAction->setName(__('Nuevo Valor de Cuenta Privada')); + $gridAction->setTitle(__('Nuevo Valor de Cuenta Privada')); + + $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::ITEMPRESET_CREATE) . '/account.private'); return $gridAction; } diff --git a/app/modules/web/Controllers/Helpers/ItemPresetHelper.php b/app/modules/web/Controllers/Helpers/ItemPresetHelper.php index f88e7590..34adccaa 100644 --- a/app/modules/web/Controllers/Helpers/ItemPresetHelper.php +++ b/app/modules/web/Controllers/Helpers/ItemPresetHelper.php @@ -25,6 +25,7 @@ namespace SP\Modules\Web\Controllers\Helpers; use SP\DataModel\AccountPermission; +use SP\DataModel\AccountPrivate; use SP\DataModel\ItemPresetData; use SP\Mvc\View\Components\SelectItemAdapter; use SP\Services\User\UserService; @@ -63,31 +64,37 @@ class ItemPresetHelper extends HelperBase $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 + * @param ItemPresetData $itemPresetData + * + * @throws \SP\Core\Exceptions\NoSuchPropertyException */ - public function makeDefaultPresetView() + public function makeAccountPrivateView(ItemPresetData $itemPresetData) { - $this->view->assign('users', $this->users->getItemsFromModel()); - $this->view->assign('userGroups', $this->userGroups->getItemsFromModel()); - $this->view->assign('userProfiles', $this->userProfiles->getItemsFromModel()); + $accountPrivate = $itemPresetData->hydrate(AccountPrivate::class, 'data') ?: new AccountPrivate(); + + $this->view->assign('typeTemplate', 'item_preset-private'); + + $this->view->assign('private', $accountPrivate); } - protected function initialize() + /** + * @param ItemPresetData $itemPresetData + */ + public function setCommon(ItemPresetData $itemPresetData) { $this->users = SelectItemAdapter::factory(UserService::getItemsBasic()); $this->userGroups = SelectItemAdapter::factory(UserGroupService::getItemsBasic()); $this->userProfiles = SelectItemAdapter::factory(UserGroupService::getItemsBasic()); + + $this->view->assign('users', $this->users->getItemsFromModelSelected([$itemPresetData->getUserId()])); + $this->view->assign('userGroups', $this->userGroups->getItemsFromModelSelected([$itemPresetData->getUserGroupId()])); + $this->view->assign('userProfiles', $this->userProfiles->getItemsFromModelSelected([$itemPresetData->getUserProfileId()])); } } \ No newline at end of file diff --git a/app/modules/web/Controllers/Helpers/LayoutHelper.php b/app/modules/web/Controllers/Helpers/LayoutHelper.php index e246a89b..48e1796c 100644 --- a/app/modules/web/Controllers/Helpers/LayoutHelper.php +++ b/app/modules/web/Controllers/Helpers/LayoutHelper.php @@ -312,20 +312,6 @@ final class LayoutHelper extends HelperBase $actions[] = $actionItemManager; } - if ($acl->checkUserAccess(ActionsInterface::CONFIG)) { - $actionConfigManager = new DataGridAction(); - $actionConfigManager->setId('config'); - $actionConfigManager->setTitle(__('Configuración')); - $actionConfigManager->setIcon($icons->getIconSettings()); - $actionConfigManager->setData([ - 'historyReset' => 1, - 'view' => 'config', - 'route' => Acl::getActionRoute(ActionsInterface::CONFIG) - ]); - - $actions[] = $actionConfigManager; - } - if ($acl->checkUserAccess(ActionsInterface::EVENTLOG) && $this->configData->isLogEnabled()) { $actionEventlog = new DataGridAction(); $actionEventlog->setId(ActionsInterface::EVENTLOG); @@ -354,6 +340,20 @@ final class LayoutHelper extends HelperBase $actions[] = $actionPlugins; } + if ($acl->checkUserAccess(ActionsInterface::CONFIG)) { + $actionConfigManager = new DataGridAction(); + $actionConfigManager->setId('config'); + $actionConfigManager->setTitle(__('Configuración')); + $actionConfigManager->setIcon($icons->getIconSettings()); + $actionConfigManager->setData([ + 'historyReset' => 1, + 'view' => 'config', + 'route' => Acl::getActionRoute(ActionsInterface::CONFIG) + ]); + + $actions[] = $actionConfigManager; + } + $this->view->assign('actions', $actions); $this->view->assign('useMenu', true); } diff --git a/app/modules/web/Controllers/ItemPresetController.php b/app/modules/web/Controllers/ItemPresetController.php index 05a74e9c..d8f2b357 100644 --- a/app/modules/web/Controllers/ItemPresetController.php +++ b/app/modules/web/Controllers/ItemPresetController.php @@ -101,17 +101,19 @@ class ItemPresetController extends ControllerBase implements CrudControllerInter $itemPresetData = $id ? $this->itemPresetService->getById($id) : new ItemPresetData(); $itemPresetHelper = $this->dic->get(ItemPresetHelper::class); + $itemPresetHelper->setCommon($itemPresetData); if ($itemPresetData->getType() === null) { $itemPresetData->setType($type); } switch ($itemPresetData->getType()) { - case ItemPresetInterface::ITEM_TYPE_PERMISSION: + case ItemPresetInterface::ITEM_TYPE_ACCOUNT_PERMISSION: $itemPresetHelper->makeAccountPermissionView($itemPresetData); break; - default: - $itemPresetHelper->makeDefaultPresetView(); + case ItemPresetInterface::ITEM_TYPE_ACCOUNT_PRIVATE: + $itemPresetHelper->makeAccountPrivateView($itemPresetData); + break; } $this->view->assign('preset', $itemPresetData); diff --git a/app/modules/web/Forms/ItemsPresetForm.php b/app/modules/web/Forms/ItemsPresetForm.php index e31fb773..5bfca233 100644 --- a/app/modules/web/Forms/ItemsPresetForm.php +++ b/app/modules/web/Forms/ItemsPresetForm.php @@ -27,6 +27,7 @@ namespace SP\Modules\Web\Forms; use SP\Core\Acl\ActionsInterface; use SP\Core\Exceptions\ValidationException; use SP\DataModel\AccountPermission; +use SP\DataModel\AccountPrivate; use SP\DataModel\ItemPresetData; use SP\Services\ItemPreset\ItemPresetInterface; use SP\Services\ItemPreset\ItemPresetRequest; @@ -95,9 +96,12 @@ final class ItemsPresetForm extends FormBase implements FormInterface $itemPresetData->setType($this->request->analyzeString('type')); switch ($itemPresetData->getType()) { - case ItemPresetInterface::ITEM_TYPE_PERMISSION: + case ItemPresetInterface::ITEM_TYPE_ACCOUNT_PERMISSION: $this->itemPresetRequest = new ItemPresetRequest($itemPresetData, $this->makePermissionPreset()); break; + case ItemPresetInterface::ITEM_TYPE_ACCOUNT_PRIVATE: + $this->itemPresetRequest = new ItemPresetRequest($itemPresetData, $this->makePrivatePreset()); + break; default: throw new ValidationException(__u('Tipo de valor no definido o incorrecto')); } @@ -122,6 +126,18 @@ final class ItemsPresetForm extends FormBase implements FormInterface return $accountPermission; } + /** + * @return AccountPrivate + */ + private function makePrivatePreset() + { + $accountPrivate = new AccountPrivate(); + $accountPrivate->setPrivateUser($this->request->analyzeBool('private_user_enabled', false)); + $accountPrivate->setPrivateGroup($this->request->analyzeBool('private_group_enabled', false)); + + return $accountPrivate; + } + /** * @throws ValidationException */ diff --git a/app/modules/web/themes/material-blue/views/account/account-permissions.inc b/app/modules/web/themes/material-blue/views/account/account-permissions.inc index d03a5ea5..1e52e0d9 100644 --- a/app/modules/web/themes/material-blue/views/account/account-permissions.inc +++ b/app/modules/web/themes/material-blue/views/account/account-permissions.inc @@ -3,6 +3,7 @@ * @var \SP\Services\Account\AccountAcl $accountAcl * @var \SP\DataModel\AccountExtData $accountData * @var \SP\Core\UI\ThemeIcons $icons + * @var \SP\DataModel\AccountPrivate $accountPrivate */ ?> @@ -121,26 +122,32 @@ - + getIsPrivate()) + || (isset($accountPrivate) && $accountPrivate->isPrivateUser())) ? 'checked' : ''; + ?> - + getIsPrivateGroup()) + || (isset($accountPrivate) && $accountPrivate->isPrivateGroup())) ? 'checked' : ''; + ?> diff --git a/app/modules/web/themes/material-blue/views/itemshow/item_preset-private.inc b/app/modules/web/themes/material-blue/views/itemshow/item_preset-private.inc new file mode 100644 index 00000000..ee529b21 --- /dev/null +++ b/app/modules/web/themes/material-blue/views/itemshow/item_preset-private.inc @@ -0,0 +1,50 @@ + + + + + + + + + + \ No newline at end of file diff --git a/lib/SP/Bootstrap.php b/lib/SP/Bootstrap.php index 3da2b435..f207180a 100644 --- a/lib/SP/Bootstrap.php +++ b/lib/SP/Bootstrap.php @@ -191,7 +191,7 @@ final class Bootstrap /** @var \Klein\Request $request */ $route = Filter::getString($request->param('r', 'index/index')); - if (!preg_match_all('#(?P[a-zA-Z]+)(?:/(?P[a-zA-Z]+))?(?P/[a-zA-Z\d]+)?#', $route, $matches)) { + if (!preg_match_all('#(?P[a-zA-Z]+)(?:/(?P[a-zA-Z]+))?(?P/[a-zA-Z\d\.]+)?#', $route, $matches)) { throw new RuntimeException($oops); } diff --git a/lib/SP/DataModel/AccountPrivate.php b/lib/SP/DataModel/AccountPrivate.php new file mode 100644 index 00000000..1081263a --- /dev/null +++ b/lib/SP/DataModel/AccountPrivate.php @@ -0,0 +1,74 @@ +. + */ + +namespace SP\DataModel; + +/** + * Class AccountPrivate + * + * @package SP\DataModel + */ +class AccountPrivate +{ + /** + * @var bool + */ + private $privateUser = false; + /** + * @var bool + */ + private $privateGroup = false; + + /** + * @return bool + */ + public function isPrivateUser(): bool + { + return $this->privateUser; + } + + /** + * @param bool $privateUser + */ + public function setPrivateUser(bool $privateUser) + { + $this->privateUser = $privateUser; + } + + /** + * @return bool + */ + public function isPrivateGroup(): bool + { + return $this->privateGroup; + } + + /** + * @param bool $privateGroup + */ + public function setPrivateGroup(bool $privateGroup) + { + $this->privateGroup = $privateGroup; + } +} \ No newline at end of file diff --git a/lib/SP/Services/Account/AccountService.php b/lib/SP/Services/Account/AccountService.php index 6c61c3ff..ff3ed760 100644 --- a/lib/SP/Services/Account/AccountService.php +++ b/lib/SP/Services/Account/AccountService.php @@ -32,6 +32,7 @@ use SP\DataModel\AccountData; use SP\DataModel\AccountHistoryData; use SP\DataModel\AccountPassData; use SP\DataModel\AccountPermission; +use SP\DataModel\AccountPrivate; use SP\DataModel\AccountSearchVData; use SP\DataModel\Dto\AccountDetailsResponse; use SP\DataModel\Dto\AccountHistoryCreateDto; @@ -79,25 +80,6 @@ final class AccountService extends Service implements AccountServiceInterface */ protected $itemPresetService; - /** - * @param int $id - * - * @return AccountDetailsResponse - * @throws QueryException - * @throws \SP\Repositories\NoSuchItemException - * @throws \SP\Core\Exceptions\ConstraintException - */ - public function getById($id) - { - $result = $this->accountRepository->getById($id); - - if ($result->getNumRows() === 0) { - throw new NoSuchItemException(__u('La cuenta no existe')); - } - - return new AccountDetailsResponse($id, $result->getData()); - } - /** * @param AccountDetailsResponse $accountDetailsResponse * @@ -192,6 +174,7 @@ final class AccountService extends Service implements AccountServiceInterface * @throws QueryException * @throws SPException * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\NoSuchPropertyException */ public function create(AccountRequest $accountRequest) { @@ -205,10 +188,13 @@ final class AccountService extends Service implements AccountServiceInterface $accountRequest->key = $pass['key']; } + $this->setPresetPrivate($accountRequest); + $accountRequest->id = $this->accountRepository->create($accountRequest); $this->addItems($accountRequest); - $this->addDefaultPermissions($accountRequest->id); + + $this->addPresetPermissions($accountRequest->id); return $accountRequest->id; } @@ -246,6 +232,59 @@ final class AccountService extends Service implements AccountServiceInterface } } + /** + * @param AccountRequest $accountRequest + * + * @throws QueryException + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\NoSuchPropertyException + * @throws NoSuchItemException + */ + private function setPresetPrivate(AccountRequest $accountRequest) + { + $userData = $this->context->getUserData(); + $itemPreset = $this->itemPresetService->getForCurrentUser(ItemPresetInterface::ITEM_TYPE_ACCOUNT_PRIVATE); + + if ($itemPreset !== null + && $itemPreset->getFixed() + ) { + $accountPrivate = $itemPreset->hydrate(AccountPrivate::class); + + $userId = $accountRequest->userId; + + if ($userId === null && $accountRequest->id > 0) { + $userId = $this->getById($accountRequest->id)->getAccountVData()->getUserId(); + } + + if ($userData->getId() === $userId) { + $accountRequest->isPrivate = (int)$accountPrivate->isPrivateUser(); + } + + if ($userData->getUserGroupId() === $accountRequest->userGroupId) { + $accountRequest->isPrivateGroup = (int)$accountPrivate->isPrivateGroup(); + } + } + } + + /** + * @param int $id + * + * @return AccountDetailsResponse + * @throws QueryException + * @throws \SP\Repositories\NoSuchItemException + * @throws \SP\Core\Exceptions\ConstraintException + */ + public function getById($id) + { + $result = $this->accountRepository->getById($id); + + if ($result->getNumRows() === 0) { + throw new NoSuchItemException(__u('La cuenta no existe')); + } + + return new AccountDetailsResponse($id, $result->getData()); + } + /** * Adds external items to the account * @@ -298,9 +337,9 @@ final class AccountService extends Service implements AccountServiceInterface * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\NoSuchPropertyException */ - private function addDefaultPermissions(int $accountId) + private function addPresetPermissions(int $accountId) { - $itemPresetData = $this->itemPresetService->getForCurrentUser(ItemPresetInterface::ITEM_TYPE_PERMISSION); + $itemPresetData = $this->itemPresetService->getForCurrentUser(ItemPresetInterface::ITEM_TYPE_ACCOUNT_PERMISSION); if ($itemPresetData !== null && $itemPresetData->getFixed() @@ -379,11 +418,13 @@ final class AccountService extends Service implements AccountServiceInterface $this->addHistory($accountRequest->id); + $this->setPresetPrivate($accountRequest); + $this->accountRepository->update($accountRequest); $this->updateItems($accountRequest); - $this->addDefaultPermissions($accountRequest->id); + $this->addPresetPermissions($accountRequest->id); }); } diff --git a/lib/SP/Services/ItemPreset/ItemPresetInterface.php b/lib/SP/Services/ItemPreset/ItemPresetInterface.php index 06b29a37..f8472b60 100644 --- a/lib/SP/Services/ItemPreset/ItemPresetInterface.php +++ b/lib/SP/Services/ItemPreset/ItemPresetInterface.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. @@ -31,8 +31,8 @@ namespace SP\Services\ItemPreset; */ interface ItemPresetInterface { - const ITEM_TYPE_PERMISSION = 'permission'; - const ITEM_TYPE_TAGS = 'tag'; + const ITEM_TYPE_ACCOUNT_PERMISSION = 'account.permission'; + const ITEM_TYPE_ACCOUNT_TAG = 'account.tag'; const ITEM_TYPE_PASSWORD = 'password'; - const ITEM_TYPE_PRIVATE_ACCOUNT = 'private_account'; + const ITEM_TYPE_ACCOUNT_PRIVATE = 'account.private'; } \ No newline at end of file diff --git a/schemas/30018083002.sql b/schemas/30018083002.sql index 51903790..b507d378 100644 --- a/schemas/30018083002.sql +++ b/schemas/30018083002.sql @@ -47,7 +47,7 @@ FOREIGN KEY (userProfileId) REFERENCES UserProfile (id) ON DELETE CASCADE ON UPDATE CASCADE $$ UPDATE ItemPreset -SET type = 'permission' +SET type = 'account.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/tests/res/config/config.xml b/tests/res/config/config.xml index e0825a18..2b887800 100644 --- a/tests/res/config/config.xml +++ b/tests/res/config/config.xml @@ -9,11 +9,11 @@ 1 1 - c8fe86b8b3f1ac71e62daf6c731065910f775dcf + aac98603ec5e4687b1c7aa4698d46f4ed0d1f69a 0 0 - 1535637654 - c6cfea1957d8c1b4e30c916f724197a432159564 + 1535672911 + c2bcaa6196a692aaf3a7dfee49186b577d44efcc @@ -32,7 +32,7 @@ 0 - d635cf0e628e8214b00aff938a09f5be6158e590 + 7e54c872dca490dfbfae83baf6d045ccf92f2073 PDF JPG