mirror of
https://github.com/nuxsmin/sysPass.git
synced 2026-03-06 16:36:59 +01:00
* [MOD] Improved plugins management
* [MOD] Code refactoring Signed-off-by: nuxsmin <nuxsmin@syspass.org>
This commit is contained in:
Binary file not shown.
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sysPass\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-10-12 00:42+0200\n"
|
||||
"PO-Revision-Date: 2018-10-12 00:42+0200\n"
|
||||
"POT-Creation-Date: 2018-10-15 02:52+0200\n"
|
||||
"PO-Revision-Date: 2018-10-15 02:55+0200\n"
|
||||
"Last-Translator: nuxsmin <nuxsmin@syspass.org>\n"
|
||||
"Language-Team: nuxsmin@syspass.org\n"
|
||||
"Language: en_GB\n"
|
||||
@@ -25,12 +25,12 @@ msgstr ""
|
||||
"X-Poedit-SearchPath-1: ../../../../lib\n"
|
||||
"X-Poedit-SearchPath-2: ../../../config\n"
|
||||
|
||||
#: ../../../../lib/SP/Bootstrap.php:267
|
||||
#: ../../../../lib/SP/Bootstrap.php:278
|
||||
#, php-format
|
||||
msgid "Versión de PHP requerida >= %s <= %s"
|
||||
msgstr "Required PHP version >= %s <= %s"
|
||||
|
||||
#: ../../../../lib/SP/Bootstrap.php:269
|
||||
#: ../../../../lib/SP/Bootstrap.php:280
|
||||
msgid ""
|
||||
"Actualice la versión de PHP para que la aplicación funcione correctamente"
|
||||
msgstr "Please update the PHP version to run sysPass"
|
||||
@@ -53,7 +53,7 @@ msgid "Actual: %s - Necesario: 750"
|
||||
msgstr "Current: %s - Needed: 750"
|
||||
|
||||
#: ../../../../lib/SP/Core/Acl/AccountPermissionException.php:45
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:132
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:142
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountPasswordHelper.php:96
|
||||
msgid "No tiene permisos para acceder a esta cuenta"
|
||||
msgstr "You don't have permission to access to this account"
|
||||
@@ -61,12 +61,12 @@ msgstr "You don't have permission to access to this account"
|
||||
#: ../../../../lib/SP/Core/Acl/AccountPermissionException.php:45
|
||||
#: ../../../../lib/SP/Core/Acl/UnauthorizedActionException.php:46
|
||||
#: ../../../../lib/SP/Core/Acl/UnauthorizedPageException.php:45
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:129
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:133
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:137
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:141
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:149
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:156
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:139
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:143
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:147
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:151
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:159
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:166
|
||||
#: ../../../modules/web/Controllers/ErrorController.php:124
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:94
|
||||
#: ../../../modules/web/themes/material-blue/views/upgrade/index.inc:13
|
||||
@@ -75,7 +75,7 @@ msgstr "Please contact to the administrator"
|
||||
|
||||
# Not available
|
||||
#: ../../../../lib/SP/Core/Acl/Acl.php:294
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:600
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:604
|
||||
msgid "N/D"
|
||||
msgstr "N/A"
|
||||
|
||||
@@ -96,24 +96,24 @@ msgstr "Action"
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapMsAds.php:155
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapStd.php:110
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapStd.php:142
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:217
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:235
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:386
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:453
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:561
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:604
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:220
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:238
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:390
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:457
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:565
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:608
|
||||
#: ../../../../lib/SP/Services/Ldap/LdapImportService.php:238
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountSearchHelper.php:253
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:106
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:107
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:111
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/TrackGrid.php:105
|
||||
#: ../../../modules/web/Controllers/LoginController.php:102
|
||||
#: ../../../modules/web/Controllers/LoginController.php:120
|
||||
#: ../../../modules/web/Controllers/UserController.php:278
|
||||
#: ../../../modules/web/Controllers/UserController.php:312
|
||||
#: ../../../modules/web/Controllers/UserController.php:373
|
||||
#: ../../../modules/web/Controllers/UserController.php:412
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:187
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:190
|
||||
#: ../../../modules/web/themes/material-blue/views/account/account-editpass.inc:55
|
||||
#: ../../../modules/web/themes/material-blue/views/account/account-editpass.inc:61
|
||||
#: ../../../modules/web/themes/material-blue/views/account/account-history.inc:91
|
||||
@@ -151,7 +151,7 @@ msgid "Acción no encontrada"
|
||||
msgstr "Action not found"
|
||||
|
||||
#: ../../../../lib/SP/Core/Acl/UnauthorizedActionException.php:46
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:140
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:150
|
||||
#: ../../../modules/web/Controllers/AccountFileController.php:261
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:59
|
||||
#: ../../../modules/web/Controllers/AccountManagerController.php:77
|
||||
@@ -200,8 +200,8 @@ msgstr "Action not found"
|
||||
#: ../../../modules/web/Controllers/NotificationController.php:288
|
||||
#: ../../../modules/web/Controllers/NotificationController.php:315
|
||||
#: ../../../modules/web/Controllers/NotificationController.php:348
|
||||
#: ../../../modules/web/Controllers/PluginController.php:98
|
||||
#: ../../../modules/web/Controllers/PluginController.php:117
|
||||
#: ../../../modules/web/Controllers/PluginController.php:103
|
||||
#: ../../../modules/web/Controllers/PluginController.php:122
|
||||
#: ../../../modules/web/Controllers/PublicLinkController.php:71
|
||||
#: ../../../modules/web/Controllers/PublicLinkController.php:105
|
||||
#: ../../../modules/web/Controllers/PublicLinkController.php:167
|
||||
@@ -244,7 +244,7 @@ msgid "No tiene permisos para realizar esta operación"
|
||||
msgstr "You don't have permission to do this operation"
|
||||
|
||||
#: ../../../../lib/SP/Core/Acl/UnauthorizedPageException.php:45
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:136
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:146
|
||||
msgid "No tiene permisos para acceder a esta página"
|
||||
msgstr "You don't have permission to access this page"
|
||||
|
||||
@@ -280,14 +280,14 @@ msgstr "Session cannot be initialized"
|
||||
#: ../../../../lib/SP/Services/Account/AccountService.php:227
|
||||
#: ../../../../lib/SP/Services/Account/AccountService.php:232
|
||||
#: ../../../../lib/SP/Services/Api/ApiService.php:129
|
||||
#: ../../../../lib/SP/Services/Api/ApiService.php:227
|
||||
#: ../../../../lib/SP/Services/Api/ApiService.php:235
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:187
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:351
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:500
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:505
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:537
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:644
|
||||
#: ../../../../lib/SP/Services/Api/ApiService.php:229
|
||||
#: ../../../../lib/SP/Services/Api/ApiService.php:237
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:190
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:354
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:504
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:509
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:541
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:648
|
||||
#: ../../../../lib/SP/Services/AuthToken/AuthTokenService.php:311
|
||||
#: ../../../../lib/SP/Services/CustomField/CustomFieldService.php:203
|
||||
#: ../../../../lib/SP/Services/Export/XmlVerifyService.php:108
|
||||
@@ -306,7 +306,7 @@ msgstr "Crypto module cannot be loaded"
|
||||
msgid "Error al generar datos cifrados"
|
||||
msgstr "Error while creating the encrypted data"
|
||||
|
||||
#: ../../../../lib/SP/Core/Events/Event.php:56
|
||||
#: ../../../../lib/SP/Core/Events/Event.php:57
|
||||
msgid "Es necesario un objeto"
|
||||
msgstr "An object is needed"
|
||||
|
||||
@@ -320,17 +320,17 @@ msgstr "Invalid icons class"
|
||||
|
||||
#: ../../../../lib/SP/DataModel/PublicLinkListData.php:88
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapConnection.php:190
|
||||
#: ../../../modules/web/Controllers/AccountController.php:227
|
||||
#: ../../../modules/web/Controllers/AccountController.php:226
|
||||
msgid "ON"
|
||||
msgstr "ON"
|
||||
|
||||
#: ../../../../lib/SP/DataModel/PublicLinkListData.php:88
|
||||
#: ../../../modules/web/Controllers/AccountController.php:227
|
||||
#: ../../../modules/web/Controllers/AccountController.php:226
|
||||
msgid "OFF"
|
||||
msgstr "OFF"
|
||||
|
||||
#: ../../../../lib/SP/Html/DataGrid/DataGridBase.php:303
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:122
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:126
|
||||
#, php-format
|
||||
msgid "No es posible obtener la plantilla \"%s\" : %s"
|
||||
msgstr "Unable to retrieve the \"%s\" template: %s"
|
||||
@@ -352,11 +352,11 @@ msgstr "Encoding error"
|
||||
msgid "Respuesta XML-RPC inválida"
|
||||
msgstr "Invalid XML-RPC response"
|
||||
|
||||
#: ../../../../lib/SP/Mvc/Controller/ControllerTrait.php:64
|
||||
#: ../../../../lib/SP/Mvc/Controller/ControllerTrait.php:71
|
||||
msgid "La sesión no se ha iniciado o ha caducado"
|
||||
msgstr "Session not started or timed out"
|
||||
|
||||
#: ../../../../lib/SP/Mvc/Controller/ControllerTrait.php:114
|
||||
#: ../../../../lib/SP/Mvc/Controller/ControllerTrait.php:124
|
||||
msgid "Acción Inválida"
|
||||
msgstr "Invalid Action"
|
||||
|
||||
@@ -398,41 +398,69 @@ msgstr "Invalid filter type"
|
||||
msgid "Tipo de objeto incorrecto"
|
||||
msgstr "Wrong object type"
|
||||
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:274
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:276
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:278
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:280
|
||||
#, php-format
|
||||
msgid "No es posible obtener la variable \"%s\""
|
||||
msgstr "Unable to retrieve the \"%s\" variable"
|
||||
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:322
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:324
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:326
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:328
|
||||
#, php-format
|
||||
msgid "No es posible destruir la variable \"%s\""
|
||||
msgstr "Unable to unset the \"%s\" variable"
|
||||
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:341
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:345
|
||||
msgid "La plantilla no contiene archivos"
|
||||
msgstr "Template does not contain files"
|
||||
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:113
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:256
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:170
|
||||
#, php-format
|
||||
msgid "Versión de plugin no compatible (%s)"
|
||||
msgstr "Plugin version not compatible (%s)"
|
||||
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:192
|
||||
#, php-format
|
||||
msgid "No es posible cargar el plugin \"%s\""
|
||||
msgstr "Unable to load the \"%s\" plugin"
|
||||
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:194
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/PluginGrid.php:101
|
||||
msgid "Plugin"
|
||||
msgstr "Plugin"
|
||||
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:219
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:339
|
||||
#: ../../../modules/web/Controllers/PluginController.php:213
|
||||
#: ../../../modules/web/Controllers/PluginController.php:216
|
||||
msgid "Plugin deshabilitado"
|
||||
msgstr "Plugin disabled"
|
||||
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:254
|
||||
msgid "Plugin disponible"
|
||||
msgstr "Plugin available"
|
||||
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:264
|
||||
msgid "Plugin no disponible"
|
||||
msgstr "Plugin unavailable"
|
||||
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:294
|
||||
msgid "Plugin cargado"
|
||||
msgstr "Plugin loaded"
|
||||
|
||||
#. (itstool) path: action/text
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:245
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:319
|
||||
#: ../../../config/actions.xml:535
|
||||
msgid "Nuevo Plugin"
|
||||
msgstr "New Plugin"
|
||||
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:246
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:320
|
||||
#: ../../../modules/api/Controllers/AccountController.php:71
|
||||
#: ../../../modules/api/Controllers/AccountController.php:103
|
||||
#: ../../../modules/api/Controllers/AccountController.php:139
|
||||
#: ../../../modules/api/Controllers/AccountController.php:185
|
||||
#: ../../../modules/api/Controllers/AccountController.php:235
|
||||
#: ../../../modules/api/Controllers/AccountController.php:310
|
||||
#: ../../../modules/api/Controllers/AccountController.php:189
|
||||
#: ../../../modules/api/Controllers/AccountController.php:240
|
||||
#: ../../../modules/api/Controllers/AccountController.php:315
|
||||
#: ../../../modules/api/Controllers/CategoryController.php:63
|
||||
#: ../../../modules/api/Controllers/CategoryController.php:92
|
||||
#: ../../../modules/api/Controllers/CategoryController.php:122
|
||||
@@ -490,7 +518,7 @@ msgid "Método ya inicializado"
|
||||
msgstr "Method already initialized"
|
||||
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:119
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:125
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:126
|
||||
msgid "Error al buscar RDN de grupo"
|
||||
msgstr "Error while searching the group RDN"
|
||||
|
||||
@@ -518,13 +546,13 @@ msgstr "Error while searching the group RDN"
|
||||
msgid "Grupo"
|
||||
msgstr "Group"
|
||||
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:200
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:204
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:205
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:210
|
||||
msgid "Error al localizar el usuario en LDAP"
|
||||
msgstr "Error while searching the user on LDAP"
|
||||
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:249
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:254
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:259
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:265
|
||||
msgid "Error al buscar objetos en DN base"
|
||||
msgstr "Error while searching objects in base DN"
|
||||
|
||||
@@ -594,7 +622,7 @@ msgid "No es posible inicializar"
|
||||
msgstr "Unable to initialize"
|
||||
|
||||
#: ../../../../lib/SP/Providers/Notification/NotificationHandler.php:124
|
||||
#: ../../../modules/web/Controllers/AccountController.php:926
|
||||
#: ../../../modules/web/Controllers/AccountController.php:925
|
||||
msgid "Solicitud"
|
||||
msgstr "Request"
|
||||
|
||||
@@ -1121,7 +1149,7 @@ 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
|
||||
#: ../../../../lib/SP/Services/Api/ApiService.php:231
|
||||
msgid "Datos inválidos"
|
||||
msgstr "Invalid data"
|
||||
|
||||
@@ -1130,7 +1158,7 @@ msgid "Fomato incorrecto"
|
||||
msgstr "Invalid format"
|
||||
|
||||
#: ../../../../lib/SP/Services/Api/ApiService.php:96
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:137
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:138
|
||||
#: ../../../../lib/SP/Services/UserPassRecover/UserPassRecoverService.php:103
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:124
|
||||
msgid "Intentos excedidos"
|
||||
@@ -1145,54 +1173,54 @@ msgstr "Wrong parameters"
|
||||
msgid "Acceso no permitido"
|
||||
msgstr "Unauthorized access"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:157
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:456
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:463
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:571
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:576
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:615
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:620
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:160
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:460
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:467
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:575
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:580
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:619
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:624
|
||||
msgid "Login incorrecto"
|
||||
msgstr "Wrong login"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:216
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:223
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:219
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:226
|
||||
msgid "Usuario deshabilitado"
|
||||
msgstr "User disabled"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:270
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:273
|
||||
msgid "Usando clave temporal"
|
||||
msgstr "Using temporary password"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:282
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:288
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:306
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:312
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:285
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:291
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:309
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:315
|
||||
msgid "Clave maestra incorrecta"
|
||||
msgstr "Wrong master password"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:297
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:321
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:300
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:324
|
||||
#: ../../../../lib/SP/Services/User/UpdatedMasterPassException.php:45
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:144
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:154
|
||||
#: ../../../modules/web/Controllers/ConfigEncryptionController.php:68
|
||||
#: ../../../modules/web/Controllers/ConfigEncryptionController.php:142
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountPasswordHelper.php:116
|
||||
msgid "Clave maestra actualizada"
|
||||
msgstr "Master password updated"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:327
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:330
|
||||
msgid "Es necesaria su clave anterior"
|
||||
msgstr "Your previous password is needed"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:339
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:342
|
||||
msgid "La clave maestra no ha sido guardada o es incorrecta"
|
||||
msgstr "The Master Password either is not saved or is wrong"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:451
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:514
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:560
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:603
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:455
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:518
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:564
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:607
|
||||
#: ../../../modules/web/Controllers/AccountFileController.php:235
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:108
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:108
|
||||
@@ -1207,22 +1235,22 @@ msgstr "The Master Password either is not saved or is wrong"
|
||||
msgid "Tipo"
|
||||
msgstr "Type"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:452
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:515
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:456
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:519
|
||||
msgid "Servidor LDAP"
|
||||
msgstr "LDAP Server"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:471
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:476
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:475
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:480
|
||||
msgid "Cuenta expirada"
|
||||
msgstr "Account expired"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:484
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:489
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:488
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:493
|
||||
msgid "El usuario no tiene grupos asociados"
|
||||
msgstr "The user has no associated groups"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:605
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:609
|
||||
#: ../../../modules/web/themes/material-blue/views/config/general-auth.inc:10
|
||||
msgid "Autentificación"
|
||||
msgstr "Authentication"
|
||||
@@ -1503,16 +1531,16 @@ msgstr "Account imported"
|
||||
#: ../../../modules/api/Controllers/AccountController.php:72
|
||||
#: ../../../modules/api/Controllers/AccountController.php:104
|
||||
#: ../../../modules/api/Controllers/AccountController.php:140
|
||||
#: ../../../modules/api/Controllers/AccountController.php:186
|
||||
#: ../../../modules/api/Controllers/AccountController.php:236
|
||||
#: ../../../modules/api/Controllers/AccountController.php:311
|
||||
#: ../../../modules/web/Controllers/AccountController.php:225
|
||||
#: ../../../modules/web/Controllers/AccountController.php:720
|
||||
#: ../../../modules/web/Controllers/AccountController.php:765
|
||||
#: ../../../modules/web/Controllers/AccountController.php:806
|
||||
#: ../../../modules/web/Controllers/AccountController.php:845
|
||||
#: ../../../modules/web/Controllers/AccountController.php:895
|
||||
#: ../../../modules/web/Controllers/AccountController.php:929
|
||||
#: ../../../modules/api/Controllers/AccountController.php:190
|
||||
#: ../../../modules/api/Controllers/AccountController.php:241
|
||||
#: ../../../modules/api/Controllers/AccountController.php:316
|
||||
#: ../../../modules/web/Controllers/AccountController.php:224
|
||||
#: ../../../modules/web/Controllers/AccountController.php:719
|
||||
#: ../../../modules/web/Controllers/AccountController.php:764
|
||||
#: ../../../modules/web/Controllers/AccountController.php:805
|
||||
#: ../../../modules/web/Controllers/AccountController.php:844
|
||||
#: ../../../modules/web/Controllers/AccountController.php:894
|
||||
#: ../../../modules/web/Controllers/AccountController.php:928
|
||||
#: ../../../modules/web/Controllers/AccountFileController.php:234
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:112
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:147
|
||||
@@ -2119,7 +2147,7 @@ msgid "Enlace"
|
||||
msgstr "Link"
|
||||
|
||||
#: ../../../../lib/SP/Services/User/UpdatedMasterPassException.php:45
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:145
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:155
|
||||
#: ../../../modules/web/Controllers/ConfigEncryptionController.php:68
|
||||
#: ../../../modules/web/Controllers/ConfigEncryptionController.php:142
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountPasswordHelper.php:116
|
||||
@@ -2286,12 +2314,12 @@ msgstr "Socket not initialized"
|
||||
msgid "Error al enviar datos"
|
||||
msgstr "Error while sending the data"
|
||||
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:128
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:138
|
||||
msgid "Opción no disponible"
|
||||
msgstr "Option unavailable"
|
||||
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:148
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:155
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:158
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:165
|
||||
msgid "Se ha producido una excepción"
|
||||
msgstr "An exception occured"
|
||||
|
||||
@@ -2304,40 +2332,40 @@ msgid "Cuenta visualizada"
|
||||
msgstr "Account displayed"
|
||||
|
||||
#: ../../../modules/api/Controllers/AccountController.php:102
|
||||
#: ../../../modules/web/Controllers/AccountController.php:554
|
||||
#: ../../../modules/web/Controllers/AccountController.php:610
|
||||
#: ../../../modules/web/Controllers/AccountController.php:553
|
||||
#: ../../../modules/web/Controllers/AccountController.php:609
|
||||
msgid "Clave visualizada"
|
||||
msgstr "Password viewed"
|
||||
|
||||
#: ../../../modules/api/Controllers/AccountController.php:138
|
||||
#: ../../../modules/api/Controllers/AccountController.php:144
|
||||
#: ../../../modules/web/Controllers/AccountController.php:804
|
||||
#: ../../../modules/web/Controllers/AccountController.php:815
|
||||
#: ../../../modules/web/Controllers/AccountController.php:803
|
||||
#: ../../../modules/web/Controllers/AccountController.php:814
|
||||
#: ../../../modules/web/Controllers/UserController.php:411
|
||||
#: ../../../modules/web/Controllers/UserController.php:415
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:186
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:190
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:189
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:193
|
||||
msgid "Clave actualizada"
|
||||
msgstr "Password updated"
|
||||
|
||||
#: ../../../modules/api/Controllers/AccountController.php:184
|
||||
#: ../../../modules/api/Controllers/AccountController.php:190
|
||||
#: ../../../modules/web/Controllers/AccountController.php:718
|
||||
#: ../../../modules/web/Controllers/AccountController.php:729
|
||||
#: ../../../modules/api/Controllers/AccountController.php:188
|
||||
#: ../../../modules/api/Controllers/AccountController.php:194
|
||||
#: ../../../modules/web/Controllers/AccountController.php:717
|
||||
#: ../../../modules/web/Controllers/AccountController.php:728
|
||||
msgid "Cuenta creada"
|
||||
msgstr "Account added"
|
||||
|
||||
#: ../../../modules/api/Controllers/AccountController.php:234
|
||||
#: ../../../modules/api/Controllers/AccountController.php:240
|
||||
#: ../../../modules/web/Controllers/AccountController.php:763
|
||||
#: ../../../modules/web/Controllers/AccountController.php:774
|
||||
#: ../../../modules/api/Controllers/AccountController.php:239
|
||||
#: ../../../modules/api/Controllers/AccountController.php:245
|
||||
#: ../../../modules/web/Controllers/AccountController.php:762
|
||||
#: ../../../modules/web/Controllers/AccountController.php:773
|
||||
msgid "Cuenta actualizada"
|
||||
msgstr "Account updated"
|
||||
|
||||
#: ../../../modules/api/Controllers/AccountController.php:309
|
||||
#: ../../../modules/api/Controllers/AccountController.php:315
|
||||
#: ../../../modules/web/Controllers/AccountController.php:893
|
||||
#: ../../../modules/web/Controllers/AccountController.php:898
|
||||
#: ../../../modules/api/Controllers/AccountController.php:314
|
||||
#: ../../../modules/api/Controllers/AccountController.php:320
|
||||
#: ../../../modules/web/Controllers/AccountController.php:892
|
||||
#: ../../../modules/web/Controllers/AccountController.php:897
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:110
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:115
|
||||
#: ../../../modules/web/Controllers/AccountManagerController.php:145
|
||||
@@ -2709,9 +2737,9 @@ msgstr "Group deleted"
|
||||
msgid "Es necesario actualizar"
|
||||
msgstr "Updating needed"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:149
|
||||
#: ../../../modules/web/Controllers/AccountController.php:204
|
||||
#: ../../../modules/web/Controllers/AccountController.php:474
|
||||
#: ../../../modules/web/Controllers/AccountController.php:148
|
||||
#: ../../../modules/web/Controllers/AccountController.php:203
|
||||
#: ../../../modules/web/Controllers/AccountController.php:473
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:60
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:61
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:159
|
||||
@@ -2721,21 +2749,21 @@ msgstr "Updating needed"
|
||||
msgid "Detalles de Cuenta"
|
||||
msgstr "Account Details"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:223
|
||||
#: ../../../modules/web/Controllers/AccountController.php:222
|
||||
msgid "Enlace visualizado"
|
||||
msgstr "Link viewed"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:224
|
||||
#: ../../../modules/web/Controllers/AccountController.php:555
|
||||
#: ../../../modules/web/Controllers/AccountController.php:611
|
||||
#: ../../../modules/web/Controllers/AccountController.php:650
|
||||
#: ../../../modules/web/Controllers/AccountController.php:684
|
||||
#: ../../../modules/web/Controllers/AccountController.php:719
|
||||
#: ../../../modules/web/Controllers/AccountController.php:764
|
||||
#: ../../../modules/web/Controllers/AccountController.php:805
|
||||
#: ../../../modules/web/Controllers/AccountController.php:844
|
||||
#: ../../../modules/web/Controllers/AccountController.php:894
|
||||
#: ../../../modules/web/Controllers/AccountController.php:928
|
||||
#: ../../../modules/web/Controllers/AccountController.php:223
|
||||
#: ../../../modules/web/Controllers/AccountController.php:554
|
||||
#: ../../../modules/web/Controllers/AccountController.php:610
|
||||
#: ../../../modules/web/Controllers/AccountController.php:649
|
||||
#: ../../../modules/web/Controllers/AccountController.php:683
|
||||
#: ../../../modules/web/Controllers/AccountController.php:718
|
||||
#: ../../../modules/web/Controllers/AccountController.php:763
|
||||
#: ../../../modules/web/Controllers/AccountController.php:804
|
||||
#: ../../../modules/web/Controllers/AccountController.php:843
|
||||
#: ../../../modules/web/Controllers/AccountController.php:893
|
||||
#: ../../../modules/web/Controllers/AccountController.php:927
|
||||
#: ../../../modules/web/Controllers/AccountFileController.php:233
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:111
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:146
|
||||
@@ -2749,24 +2777,24 @@ msgstr "Link viewed"
|
||||
msgid "Cuenta"
|
||||
msgstr "Account"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:226
|
||||
#: ../../../modules/web/Controllers/AccountController.php:225
|
||||
msgid "Agente"
|
||||
msgstr "Agent"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:227
|
||||
#: ../../../modules/web/Controllers/AccountController.php:226
|
||||
msgid "HTTPS"
|
||||
msgstr "HTTPS"
|
||||
|
||||
#. (itstool) path: action/text
|
||||
#: ../../../modules/web/Controllers/AccountController.php:256
|
||||
#: ../../../modules/web/Controllers/AccountController.php:300
|
||||
#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:278
|
||||
#: ../../../modules/web/Controllers/AccountController.php:255
|
||||
#: ../../../modules/web/Controllers/AccountController.php:299
|
||||
#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:280
|
||||
#: ../../../config/actions.xml:157
|
||||
msgid "Nueva Cuenta"
|
||||
msgstr "New Account"
|
||||
|
||||
#. (itstool) path: action/text
|
||||
#: ../../../modules/web/Controllers/AccountController.php:344
|
||||
#: ../../../modules/web/Controllers/AccountController.php:343
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:176
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:177
|
||||
#: ../../../modules/web/themes/material-blue/views/account/linkedAccounts.inc:18
|
||||
@@ -2775,7 +2803,7 @@ msgid "Editar Cuenta"
|
||||
msgstr "Edit Account"
|
||||
|
||||
#. (itstool) path: action/text
|
||||
#: ../../../modules/web/Controllers/AccountController.php:389
|
||||
#: ../../../modules/web/Controllers/AccountController.php:388
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:334
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:335
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:176
|
||||
@@ -2787,26 +2815,26 @@ msgstr "Edit Account"
|
||||
msgid "Eliminar Cuenta"
|
||||
msgstr "Remove Account"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:432
|
||||
#: ../../../modules/web/Controllers/AccountController.php:431
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:155
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:156
|
||||
msgid "Modificar Clave de Cuenta"
|
||||
msgstr "Edit Account Password"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:649
|
||||
#: ../../../modules/web/Controllers/AccountController.php:683
|
||||
#: ../../../modules/web/Controllers/AccountController.php:648
|
||||
#: ../../../modules/web/Controllers/AccountController.php:682
|
||||
msgid "Clave copiada"
|
||||
msgstr "Password copied"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:843
|
||||
#: ../../../modules/web/Controllers/AccountController.php:854
|
||||
#: ../../../modules/web/Controllers/AccountController.php:842
|
||||
#: ../../../modules/web/Controllers/AccountController.php:853
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:145
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:150
|
||||
msgid "Cuenta restaurada"
|
||||
msgstr "Account restored"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:879
|
||||
#: ../../../modules/web/Controllers/AccountController.php:882
|
||||
#: ../../../modules/web/Controllers/AccountController.php:878
|
||||
#: ../../../modules/web/Controllers/AccountController.php:881
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:99
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:102
|
||||
#: ../../../modules/web/Controllers/AccountManagerController.php:131
|
||||
@@ -2814,16 +2842,16 @@ msgstr "Account restored"
|
||||
msgid "Cuentas eliminadas"
|
||||
msgstr "Accounts removed"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:919
|
||||
#: ../../../modules/web/Controllers/AccountController.php:918
|
||||
#: ../../../modules/web/Forms/NotificationForm.php:100
|
||||
msgid "Es necesaria una descripción"
|
||||
msgstr "A description is needed"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:927
|
||||
#: ../../../modules/web/Controllers/AccountController.php:926
|
||||
msgid "Solicitante"
|
||||
msgstr "Requester"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:930
|
||||
#: ../../../modules/web/Controllers/AccountController.php:929
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:106
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:105
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/EventlogGrid.php:105
|
||||
@@ -2837,7 +2865,7 @@ msgstr "Requester"
|
||||
msgid "Descripción"
|
||||
msgstr "Description"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:943
|
||||
#: ../../../modules/web/Controllers/AccountController.php:942
|
||||
msgid "Solicitud realizada"
|
||||
msgstr "Request done"
|
||||
|
||||
@@ -3066,7 +3094,7 @@ msgid "Ey, esto es una DEMO!!"
|
||||
msgstr "Ey, this is a DEMO!!"
|
||||
|
||||
#: ../../../modules/web/Controllers/ConfigBackupController.php:86
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:173
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:176
|
||||
#: ../../../modules/web/Forms/AccountForm.php:135
|
||||
#: ../../../modules/web/Forms/UserForm.php:161
|
||||
msgid "Las claves no coinciden"
|
||||
@@ -3951,15 +3979,11 @@ msgid "Eliminar Notificación"
|
||||
msgstr "Delete Notification"
|
||||
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/PluginGrid.php:89
|
||||
#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:334
|
||||
#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:336
|
||||
#: ../../../modules/web/themes/material-blue/views/plugin/index.inc:1
|
||||
msgid "Plugins"
|
||||
msgstr "Plugins"
|
||||
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/PluginGrid.php:101
|
||||
msgid "Plugin"
|
||||
msgstr "Plugin"
|
||||
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/PluginGrid.php:118
|
||||
msgid "No disponible"
|
||||
msgstr "Unavailable"
|
||||
@@ -3973,7 +3997,7 @@ msgstr "Search for Plugin"
|
||||
#. (itstool) path: action/text
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/PluginGrid.php:149
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/PluginGrid.php:150
|
||||
#: ../../../modules/web/Controllers/PluginController.php:120
|
||||
#: ../../../modules/web/Controllers/PluginController.php:125
|
||||
#: ../../../config/actions.xml:541
|
||||
msgid "Ver Plugin"
|
||||
msgstr "View Plugin"
|
||||
@@ -4224,13 +4248,13 @@ msgstr "Edit Profile"
|
||||
msgid "Eliminar Perfil"
|
||||
msgstr "Delete Profile"
|
||||
|
||||
#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:265
|
||||
#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:267
|
||||
#: ../../../modules/web/themes/material-blue/inc/Icons.php:58
|
||||
msgid "Buscar"
|
||||
msgstr "Search"
|
||||
|
||||
#. (itstool) path: action/text
|
||||
#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:348
|
||||
#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:350
|
||||
#: ../../../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
|
||||
@@ -4282,15 +4306,15 @@ msgstr "Value created"
|
||||
msgid "Valor actualizado"
|
||||
msgstr "Value updated"
|
||||
|
||||
#: ../../../modules/web/Controllers/LoginController.php:101
|
||||
#: ../../../modules/web/Controllers/LoginController.php:119
|
||||
msgid "Finalizar sesión"
|
||||
msgstr "Logout session"
|
||||
|
||||
#: ../../../modules/web/Controllers/LoginController.php:103
|
||||
#: ../../../modules/web/Controllers/LoginController.php:121
|
||||
msgid "Tiempo inactivo"
|
||||
msgstr "Inactive time"
|
||||
|
||||
#: ../../../modules/web/Controllers/LoginController.php:104
|
||||
#: ../../../modules/web/Controllers/LoginController.php:122
|
||||
msgid "Tiempo total"
|
||||
msgstr "Total time"
|
||||
|
||||
@@ -4319,18 +4343,13 @@ msgstr "Notification created"
|
||||
msgid "Notificación actualizada"
|
||||
msgstr "Notification updated"
|
||||
|
||||
#: ../../../modules/web/Controllers/PluginController.php:181
|
||||
#: ../../../modules/web/Controllers/PluginController.php:184
|
||||
#: ../../../modules/web/Controllers/PluginController.php:188
|
||||
#: ../../../modules/web/Controllers/PluginController.php:191
|
||||
msgid "Plugin habilitado"
|
||||
msgstr "Plugin enabled"
|
||||
|
||||
#: ../../../modules/web/Controllers/PluginController.php:206
|
||||
#: ../../../modules/web/Controllers/PluginController.php:209
|
||||
msgid "Plugin deshabilitado"
|
||||
msgstr "Plugin disabled"
|
||||
|
||||
#: ../../../modules/web/Controllers/PluginController.php:231
|
||||
#: ../../../modules/web/Controllers/PluginController.php:234
|
||||
#: ../../../modules/web/Controllers/PluginController.php:238
|
||||
#: ../../../modules/web/Controllers/PluginController.php:241
|
||||
msgid "Plugin restablecido"
|
||||
msgstr "Plugin reset"
|
||||
|
||||
@@ -4357,11 +4376,11 @@ msgstr "Link deleted"
|
||||
msgid "Enlace creado"
|
||||
msgstr "Link created"
|
||||
|
||||
#: ../../../modules/web/Controllers/StatusController.php:94
|
||||
#: ../../../modules/web/Controllers/StatusController.php:93
|
||||
msgid "Versión no disponible"
|
||||
msgstr "Version unavailable"
|
||||
|
||||
#: ../../../modules/web/Controllers/StatusController.php:142
|
||||
#: ../../../modules/web/Controllers/StatusController.php:140
|
||||
msgid "Notificaciones no disponibles"
|
||||
msgstr "Notifications not available"
|
||||
|
||||
@@ -4467,7 +4486,7 @@ msgstr "Request sent"
|
||||
msgid "En breve recibirá un correo para completar la solicitud."
|
||||
msgstr "You will receive an email to complete the request shortly."
|
||||
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:169
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:172
|
||||
#: ../../../modules/web/Forms/AuthTokenForm.php:101
|
||||
#: ../../../modules/web/Forms/UserForm.php:157
|
||||
msgid "La clave no puede estar en blanco"
|
||||
@@ -4501,7 +4520,7 @@ msgstr "View Profile"
|
||||
msgid "Preferencias actualizadas"
|
||||
msgstr "Preferences updated"
|
||||
|
||||
#: ../../../modules/web/Controllers/UserSettingsManagerController.php:89
|
||||
#: ../../../modules/web/Controllers/UserSettingsManagerController.php:92
|
||||
msgid "Preferencias"
|
||||
msgstr "Preferences"
|
||||
|
||||
|
||||
Binary file not shown.
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sysPass\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-10-12 00:42+0200\n"
|
||||
"PO-Revision-Date: 2018-10-12 00:43+0200\n"
|
||||
"POT-Creation-Date: 2018-10-15 02:52+0200\n"
|
||||
"PO-Revision-Date: 2018-10-15 02:53+0200\n"
|
||||
"Last-Translator: nuxsmin <nuxsmin@syspass.org>\n"
|
||||
"Language-Team: nuxsmin@syspass.org\n"
|
||||
"Language: en_US\n"
|
||||
@@ -25,12 +25,12 @@ msgstr ""
|
||||
"X-Poedit-SearchPath-1: ../../../../lib\n"
|
||||
"X-Poedit-SearchPath-2: ../../../config\n"
|
||||
|
||||
#: ../../../../lib/SP/Bootstrap.php:267
|
||||
#: ../../../../lib/SP/Bootstrap.php:278
|
||||
#, php-format
|
||||
msgid "Versión de PHP requerida >= %s <= %s"
|
||||
msgstr "Required PHP version >= %s <= %s"
|
||||
|
||||
#: ../../../../lib/SP/Bootstrap.php:269
|
||||
#: ../../../../lib/SP/Bootstrap.php:280
|
||||
msgid ""
|
||||
"Actualice la versión de PHP para que la aplicación funcione correctamente"
|
||||
msgstr "Please update the PHP version to run sysPass"
|
||||
@@ -53,7 +53,7 @@ msgid "Actual: %s - Necesario: 750"
|
||||
msgstr "Current: %s - Needed: 750"
|
||||
|
||||
#: ../../../../lib/SP/Core/Acl/AccountPermissionException.php:45
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:132
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:142
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountPasswordHelper.php:96
|
||||
msgid "No tiene permisos para acceder a esta cuenta"
|
||||
msgstr "You don't have permission to access to this account"
|
||||
@@ -61,12 +61,12 @@ msgstr "You don't have permission to access to this account"
|
||||
#: ../../../../lib/SP/Core/Acl/AccountPermissionException.php:45
|
||||
#: ../../../../lib/SP/Core/Acl/UnauthorizedActionException.php:46
|
||||
#: ../../../../lib/SP/Core/Acl/UnauthorizedPageException.php:45
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:129
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:133
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:137
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:141
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:149
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:156
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:139
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:143
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:147
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:151
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:159
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:166
|
||||
#: ../../../modules/web/Controllers/ErrorController.php:124
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:94
|
||||
#: ../../../modules/web/themes/material-blue/views/upgrade/index.inc:13
|
||||
@@ -75,7 +75,7 @@ msgstr "Please contact to the administrator"
|
||||
|
||||
# Not available
|
||||
#: ../../../../lib/SP/Core/Acl/Acl.php:294
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:600
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:604
|
||||
msgid "N/D"
|
||||
msgstr "N/A"
|
||||
|
||||
@@ -96,24 +96,24 @@ msgstr "Action"
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapMsAds.php:155
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapStd.php:110
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapStd.php:142
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:217
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:235
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:386
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:453
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:561
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:604
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:220
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:238
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:390
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:457
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:565
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:608
|
||||
#: ../../../../lib/SP/Services/Ldap/LdapImportService.php:238
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountSearchHelper.php:253
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php:106
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/ItemPresetGrid.php:107
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php:111
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/TrackGrid.php:105
|
||||
#: ../../../modules/web/Controllers/LoginController.php:102
|
||||
#: ../../../modules/web/Controllers/LoginController.php:120
|
||||
#: ../../../modules/web/Controllers/UserController.php:278
|
||||
#: ../../../modules/web/Controllers/UserController.php:312
|
||||
#: ../../../modules/web/Controllers/UserController.php:373
|
||||
#: ../../../modules/web/Controllers/UserController.php:412
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:187
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:190
|
||||
#: ../../../modules/web/themes/material-blue/views/account/account-editpass.inc:55
|
||||
#: ../../../modules/web/themes/material-blue/views/account/account-editpass.inc:61
|
||||
#: ../../../modules/web/themes/material-blue/views/account/account-history.inc:91
|
||||
@@ -151,7 +151,7 @@ msgid "Acción no encontrada"
|
||||
msgstr "Action not found"
|
||||
|
||||
#: ../../../../lib/SP/Core/Acl/UnauthorizedActionException.php:46
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:140
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:150
|
||||
#: ../../../modules/web/Controllers/AccountFileController.php:261
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:59
|
||||
#: ../../../modules/web/Controllers/AccountManagerController.php:77
|
||||
@@ -200,8 +200,8 @@ msgstr "Action not found"
|
||||
#: ../../../modules/web/Controllers/NotificationController.php:288
|
||||
#: ../../../modules/web/Controllers/NotificationController.php:315
|
||||
#: ../../../modules/web/Controllers/NotificationController.php:348
|
||||
#: ../../../modules/web/Controllers/PluginController.php:98
|
||||
#: ../../../modules/web/Controllers/PluginController.php:117
|
||||
#: ../../../modules/web/Controllers/PluginController.php:103
|
||||
#: ../../../modules/web/Controllers/PluginController.php:122
|
||||
#: ../../../modules/web/Controllers/PublicLinkController.php:71
|
||||
#: ../../../modules/web/Controllers/PublicLinkController.php:105
|
||||
#: ../../../modules/web/Controllers/PublicLinkController.php:167
|
||||
@@ -244,7 +244,7 @@ msgid "No tiene permisos para realizar esta operación"
|
||||
msgstr "You don't have permission to do this operation"
|
||||
|
||||
#: ../../../../lib/SP/Core/Acl/UnauthorizedPageException.php:45
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:136
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:146
|
||||
msgid "No tiene permisos para acceder a esta página"
|
||||
msgstr "You don't have permission to access this page"
|
||||
|
||||
@@ -280,14 +280,14 @@ msgstr "Session cannot be initialized"
|
||||
#: ../../../../lib/SP/Services/Account/AccountService.php:227
|
||||
#: ../../../../lib/SP/Services/Account/AccountService.php:232
|
||||
#: ../../../../lib/SP/Services/Api/ApiService.php:129
|
||||
#: ../../../../lib/SP/Services/Api/ApiService.php:227
|
||||
#: ../../../../lib/SP/Services/Api/ApiService.php:235
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:187
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:351
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:500
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:505
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:537
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:644
|
||||
#: ../../../../lib/SP/Services/Api/ApiService.php:229
|
||||
#: ../../../../lib/SP/Services/Api/ApiService.php:237
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:190
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:354
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:504
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:509
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:541
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:648
|
||||
#: ../../../../lib/SP/Services/AuthToken/AuthTokenService.php:311
|
||||
#: ../../../../lib/SP/Services/CustomField/CustomFieldService.php:203
|
||||
#: ../../../../lib/SP/Services/Export/XmlVerifyService.php:108
|
||||
@@ -306,7 +306,7 @@ msgstr "Crypto module cannot be loaded"
|
||||
msgid "Error al generar datos cifrados"
|
||||
msgstr "Error while creating the encrypted data"
|
||||
|
||||
#: ../../../../lib/SP/Core/Events/Event.php:56
|
||||
#: ../../../../lib/SP/Core/Events/Event.php:57
|
||||
msgid "Es necesario un objeto"
|
||||
msgstr "An object is needed"
|
||||
|
||||
@@ -320,17 +320,17 @@ msgstr "Invalid icons class"
|
||||
|
||||
#: ../../../../lib/SP/DataModel/PublicLinkListData.php:88
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapConnection.php:190
|
||||
#: ../../../modules/web/Controllers/AccountController.php:227
|
||||
#: ../../../modules/web/Controllers/AccountController.php:226
|
||||
msgid "ON"
|
||||
msgstr "ON"
|
||||
|
||||
#: ../../../../lib/SP/DataModel/PublicLinkListData.php:88
|
||||
#: ../../../modules/web/Controllers/AccountController.php:227
|
||||
#: ../../../modules/web/Controllers/AccountController.php:226
|
||||
msgid "OFF"
|
||||
msgstr "OFF"
|
||||
|
||||
#: ../../../../lib/SP/Html/DataGrid/DataGridBase.php:303
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:122
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:126
|
||||
#, php-format
|
||||
msgid "No es posible obtener la plantilla \"%s\" : %s"
|
||||
msgstr "Unable to retrieve the \"%s\" template: %s"
|
||||
@@ -352,11 +352,11 @@ msgstr "Encoding error"
|
||||
msgid "Respuesta XML-RPC inválida"
|
||||
msgstr "Invalid XML-RPC response"
|
||||
|
||||
#: ../../../../lib/SP/Mvc/Controller/ControllerTrait.php:64
|
||||
#: ../../../../lib/SP/Mvc/Controller/ControllerTrait.php:71
|
||||
msgid "La sesión no se ha iniciado o ha caducado"
|
||||
msgstr "Session not started or timed out"
|
||||
|
||||
#: ../../../../lib/SP/Mvc/Controller/ControllerTrait.php:114
|
||||
#: ../../../../lib/SP/Mvc/Controller/ControllerTrait.php:124
|
||||
msgid "Acción Inválida"
|
||||
msgstr "Invalid Action"
|
||||
|
||||
@@ -398,41 +398,69 @@ msgstr "Invalid filter type"
|
||||
msgid "Tipo de objeto incorrecto"
|
||||
msgstr "Wrong object type"
|
||||
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:274
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:276
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:278
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:280
|
||||
#, php-format
|
||||
msgid "No es posible obtener la variable \"%s\""
|
||||
msgstr "Unable to retrieve the \"%s\" variable"
|
||||
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:322
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:324
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:326
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:328
|
||||
#, php-format
|
||||
msgid "No es posible destruir la variable \"%s\""
|
||||
msgstr "Unable to unset the \"%s\" variable"
|
||||
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:341
|
||||
#: ../../../../lib/SP/Mvc/View/Template.php:345
|
||||
msgid "La plantilla no contiene archivos"
|
||||
msgstr "Template does not contain files"
|
||||
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:113
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:256
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:170
|
||||
#, php-format
|
||||
msgid "Versión de plugin no compatible (%s)"
|
||||
msgstr "Plugin version not compatible (%s)"
|
||||
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:192
|
||||
#, php-format
|
||||
msgid "No es posible cargar el plugin \"%s\""
|
||||
msgstr "Unable to load the \"%s\" plugin"
|
||||
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:194
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/PluginGrid.php:101
|
||||
msgid "Plugin"
|
||||
msgstr "Plugin"
|
||||
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:219
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:339
|
||||
#: ../../../modules/web/Controllers/PluginController.php:213
|
||||
#: ../../../modules/web/Controllers/PluginController.php:216
|
||||
msgid "Plugin deshabilitado"
|
||||
msgstr "Plugin disabled"
|
||||
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:254
|
||||
msgid "Plugin disponible"
|
||||
msgstr "Plugin available"
|
||||
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:264
|
||||
msgid "Plugin no disponible"
|
||||
msgstr "Plugin unavailable"
|
||||
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:294
|
||||
msgid "Plugin cargado"
|
||||
msgstr "Plugin loaded"
|
||||
|
||||
#. (itstool) path: action/text
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:245
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:319
|
||||
#: ../../../config/actions.xml:535
|
||||
msgid "Nuevo Plugin"
|
||||
msgstr "New Plugin"
|
||||
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:246
|
||||
#: ../../../../lib/SP/Plugin/PluginManager.php:320
|
||||
#: ../../../modules/api/Controllers/AccountController.php:71
|
||||
#: ../../../modules/api/Controllers/AccountController.php:103
|
||||
#: ../../../modules/api/Controllers/AccountController.php:139
|
||||
#: ../../../modules/api/Controllers/AccountController.php:185
|
||||
#: ../../../modules/api/Controllers/AccountController.php:235
|
||||
#: ../../../modules/api/Controllers/AccountController.php:310
|
||||
#: ../../../modules/api/Controllers/AccountController.php:189
|
||||
#: ../../../modules/api/Controllers/AccountController.php:240
|
||||
#: ../../../modules/api/Controllers/AccountController.php:315
|
||||
#: ../../../modules/api/Controllers/CategoryController.php:63
|
||||
#: ../../../modules/api/Controllers/CategoryController.php:92
|
||||
#: ../../../modules/api/Controllers/CategoryController.php:122
|
||||
@@ -490,7 +518,7 @@ msgid "Método ya inicializado"
|
||||
msgstr "Method already initialized"
|
||||
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:119
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:125
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:126
|
||||
msgid "Error al buscar RDN de grupo"
|
||||
msgstr "Error while searching the group RDN"
|
||||
|
||||
@@ -518,13 +546,13 @@ msgstr "Error while searching the group RDN"
|
||||
msgid "Grupo"
|
||||
msgstr "Group"
|
||||
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:200
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:204
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:205
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:210
|
||||
msgid "Error al localizar el usuario en LDAP"
|
||||
msgstr "Error while searching the user on LDAP"
|
||||
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:249
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:254
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:259
|
||||
#: ../../../../lib/SP/Providers/Auth/Ldap/LdapActions.php:265
|
||||
msgid "Error al buscar objetos en DN base"
|
||||
msgstr "Error while searching objects in base DN"
|
||||
|
||||
@@ -594,7 +622,7 @@ msgid "No es posible inicializar"
|
||||
msgstr "Unable to initialize"
|
||||
|
||||
#: ../../../../lib/SP/Providers/Notification/NotificationHandler.php:124
|
||||
#: ../../../modules/web/Controllers/AccountController.php:926
|
||||
#: ../../../modules/web/Controllers/AccountController.php:925
|
||||
msgid "Solicitud"
|
||||
msgstr "Request"
|
||||
|
||||
@@ -1121,7 +1149,7 @@ 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
|
||||
#: ../../../../lib/SP/Services/Api/ApiService.php:231
|
||||
msgid "Datos inválidos"
|
||||
msgstr "Invalid data"
|
||||
|
||||
@@ -1130,7 +1158,7 @@ msgid "Fomato incorrecto"
|
||||
msgstr "Invalid format"
|
||||
|
||||
#: ../../../../lib/SP/Services/Api/ApiService.php:96
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:137
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:138
|
||||
#: ../../../../lib/SP/Services/UserPassRecover/UserPassRecoverService.php:103
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:124
|
||||
msgid "Intentos excedidos"
|
||||
@@ -1145,54 +1173,54 @@ msgstr "Wrong parameters"
|
||||
msgid "Acceso no permitido"
|
||||
msgstr "Unauthorized access"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:157
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:456
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:463
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:571
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:576
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:615
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:620
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:160
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:460
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:467
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:575
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:580
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:619
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:624
|
||||
msgid "Login incorrecto"
|
||||
msgstr "Wrong login"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:216
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:223
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:219
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:226
|
||||
msgid "Usuario deshabilitado"
|
||||
msgstr "User disabled"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:270
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:273
|
||||
msgid "Usando clave temporal"
|
||||
msgstr "Using temporary password"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:282
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:288
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:306
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:312
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:285
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:291
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:309
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:315
|
||||
msgid "Clave maestra incorrecta"
|
||||
msgstr "Wrong master password"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:297
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:321
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:300
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:324
|
||||
#: ../../../../lib/SP/Services/User/UpdatedMasterPassException.php:45
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:144
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:154
|
||||
#: ../../../modules/web/Controllers/ConfigEncryptionController.php:68
|
||||
#: ../../../modules/web/Controllers/ConfigEncryptionController.php:142
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountPasswordHelper.php:116
|
||||
msgid "Clave maestra actualizada"
|
||||
msgstr "Master password updated"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:327
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:330
|
||||
msgid "Es necesaria su clave anterior"
|
||||
msgstr "Your previous password is needed"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:339
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:342
|
||||
msgid "La clave maestra no ha sido guardada o es incorrecta"
|
||||
msgstr "The Master Password either is not saved or is wrong"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:451
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:514
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:560
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:603
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:455
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:518
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:564
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:607
|
||||
#: ../../../modules/web/Controllers/AccountFileController.php:235
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php:108
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/FileGrid.php:108
|
||||
@@ -1207,22 +1235,22 @@ msgstr "The Master Password either is not saved or is wrong"
|
||||
msgid "Tipo"
|
||||
msgstr "Type"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:452
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:515
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:456
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:519
|
||||
msgid "Servidor LDAP"
|
||||
msgstr "LDAP Server"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:471
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:476
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:475
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:480
|
||||
msgid "Cuenta expirada"
|
||||
msgstr "Account expired"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:484
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:489
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:488
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:493
|
||||
msgid "El usuario no tiene grupos asociados"
|
||||
msgstr "The user has no associated groups"
|
||||
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:605
|
||||
#: ../../../../lib/SP/Services/Auth/LoginService.php:609
|
||||
#: ../../../modules/web/themes/material-blue/views/config/general-auth.inc:10
|
||||
msgid "Autentificación"
|
||||
msgstr "Authentication"
|
||||
@@ -1503,16 +1531,16 @@ msgstr "Account imported"
|
||||
#: ../../../modules/api/Controllers/AccountController.php:72
|
||||
#: ../../../modules/api/Controllers/AccountController.php:104
|
||||
#: ../../../modules/api/Controllers/AccountController.php:140
|
||||
#: ../../../modules/api/Controllers/AccountController.php:186
|
||||
#: ../../../modules/api/Controllers/AccountController.php:236
|
||||
#: ../../../modules/api/Controllers/AccountController.php:311
|
||||
#: ../../../modules/web/Controllers/AccountController.php:225
|
||||
#: ../../../modules/web/Controllers/AccountController.php:720
|
||||
#: ../../../modules/web/Controllers/AccountController.php:765
|
||||
#: ../../../modules/web/Controllers/AccountController.php:806
|
||||
#: ../../../modules/web/Controllers/AccountController.php:845
|
||||
#: ../../../modules/web/Controllers/AccountController.php:895
|
||||
#: ../../../modules/web/Controllers/AccountController.php:929
|
||||
#: ../../../modules/api/Controllers/AccountController.php:190
|
||||
#: ../../../modules/api/Controllers/AccountController.php:241
|
||||
#: ../../../modules/api/Controllers/AccountController.php:316
|
||||
#: ../../../modules/web/Controllers/AccountController.php:224
|
||||
#: ../../../modules/web/Controllers/AccountController.php:719
|
||||
#: ../../../modules/web/Controllers/AccountController.php:764
|
||||
#: ../../../modules/web/Controllers/AccountController.php:805
|
||||
#: ../../../modules/web/Controllers/AccountController.php:844
|
||||
#: ../../../modules/web/Controllers/AccountController.php:894
|
||||
#: ../../../modules/web/Controllers/AccountController.php:928
|
||||
#: ../../../modules/web/Controllers/AccountFileController.php:234
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:112
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:147
|
||||
@@ -2119,7 +2147,7 @@ msgid "Enlace"
|
||||
msgstr "Link"
|
||||
|
||||
#: ../../../../lib/SP/Services/User/UpdatedMasterPassException.php:45
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:145
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:155
|
||||
#: ../../../modules/web/Controllers/ConfigEncryptionController.php:68
|
||||
#: ../../../modules/web/Controllers/ConfigEncryptionController.php:142
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountPasswordHelper.php:116
|
||||
@@ -2286,12 +2314,12 @@ msgstr "Socket not initialized"
|
||||
msgid "Error al enviar datos"
|
||||
msgstr "Error while sending the data"
|
||||
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:128
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:138
|
||||
msgid "Opción no disponible"
|
||||
msgstr "Option unavailable"
|
||||
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:148
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:155
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:158
|
||||
#: ../../../../lib/SP/Util/ErrorUtil.php:165
|
||||
msgid "Se ha producido una excepción"
|
||||
msgstr "An exception occured"
|
||||
|
||||
@@ -2304,40 +2332,40 @@ msgid "Cuenta visualizada"
|
||||
msgstr "Account displayed"
|
||||
|
||||
#: ../../../modules/api/Controllers/AccountController.php:102
|
||||
#: ../../../modules/web/Controllers/AccountController.php:554
|
||||
#: ../../../modules/web/Controllers/AccountController.php:610
|
||||
#: ../../../modules/web/Controllers/AccountController.php:553
|
||||
#: ../../../modules/web/Controllers/AccountController.php:609
|
||||
msgid "Clave visualizada"
|
||||
msgstr "Password viewed"
|
||||
|
||||
#: ../../../modules/api/Controllers/AccountController.php:138
|
||||
#: ../../../modules/api/Controllers/AccountController.php:144
|
||||
#: ../../../modules/web/Controllers/AccountController.php:804
|
||||
#: ../../../modules/web/Controllers/AccountController.php:815
|
||||
#: ../../../modules/web/Controllers/AccountController.php:803
|
||||
#: ../../../modules/web/Controllers/AccountController.php:814
|
||||
#: ../../../modules/web/Controllers/UserController.php:411
|
||||
#: ../../../modules/web/Controllers/UserController.php:415
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:186
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:190
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:189
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:193
|
||||
msgid "Clave actualizada"
|
||||
msgstr "Password updated"
|
||||
|
||||
#: ../../../modules/api/Controllers/AccountController.php:184
|
||||
#: ../../../modules/api/Controllers/AccountController.php:190
|
||||
#: ../../../modules/web/Controllers/AccountController.php:718
|
||||
#: ../../../modules/web/Controllers/AccountController.php:729
|
||||
#: ../../../modules/api/Controllers/AccountController.php:188
|
||||
#: ../../../modules/api/Controllers/AccountController.php:194
|
||||
#: ../../../modules/web/Controllers/AccountController.php:717
|
||||
#: ../../../modules/web/Controllers/AccountController.php:728
|
||||
msgid "Cuenta creada"
|
||||
msgstr "Account added"
|
||||
|
||||
#: ../../../modules/api/Controllers/AccountController.php:234
|
||||
#: ../../../modules/api/Controllers/AccountController.php:240
|
||||
#: ../../../modules/web/Controllers/AccountController.php:763
|
||||
#: ../../../modules/web/Controllers/AccountController.php:774
|
||||
#: ../../../modules/api/Controllers/AccountController.php:239
|
||||
#: ../../../modules/api/Controllers/AccountController.php:245
|
||||
#: ../../../modules/web/Controllers/AccountController.php:762
|
||||
#: ../../../modules/web/Controllers/AccountController.php:773
|
||||
msgid "Cuenta actualizada"
|
||||
msgstr "Account updated"
|
||||
|
||||
#: ../../../modules/api/Controllers/AccountController.php:309
|
||||
#: ../../../modules/api/Controllers/AccountController.php:315
|
||||
#: ../../../modules/web/Controllers/AccountController.php:893
|
||||
#: ../../../modules/web/Controllers/AccountController.php:898
|
||||
#: ../../../modules/api/Controllers/AccountController.php:314
|
||||
#: ../../../modules/api/Controllers/AccountController.php:320
|
||||
#: ../../../modules/web/Controllers/AccountController.php:892
|
||||
#: ../../../modules/web/Controllers/AccountController.php:897
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:110
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:115
|
||||
#: ../../../modules/web/Controllers/AccountManagerController.php:145
|
||||
@@ -2709,9 +2737,9 @@ msgstr "Group deleted"
|
||||
msgid "Es necesario actualizar"
|
||||
msgstr "Updating needed"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:149
|
||||
#: ../../../modules/web/Controllers/AccountController.php:204
|
||||
#: ../../../modules/web/Controllers/AccountController.php:474
|
||||
#: ../../../modules/web/Controllers/AccountController.php:148
|
||||
#: ../../../modules/web/Controllers/AccountController.php:203
|
||||
#: ../../../modules/web/Controllers/AccountController.php:473
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:60
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:61
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:159
|
||||
@@ -2721,21 +2749,21 @@ msgstr "Updating needed"
|
||||
msgid "Detalles de Cuenta"
|
||||
msgstr "Account Details"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:223
|
||||
#: ../../../modules/web/Controllers/AccountController.php:222
|
||||
msgid "Enlace visualizado"
|
||||
msgstr "Link viewed"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:224
|
||||
#: ../../../modules/web/Controllers/AccountController.php:555
|
||||
#: ../../../modules/web/Controllers/AccountController.php:611
|
||||
#: ../../../modules/web/Controllers/AccountController.php:650
|
||||
#: ../../../modules/web/Controllers/AccountController.php:684
|
||||
#: ../../../modules/web/Controllers/AccountController.php:719
|
||||
#: ../../../modules/web/Controllers/AccountController.php:764
|
||||
#: ../../../modules/web/Controllers/AccountController.php:805
|
||||
#: ../../../modules/web/Controllers/AccountController.php:844
|
||||
#: ../../../modules/web/Controllers/AccountController.php:894
|
||||
#: ../../../modules/web/Controllers/AccountController.php:928
|
||||
#: ../../../modules/web/Controllers/AccountController.php:223
|
||||
#: ../../../modules/web/Controllers/AccountController.php:554
|
||||
#: ../../../modules/web/Controllers/AccountController.php:610
|
||||
#: ../../../modules/web/Controllers/AccountController.php:649
|
||||
#: ../../../modules/web/Controllers/AccountController.php:683
|
||||
#: ../../../modules/web/Controllers/AccountController.php:718
|
||||
#: ../../../modules/web/Controllers/AccountController.php:763
|
||||
#: ../../../modules/web/Controllers/AccountController.php:804
|
||||
#: ../../../modules/web/Controllers/AccountController.php:843
|
||||
#: ../../../modules/web/Controllers/AccountController.php:893
|
||||
#: ../../../modules/web/Controllers/AccountController.php:927
|
||||
#: ../../../modules/web/Controllers/AccountFileController.php:233
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:111
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:146
|
||||
@@ -2749,24 +2777,24 @@ msgstr "Link viewed"
|
||||
msgid "Cuenta"
|
||||
msgstr "Account"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:226
|
||||
#: ../../../modules/web/Controllers/AccountController.php:225
|
||||
msgid "Agente"
|
||||
msgstr "Agent"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:227
|
||||
#: ../../../modules/web/Controllers/AccountController.php:226
|
||||
msgid "HTTPS"
|
||||
msgstr "HTTPS"
|
||||
|
||||
#. (itstool) path: action/text
|
||||
#: ../../../modules/web/Controllers/AccountController.php:256
|
||||
#: ../../../modules/web/Controllers/AccountController.php:300
|
||||
#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:278
|
||||
#: ../../../modules/web/Controllers/AccountController.php:255
|
||||
#: ../../../modules/web/Controllers/AccountController.php:299
|
||||
#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:280
|
||||
#: ../../../config/actions.xml:157
|
||||
msgid "Nueva Cuenta"
|
||||
msgstr "New Account"
|
||||
|
||||
#. (itstool) path: action/text
|
||||
#: ../../../modules/web/Controllers/AccountController.php:344
|
||||
#: ../../../modules/web/Controllers/AccountController.php:343
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:176
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:177
|
||||
#: ../../../modules/web/themes/material-blue/views/account/linkedAccounts.inc:18
|
||||
@@ -2775,7 +2803,7 @@ msgid "Editar Cuenta"
|
||||
msgstr "Edit Account"
|
||||
|
||||
#. (itstool) path: action/text
|
||||
#: ../../../modules/web/Controllers/AccountController.php:389
|
||||
#: ../../../modules/web/Controllers/AccountController.php:388
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:334
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:335
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/AccountGrid.php:176
|
||||
@@ -2787,26 +2815,26 @@ msgstr "Edit Account"
|
||||
msgid "Eliminar Cuenta"
|
||||
msgstr "Remove Account"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:432
|
||||
#: ../../../modules/web/Controllers/AccountController.php:431
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:155
|
||||
#: ../../../modules/web/Controllers/Helpers/Account/AccountActionsHelper.php:156
|
||||
msgid "Modificar Clave de Cuenta"
|
||||
msgstr "Edit Account Password"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:649
|
||||
#: ../../../modules/web/Controllers/AccountController.php:683
|
||||
#: ../../../modules/web/Controllers/AccountController.php:648
|
||||
#: ../../../modules/web/Controllers/AccountController.php:682
|
||||
msgid "Clave copiada"
|
||||
msgstr "Password copied"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:843
|
||||
#: ../../../modules/web/Controllers/AccountController.php:854
|
||||
#: ../../../modules/web/Controllers/AccountController.php:842
|
||||
#: ../../../modules/web/Controllers/AccountController.php:853
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:145
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:150
|
||||
msgid "Cuenta restaurada"
|
||||
msgstr "Account restored"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:879
|
||||
#: ../../../modules/web/Controllers/AccountController.php:882
|
||||
#: ../../../modules/web/Controllers/AccountController.php:878
|
||||
#: ../../../modules/web/Controllers/AccountController.php:881
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:99
|
||||
#: ../../../modules/web/Controllers/AccountHistoryManagerController.php:102
|
||||
#: ../../../modules/web/Controllers/AccountManagerController.php:131
|
||||
@@ -2814,16 +2842,16 @@ msgstr "Account restored"
|
||||
msgid "Cuentas eliminadas"
|
||||
msgstr "Accounts removed"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:919
|
||||
#: ../../../modules/web/Controllers/AccountController.php:918
|
||||
#: ../../../modules/web/Forms/NotificationForm.php:100
|
||||
msgid "Es necesaria una descripción"
|
||||
msgstr "A description is needed"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:927
|
||||
#: ../../../modules/web/Controllers/AccountController.php:926
|
||||
msgid "Solicitante"
|
||||
msgstr "Requester"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:930
|
||||
#: ../../../modules/web/Controllers/AccountController.php:929
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/CategoryGrid.php:106
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/ClientGrid.php:105
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/EventlogGrid.php:105
|
||||
@@ -2837,7 +2865,7 @@ msgstr "Requester"
|
||||
msgid "Descripción"
|
||||
msgstr "Description"
|
||||
|
||||
#: ../../../modules/web/Controllers/AccountController.php:943
|
||||
#: ../../../modules/web/Controllers/AccountController.php:942
|
||||
msgid "Solicitud realizada"
|
||||
msgstr "Request done"
|
||||
|
||||
@@ -3066,7 +3094,7 @@ msgid "Ey, esto es una DEMO!!"
|
||||
msgstr "Ey, this is a DEMO!!"
|
||||
|
||||
#: ../../../modules/web/Controllers/ConfigBackupController.php:86
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:173
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:176
|
||||
#: ../../../modules/web/Forms/AccountForm.php:135
|
||||
#: ../../../modules/web/Forms/UserForm.php:161
|
||||
msgid "Las claves no coinciden"
|
||||
@@ -3951,15 +3979,11 @@ msgid "Eliminar Notificación"
|
||||
msgstr "Delete Notification"
|
||||
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/PluginGrid.php:89
|
||||
#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:334
|
||||
#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:336
|
||||
#: ../../../modules/web/themes/material-blue/views/plugin/index.inc:1
|
||||
msgid "Plugins"
|
||||
msgstr "Plugins"
|
||||
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/PluginGrid.php:101
|
||||
msgid "Plugin"
|
||||
msgstr "Plugin"
|
||||
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/PluginGrid.php:118
|
||||
msgid "No disponible"
|
||||
msgstr "Unavailable"
|
||||
@@ -3973,7 +3997,7 @@ msgstr "Search for Plugin"
|
||||
#. (itstool) path: action/text
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/PluginGrid.php:149
|
||||
#: ../../../modules/web/Controllers/Helpers/Grid/PluginGrid.php:150
|
||||
#: ../../../modules/web/Controllers/PluginController.php:120
|
||||
#: ../../../modules/web/Controllers/PluginController.php:125
|
||||
#: ../../../config/actions.xml:541
|
||||
msgid "Ver Plugin"
|
||||
msgstr "View Plugin"
|
||||
@@ -4224,13 +4248,13 @@ msgstr "Edit Profile"
|
||||
msgid "Eliminar Perfil"
|
||||
msgstr "Delete Profile"
|
||||
|
||||
#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:265
|
||||
#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:267
|
||||
#: ../../../modules/web/themes/material-blue/inc/Icons.php:58
|
||||
msgid "Buscar"
|
||||
msgstr "Search"
|
||||
|
||||
#. (itstool) path: action/text
|
||||
#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:348
|
||||
#: ../../../modules/web/Controllers/Helpers/LayoutHelper.php:350
|
||||
#: ../../../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
|
||||
@@ -4282,15 +4306,15 @@ msgstr "Value created"
|
||||
msgid "Valor actualizado"
|
||||
msgstr "Value updated"
|
||||
|
||||
#: ../../../modules/web/Controllers/LoginController.php:101
|
||||
#: ../../../modules/web/Controllers/LoginController.php:119
|
||||
msgid "Finalizar sesión"
|
||||
msgstr "Logout session"
|
||||
|
||||
#: ../../../modules/web/Controllers/LoginController.php:103
|
||||
#: ../../../modules/web/Controllers/LoginController.php:121
|
||||
msgid "Tiempo inactivo"
|
||||
msgstr "Inactive time"
|
||||
|
||||
#: ../../../modules/web/Controllers/LoginController.php:104
|
||||
#: ../../../modules/web/Controllers/LoginController.php:122
|
||||
msgid "Tiempo total"
|
||||
msgstr "Total time"
|
||||
|
||||
@@ -4319,18 +4343,13 @@ msgstr "Notification created"
|
||||
msgid "Notificación actualizada"
|
||||
msgstr "Notification updated"
|
||||
|
||||
#: ../../../modules/web/Controllers/PluginController.php:181
|
||||
#: ../../../modules/web/Controllers/PluginController.php:184
|
||||
#: ../../../modules/web/Controllers/PluginController.php:188
|
||||
#: ../../../modules/web/Controllers/PluginController.php:191
|
||||
msgid "Plugin habilitado"
|
||||
msgstr "Plugin enabled"
|
||||
|
||||
#: ../../../modules/web/Controllers/PluginController.php:206
|
||||
#: ../../../modules/web/Controllers/PluginController.php:209
|
||||
msgid "Plugin deshabilitado"
|
||||
msgstr "Plugin disabled"
|
||||
|
||||
#: ../../../modules/web/Controllers/PluginController.php:231
|
||||
#: ../../../modules/web/Controllers/PluginController.php:234
|
||||
#: ../../../modules/web/Controllers/PluginController.php:238
|
||||
#: ../../../modules/web/Controllers/PluginController.php:241
|
||||
msgid "Plugin restablecido"
|
||||
msgstr "Plugin reset"
|
||||
|
||||
@@ -4357,11 +4376,11 @@ msgstr "Link deleted"
|
||||
msgid "Enlace creado"
|
||||
msgstr "Link created"
|
||||
|
||||
#: ../../../modules/web/Controllers/StatusController.php:94
|
||||
#: ../../../modules/web/Controllers/StatusController.php:93
|
||||
msgid "Versión no disponible"
|
||||
msgstr "Version unavailable"
|
||||
|
||||
#: ../../../modules/web/Controllers/StatusController.php:142
|
||||
#: ../../../modules/web/Controllers/StatusController.php:140
|
||||
msgid "Notificaciones no disponibles"
|
||||
msgstr "Notifications not available"
|
||||
|
||||
@@ -4467,7 +4486,7 @@ msgstr "Request sent"
|
||||
msgid "En breve recibirá un correo para completar la solicitud."
|
||||
msgstr "You will receive an email to complete the request shortly."
|
||||
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:169
|
||||
#: ../../../modules/web/Controllers/UserPassResetController.php:172
|
||||
#: ../../../modules/web/Forms/AuthTokenForm.php:101
|
||||
#: ../../../modules/web/Forms/UserForm.php:157
|
||||
msgid "La clave no puede estar en blanco"
|
||||
@@ -4501,7 +4520,7 @@ msgstr "View Profile"
|
||||
msgid "Preferencias actualizadas"
|
||||
msgstr "Preferences updated"
|
||||
|
||||
#: ../../../modules/web/Controllers/UserSettingsManagerController.php:89
|
||||
#: ../../../modules/web/Controllers/UserSettingsManagerController.php:92
|
||||
msgid "Preferencias"
|
||||
msgstr "Preferences"
|
||||
|
||||
|
||||
@@ -43,6 +43,10 @@ final class BootstrapController extends SimpleControllerBase
|
||||
|
||||
/**
|
||||
* Returns environment data
|
||||
*
|
||||
* @return bool
|
||||
* @throws \DI\DependencyException
|
||||
* @throws \DI\NotFoundException
|
||||
*/
|
||||
public function getEnvironmentAction()
|
||||
{
|
||||
@@ -103,6 +107,8 @@ final class BootstrapController extends SimpleControllerBase
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
* @throws \DI\DependencyException
|
||||
* @throws \DI\NotFoundException
|
||||
*/
|
||||
private function getAuthBasicAutologinEnabled()
|
||||
{
|
||||
@@ -112,6 +118,8 @@ final class BootstrapController extends SimpleControllerBase
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* @throws \DI\DependencyException
|
||||
* @throws \DI\NotFoundException
|
||||
*/
|
||||
private function getPublicKey()
|
||||
{
|
||||
|
||||
@@ -28,7 +28,9 @@ defined('APP_ROOT') || die();
|
||||
|
||||
use DI\Container;
|
||||
use Psr\Container\ContainerInterface;
|
||||
use SP\Core\Crypt\Hash;
|
||||
use SP\Core\Exceptions\FileNotFoundException;
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\DataModel\ProfileData;
|
||||
use SP\Modules\Web\Controllers\Helpers\LayoutHelper;
|
||||
use SP\Modules\Web\Controllers\Traits\WebControllerTrait;
|
||||
@@ -200,14 +202,16 @@ abstract class ControllerBase
|
||||
/**
|
||||
* Comprobar si el usuario está logado.
|
||||
*
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
* @throws \Psr\Container\NotFoundExceptionInterface
|
||||
* @param bool $requireAuthCompleted
|
||||
*
|
||||
* @throws AuthException
|
||||
* @throws \DI\DependencyException
|
||||
* @throws \DI\NotFoundException
|
||||
*/
|
||||
protected function checkLoggedIn()
|
||||
protected function checkLoggedIn($requireAuthCompleted = true)
|
||||
{
|
||||
if ($this->session->isLoggedIn()
|
||||
&& $this->session->getAuthCompleted() === true
|
||||
&& $this->session->getAuthCompleted() === $requireAuthCompleted
|
||||
) {
|
||||
$browser = $this->dic->get(Browser::class);
|
||||
|
||||
@@ -219,11 +223,37 @@ abstract class ControllerBase
|
||||
}
|
||||
}
|
||||
|
||||
$this->checkLoggedInSession($this->session, $this->request, function ($redirect) {
|
||||
$this->router->response()
|
||||
->redirect($redirect)
|
||||
->send(true);
|
||||
});
|
||||
$this->checkLoggedInSession(
|
||||
$this->session,
|
||||
$this->request,
|
||||
function ($redirect) {
|
||||
$this->router->response()
|
||||
->redirect($redirect)
|
||||
->send(true);
|
||||
},
|
||||
$requireAuthCompleted
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* prepareSignedUriOnView
|
||||
*
|
||||
* Prepares view's variables to pass in a signed URI
|
||||
*/
|
||||
final protected function prepareSignedUriOnView()
|
||||
{
|
||||
$from = $this->request->analyzeString('from');
|
||||
|
||||
if ($from) {
|
||||
try {
|
||||
$this->request->verifySignature($this->configData->getPasswordSalt());
|
||||
|
||||
$this->view->assign('from', $from);
|
||||
$this->view->assign('from_hash', Hash::signMessage($from, $this->configData->getPasswordSalt()));
|
||||
} catch (SPException $e) {
|
||||
processException($e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -191,7 +191,9 @@ final class LayoutHelper extends HelperBase
|
||||
|
||||
// Cargar los recursos de los plugins
|
||||
foreach ($this->dic->get(PluginManager::class)->getLoadedPlugins() as $plugin) {
|
||||
$base = str_replace(BASE_PATH, '', $plugin->getBase());
|
||||
$base = str_replace(APP_ROOT, '', $plugin->getBase());
|
||||
$base .= DIRECTORY_SEPARATOR . 'public';
|
||||
|
||||
$jsResources = $plugin->getJsResources();
|
||||
$cssResources = $plugin->getCssResources();
|
||||
|
||||
|
||||
@@ -41,7 +41,9 @@ final class IndexController extends ControllerBase
|
||||
*/
|
||||
public function indexAction()
|
||||
{
|
||||
if (!$this->session->isLoggedIn()) {
|
||||
if ($this->session->isLoggedIn() === false
|
||||
|| $this->session->getAuthCompleted() === false
|
||||
) {
|
||||
$this->router->response()
|
||||
->redirect('index.php?r=login');
|
||||
} else {
|
||||
|
||||
@@ -25,11 +25,10 @@
|
||||
namespace SP\Modules\Web\Controllers;
|
||||
|
||||
use SP\Core\Context\SessionContext;
|
||||
use SP\Core\Crypt\Hash;
|
||||
use SP\Core\Events\Event;
|
||||
use SP\Core\Events\EventMessage;
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\Core\SessionUtil;
|
||||
use SP\Http\Uri;
|
||||
use SP\Modules\Web\Controllers\Helpers\LayoutHelper;
|
||||
use SP\Modules\Web\Controllers\Traits\JsonTrait;
|
||||
use SP\Services\Auth\LoginService;
|
||||
@@ -54,30 +53,34 @@ final class LoginController extends ControllerBase
|
||||
try {
|
||||
$loginService = $this->dic->get(LoginService::class);
|
||||
|
||||
$from = $this->request->analyzeString('from');
|
||||
|
||||
if ($from) {
|
||||
try {
|
||||
$this->request->verifySignature($this->configData->getPasswordSalt(), 'from');
|
||||
|
||||
$loginService->setFrom($from);
|
||||
} catch (SPException $e) {
|
||||
processException($e);
|
||||
}
|
||||
}
|
||||
$from = $this->getSignedUriFromRequest();
|
||||
$loginService->setFrom($from);
|
||||
|
||||
$loginResponmse = $loginService->doLogin();
|
||||
|
||||
$forward = $this->request->getForwardedFor();
|
||||
$this->checkForwarded();
|
||||
|
||||
if ($forward !== null) {
|
||||
$this->eventDispatcher->notifyEvent('login.info',
|
||||
new Event($this, EventMessage::factory()
|
||||
->addDetail('Forwarded', $this->configData->isDemoEnabled() ? '***' : implode(',', $forward)))
|
||||
);
|
||||
}
|
||||
$redirector = function ($route) use ($from) {
|
||||
$uri = new Uri('index.php');
|
||||
$uri->addParam('r', $route);
|
||||
|
||||
return $this->returnJsonResponseData(['url' => $loginResponmse->getRedirect()]);
|
||||
if ($from !== null) {
|
||||
return $uri->addParam('from', $from)
|
||||
->getUriSigned($this->configData->getPasswordSalt());
|
||||
}
|
||||
|
||||
return $uri->getUri();
|
||||
};
|
||||
|
||||
$this->eventDispatcher->notifyEvent('login.finish',
|
||||
new Event($this,
|
||||
EventMessage::factory()
|
||||
->addData('redirect', $redirector))
|
||||
);
|
||||
|
||||
return $this->returnJsonResponseData([
|
||||
'url' => $this->session->getTrasientKey('redirect') ?: $loginResponmse->getRedirect()
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
processException($e);
|
||||
|
||||
@@ -87,12 +90,27 @@ final class LoginController extends ControllerBase
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* checkForwarded
|
||||
*/
|
||||
private function checkForwarded()
|
||||
{
|
||||
$forward = $this->request->getForwardedFor();
|
||||
|
||||
if ($forward !== null) {
|
||||
$this->eventDispatcher->notifyEvent('login.info',
|
||||
new Event($this, EventMessage::factory()
|
||||
->addDetail('Forwarded', $this->configData->isDemoEnabled() ? '***' : implode(',', $forward)))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Logout action
|
||||
*/
|
||||
public function logoutAction()
|
||||
{
|
||||
if ($this->session->isLoggedIn()) {
|
||||
if ($this->session->isLoggedIn() === true) {
|
||||
$inactiveTime = abs(round((time() - $this->session->getLastActivity()) / 60, 2));
|
||||
$totalTime = abs(round((time() - $this->session->getStartActivity()) / 60, 2));
|
||||
|
||||
@@ -125,30 +143,13 @@ final class LoginController extends ControllerBase
|
||||
*/
|
||||
public function indexAction()
|
||||
{
|
||||
if ($this->session->isLoggedIn() === true) {
|
||||
$this->router->response()
|
||||
->redirect('index.php?r=index')
|
||||
->send(true);
|
||||
}
|
||||
|
||||
$this->dic->get(LayoutHelper::class)
|
||||
->getCustomLayout('index', 'login');
|
||||
|
||||
$this->view->assign('mailEnabled', $this->configData->isMailEnabled());
|
||||
// $this->view->assign('updated', SessionFactory::getAppUpdated());
|
||||
|
||||
$from = $this->request->analyzeString('from');
|
||||
|
||||
if ($from) {
|
||||
try {
|
||||
$this->request->verifySignature($this->configData->getPasswordSalt());
|
||||
|
||||
$this->view->assign('from', $from);
|
||||
$this->view->assign('from_hash', Hash::signMessage($from, $this->configData->getPasswordSalt()));
|
||||
} catch (SPException $e) {
|
||||
processException($e);
|
||||
}
|
||||
}
|
||||
$this->prepareSignedUriOnView();
|
||||
|
||||
$this->view();
|
||||
}
|
||||
|
||||
@@ -74,6 +74,8 @@ final class PluginController extends ControllerBase
|
||||
* getSearchGrid
|
||||
*
|
||||
* @return $this
|
||||
* @throws \DI\DependencyException
|
||||
* @throws \DI\NotFoundException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
@@ -89,6 +91,9 @@ final class PluginController extends ControllerBase
|
||||
/**
|
||||
* Search action
|
||||
*
|
||||
* @return bool
|
||||
* @throws \DI\DependencyException
|
||||
* @throws \DI\NotFoundException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
@@ -138,6 +143,8 @@ final class PluginController extends ControllerBase
|
||||
*
|
||||
* @param $pluginId
|
||||
*
|
||||
* @throws \DI\DependencyException
|
||||
* @throws \DI\NotFoundException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
* @throws \SP\Repositories\NoSuchItemException
|
||||
|
||||
@@ -126,6 +126,8 @@ final class ResourceController extends SimpleControllerBase
|
||||
|
||||
/**
|
||||
* @throws SPException
|
||||
* @throws \DI\DependencyException
|
||||
* @throws \DI\NotFoundException
|
||||
*/
|
||||
protected function initialize()
|
||||
{
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
namespace SP\Modules\Web\Controllers;
|
||||
|
||||
use GuzzleHttp\Client;
|
||||
use GuzzleHttp\Exception\ClientException;
|
||||
use GuzzleHttp\Exception\GuzzleException;
|
||||
use SP\Core\AppInfoInterface;
|
||||
use SP\Core\Exceptions\CheckException;
|
||||
use SP\Http\JsonResponse;
|
||||
@@ -47,7 +47,6 @@ final class StatusController extends SimpleControllerBase
|
||||
* @return bool
|
||||
* @throws \DI\DependencyException
|
||||
* @throws \DI\NotFoundException
|
||||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||
*/
|
||||
public function checkReleaseAction()
|
||||
{
|
||||
@@ -92,7 +91,7 @@ final class StatusController extends SimpleControllerBase
|
||||
}
|
||||
|
||||
return $this->returnJsonResponse(JsonResponse::JSON_ERROR, __u('Versión no disponible'));
|
||||
} catch (ClientException $e) {
|
||||
} catch (GuzzleException $e) {
|
||||
processException($e);
|
||||
|
||||
return $this->returnJsonResponseException($e);
|
||||
@@ -107,7 +106,6 @@ final class StatusController extends SimpleControllerBase
|
||||
* @return bool
|
||||
* @throws \DI\DependencyException
|
||||
* @throws \DI\NotFoundException
|
||||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||
*/
|
||||
public function checkNoticesAction()
|
||||
{
|
||||
@@ -140,7 +138,7 @@ final class StatusController extends SimpleControllerBase
|
||||
}
|
||||
|
||||
return $this->returnJsonResponse(JsonResponse::JSON_ERROR, __u('Notificaciones no disponibles'));
|
||||
} catch (ClientException $e) {
|
||||
} catch (GuzzleException $e) {
|
||||
processException($e);
|
||||
|
||||
return $this->returnJsonResponseException($e);
|
||||
|
||||
@@ -32,6 +32,7 @@ use SP\Core\Acl\Acl;
|
||||
use SP\Core\Context\ContextInterface;
|
||||
use SP\Core\Context\SessionContext;
|
||||
use SP\Core\Events\EventDispatcher;
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\Core\PhpExtensionChecker;
|
||||
use SP\Core\UI\Theme;
|
||||
use SP\Http\Request;
|
||||
@@ -90,6 +91,37 @@ trait WebControllerTrait
|
||||
* @var PhpExtensionChecker
|
||||
*/
|
||||
protected $extensionChecker;
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $setup = false;
|
||||
|
||||
/**
|
||||
* Returns the signed URI component after validating its signature.
|
||||
* This component is used for deep linking
|
||||
*
|
||||
* @return null|string
|
||||
*/
|
||||
final protected function getSignedUriFromRequest()
|
||||
{
|
||||
if (!$this->setup) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$from = $this->request->analyzeString('from');
|
||||
|
||||
if ($from) {
|
||||
try {
|
||||
$this->request->verifySignature($this->configData->getPasswordSalt(), 'from');
|
||||
} catch (SPException $e) {
|
||||
processException($e);
|
||||
|
||||
$from = null;
|
||||
}
|
||||
}
|
||||
|
||||
return $from;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ContainerInterface $dic
|
||||
@@ -107,5 +139,7 @@ trait WebControllerTrait
|
||||
$this->request = $dic->get(Request::class);
|
||||
$this->acl = $dic->get(Acl::class);
|
||||
$this->extensionChecker = $dic->get(PhpExtensionChecker::class);
|
||||
|
||||
$this->setup = true;
|
||||
}
|
||||
}
|
||||
@@ -139,6 +139,9 @@ final class UserPassResetController extends ControllerBase
|
||||
|
||||
/**
|
||||
* @param null $hash
|
||||
*
|
||||
* @throws \DI\DependencyException
|
||||
* @throws \DI\NotFoundException
|
||||
*/
|
||||
public function resetAction($hash = null)
|
||||
{
|
||||
|
||||
@@ -26,17 +26,20 @@ namespace SP\Modules\Web\Controllers;
|
||||
|
||||
use SP\Core\Acl\Acl;
|
||||
use SP\Core\Events\Event;
|
||||
use SP\Core\Events\EventDispatcherInterface;
|
||||
use SP\Core\Language;
|
||||
use SP\Modules\Web\Controllers\Helpers\TabsHelper;
|
||||
use SP\Mvc\Controller\ExtensibleTabControllerInterface;
|
||||
use SP\Mvc\View\Components\DataTab;
|
||||
use SP\Mvc\View\Components\SelectItemAdapter;
|
||||
use SP\Mvc\View\Template;
|
||||
|
||||
/**
|
||||
* Class UserSettingsManagerController
|
||||
*
|
||||
* @package web\Controllers
|
||||
*/
|
||||
final class UserSettingsManagerController extends ControllerBase
|
||||
final class UserSettingsManagerController extends ControllerBase implements ExtensibleTabControllerInterface
|
||||
{
|
||||
/**
|
||||
* @var TabsHelper
|
||||
@@ -89,6 +92,38 @@ final class UserSettingsManagerController extends ControllerBase
|
||||
return new DataTab(__('Preferencias'), $template);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param DataTab $tab
|
||||
*/
|
||||
public function addTab(DataTab $tab)
|
||||
{
|
||||
$this->tabsHelper->addTab($tab);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Template
|
||||
*/
|
||||
public function getView(): Template
|
||||
{
|
||||
return $this->view;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function displayView()
|
||||
{
|
||||
$this->view();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return EventDispatcherInterface
|
||||
*/
|
||||
public function getEventDispatcher(): EventDispatcherInterface
|
||||
{
|
||||
return $this->eventDispatcher;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
* @throws \Psr\Container\NotFoundExceptionInterface
|
||||
|
||||
@@ -183,7 +183,10 @@ final class Init extends ModuleBase
|
||||
}
|
||||
|
||||
// Checks if the database is set up
|
||||
if (!DatabaseUtil::checkDatabaseExist($this->container->get(Database::class)->getDbHandler(), $this->configData->getDbName())) {
|
||||
if (!DatabaseUtil::checkDatabaseExist(
|
||||
$this->container->get(Database::class)->getDbHandler(),
|
||||
$this->configData->getDbName())
|
||||
) {
|
||||
$this->router->response()
|
||||
->redirect('index.php?r=error/databaseError')
|
||||
->send();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "nuxsmin/syspass",
|
||||
"name": "syspass/syspass",
|
||||
"description": "PHP web based Password Manager for business and personal use.",
|
||||
"homepage": "https://syspass.org",
|
||||
"minimum-stability": "stable",
|
||||
@@ -32,7 +32,8 @@
|
||||
"ext-pdo": "*",
|
||||
"ext-dom": "*",
|
||||
"ext-gd": "*",
|
||||
"ext-json": "*"
|
||||
"ext-json": "*",
|
||||
"ext-gettext": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^6",
|
||||
|
||||
@@ -40,6 +40,7 @@ use SP\Core\PhpExtensionChecker;
|
||||
use SP\Http\Request;
|
||||
use SP\Modules\Api\Init as InitApi;
|
||||
use SP\Modules\Web\Init as InitWeb;
|
||||
use SP\Plugin\PluginManager;
|
||||
use SP\Services\Api\ApiRequest;
|
||||
use SP\Services\Api\JsonRpcResponse;
|
||||
use SP\Services\Upgrade\UpgradeConfigService;
|
||||
@@ -202,9 +203,14 @@ final class Bootstrap
|
||||
|
||||
$controllerClass = 'SP\\Modules\\' . ucfirst(APP_MODULE) . '\\Controllers\\' . ucfirst($controller) . 'Controller';
|
||||
|
||||
$this->initializePluginClasses();
|
||||
|
||||
if (!method_exists($controllerClass, $method)) {
|
||||
logger($controllerClass . '::' . $method);
|
||||
|
||||
/** @var Response $response */
|
||||
$response->code(404);
|
||||
|
||||
throw new RuntimeException($oops);
|
||||
}
|
||||
|
||||
@@ -223,6 +229,11 @@ final class Bootstrap
|
||||
} catch (\Exception $e) {
|
||||
processException($e);
|
||||
|
||||
/** @var Response $response */
|
||||
if ($response->status()->getCode() !== 404) {
|
||||
$response->code(503);
|
||||
}
|
||||
|
||||
return __($e->getMessage());
|
||||
}
|
||||
}
|
||||
@@ -410,6 +421,18 @@ final class Bootstrap
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* initializePluginClasses
|
||||
*/
|
||||
protected function initializePluginClasses()
|
||||
{
|
||||
$loader = require APP_ROOT . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
|
||||
|
||||
foreach (PluginManager::getPlugins() as $name => $base) {
|
||||
$loader->addPsr4($base['namespace'], $base['dir']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ContainerInterface
|
||||
*/
|
||||
|
||||
@@ -188,4 +188,21 @@ interface ContextInterface
|
||||
* @param string $password
|
||||
*/
|
||||
public function setTemporaryMasterPass(string $password);
|
||||
|
||||
/**
|
||||
* @param string $pluginName
|
||||
* @param string $key
|
||||
* @param mixed $value
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function setPluginKey(string $pluginName, string $key, $value);
|
||||
|
||||
/**
|
||||
* @param string $pluginName
|
||||
* @param string $key
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getPluginKey(string $pluginName, string $key);
|
||||
}
|
||||
@@ -39,7 +39,7 @@ use SP\Services\User\UserLoginResponse;
|
||||
final class SessionContext extends ContextBase
|
||||
{
|
||||
const MAX_SID_TIME = 120;
|
||||
|
||||
|
||||
private static $isReset = false;
|
||||
private static $isLocked = false;
|
||||
|
||||
@@ -549,4 +549,39 @@ final class SessionContext extends ContextBase
|
||||
|
||||
$this->setContextReference($_SESSION);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $ctxKeyName
|
||||
* @param string $key
|
||||
* @param mixed $value
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function setPluginKey(string $ctxKeyName, string $key, $value)
|
||||
{
|
||||
/** @var ContextCollection $ctxKey */
|
||||
$ctxKey = $this->getContextKey($ctxKeyName, new ContextCollection());
|
||||
|
||||
$this->setContextKey($ctxKeyName, $ctxKey->set($key, $value));
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $ctxKeyName
|
||||
* @param string $key
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getPluginKey(string $ctxKeyName, string $key)
|
||||
{
|
||||
/** @var ContextCollection $ctxKey */
|
||||
$ctxKey = $this->getContextKey($ctxKeyName);
|
||||
|
||||
if ($ctxKey !== null) {
|
||||
return $ctxKey->get($key);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -269,4 +269,37 @@ final class StatelessContext extends ContextBase
|
||||
{
|
||||
$this->setTrasientKey('_tempmasterpass', $password);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $pluginName
|
||||
* @param string $key
|
||||
* @param mixed $value
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function setPluginKey(string $pluginName, string $key, $value)
|
||||
{
|
||||
$ctxKey = $this->getContextKey('plugins');
|
||||
|
||||
$ctxKey[$pluginName][$key] = $value;
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $pluginName
|
||||
* @param string $key
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getPluginKey(string $pluginName, string $key)
|
||||
{
|
||||
$ctxKey = $this->getContextKey('plugins');
|
||||
|
||||
if (isset($ctxKey[$pluginName][$key])) {
|
||||
return $ctxKey[$pluginName][$key];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -25,6 +25,7 @@
|
||||
namespace SP\Core\Events;
|
||||
|
||||
use InvalidArgumentException;
|
||||
use SP\Core\Exceptions\InvalidClassException;
|
||||
|
||||
/**
|
||||
* Class Event
|
||||
@@ -61,10 +62,24 @@ final class Event
|
||||
}
|
||||
|
||||
/**
|
||||
* @param null $type
|
||||
*
|
||||
* @return object
|
||||
* @throws InvalidClassException
|
||||
*/
|
||||
public function getSource()
|
||||
public function getSource($type = null)
|
||||
{
|
||||
if ($type !== null
|
||||
&& ($source = get_class($this->source)) !== $type
|
||||
&& !is_subclass_of($this->source, $type)
|
||||
) {
|
||||
throw new InvalidClassException(
|
||||
'Source type mismatch',
|
||||
InvalidClassException::ERROR,
|
||||
sprintf('Source: %s - Expected: %s', $source, $type)
|
||||
);
|
||||
}
|
||||
|
||||
return $this->source;
|
||||
}
|
||||
|
||||
|
||||
@@ -111,12 +111,16 @@ abstract class EventDispatcherBase implements EventDispatcherInterface
|
||||
public function notifyEvent($eventType, Event $event)
|
||||
{
|
||||
foreach ($this->observers as $observer) {
|
||||
$events = $observer->getEventsString();
|
||||
if (method_exists($observer, 'getEventsString')) {
|
||||
$events = $observer->getEventsString();
|
||||
|
||||
if (!empty($events)
|
||||
&& ($events === '*' || preg_match('/' . $events . '/i', $eventType))
|
||||
) {
|
||||
// FIXME: update receivers Event
|
||||
if (!empty($events)
|
||||
&& ($events === '*' || preg_match('/' . $events . '/i', $eventType))
|
||||
) {
|
||||
// FIXME: update receivers Event
|
||||
$observer->updateEvent($eventType, $event);
|
||||
}
|
||||
} else {
|
||||
$observer->updateEvent($eventType, $event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -220,7 +220,7 @@ final class Minify
|
||||
$this->addFile($filename, $minify);
|
||||
}
|
||||
} else {
|
||||
throw new \RuntimeException('Invalid string format');
|
||||
$this->addFile($files, $minify);
|
||||
}
|
||||
|
||||
return $this;
|
||||
|
||||
@@ -374,8 +374,11 @@ final class Request
|
||||
public function verifySignature(string $key, string $param = null)
|
||||
{
|
||||
$result = false;
|
||||
$hash = $this->params->get('h');
|
||||
|
||||
if (($hash = $this->params->get('h')) !== null) {
|
||||
if ($hash !== null) {
|
||||
// Strips out the hash param from the URI to get the
|
||||
// route which will be checked against the computed HMAC
|
||||
if ($param === null) {
|
||||
$uri = str_replace('&h=' . $hash, '', $this->request->uri());
|
||||
$uri = substr($uri, strpos($uri, '?') + 1);
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
namespace SP\Mvc\Controller;
|
||||
|
||||
use SP\Core\Context\ContextInterface;
|
||||
use SP\Core\Context\SessionContext;
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\Http\Json;
|
||||
use SP\Http\JsonResponse;
|
||||
@@ -53,13 +54,19 @@ trait ControllerTrait
|
||||
/**
|
||||
* Comprobar si la sesión está activa
|
||||
*
|
||||
* @param ContextInterface $context
|
||||
* @param Request $request
|
||||
* @param \Closure $onRedirect
|
||||
* @param SessionContext $context
|
||||
* @param Request $request
|
||||
* @param \Closure $onRedirect
|
||||
* @param bool $requireAuthCompleted
|
||||
*/
|
||||
protected function checkLoggedInSession(ContextInterface $context, Request $request, \Closure $onRedirect)
|
||||
protected function checkLoggedInSession(SessionContext $context,
|
||||
Request $request,
|
||||
\Closure $onRedirect,
|
||||
$requireAuthCompleted = true)
|
||||
{
|
||||
if (!$context->isLoggedIn()) {
|
||||
if ($context->isLoggedIn() === false
|
||||
|| $context->getAuthCompleted() !== $requireAuthCompleted
|
||||
) {
|
||||
if ($request->isJson()) {
|
||||
$jsonResponse = new JsonResponse(__u('La sesión no se ha iniciado o ha caducado'));
|
||||
$jsonResponse->setStatus(10);
|
||||
@@ -69,6 +76,9 @@ trait ControllerTrait
|
||||
Util::logout();
|
||||
} else {
|
||||
try {
|
||||
// Analyzes if there is any direct route within the URL
|
||||
// then it computes the route HMAC to build a signed URI
|
||||
// which would be used during logging in
|
||||
$route = $request->analyzeString('r');
|
||||
$hash = $request->analyzeString('h');
|
||||
|
||||
|
||||
52
lib/SP/Mvc/Controller/ExtensibleControllerInterface.php
Normal file
52
lib/SP/Mvc/Controller/ExtensibleControllerInterface.php
Normal file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link https://syspass.org
|
||||
* @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
*
|
||||
* sysPass is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* sysPass is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\Mvc\Controller;
|
||||
|
||||
|
||||
use SP\Core\Events\EventDispatcherInterface;
|
||||
use SP\Mvc\View\Template;
|
||||
|
||||
/**
|
||||
* Interface ExtensibleController
|
||||
*
|
||||
* @package SP\Mvc\Controller
|
||||
*/
|
||||
interface ExtensibleControllerInterface
|
||||
{
|
||||
/**
|
||||
* @return Template
|
||||
*/
|
||||
public function getView(): Template;
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function displayView();
|
||||
|
||||
/**
|
||||
* @return EventDispatcherInterface
|
||||
*/
|
||||
public function getEventDispatcher(): EventDispatcherInterface;
|
||||
}
|
||||
40
lib/SP/Mvc/Controller/ExtensibleTabControllerInterface.php
Normal file
40
lib/SP/Mvc/Controller/ExtensibleTabControllerInterface.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link https://syspass.org
|
||||
* @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
*
|
||||
* sysPass is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* sysPass is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\Mvc\Controller;
|
||||
|
||||
use SP\Mvc\View\Components\DataTab;
|
||||
|
||||
/**
|
||||
* Interface ExtensibleTabController
|
||||
*
|
||||
* @package SP\Mvc\Controller
|
||||
*/
|
||||
interface ExtensibleTabControllerInterface extends ExtensibleControllerInterface
|
||||
{
|
||||
/**
|
||||
* @param DataTab $tab
|
||||
*/
|
||||
public function addTab(DataTab $tab);
|
||||
}
|
||||
@@ -112,10 +112,14 @@ final class Template
|
||||
*/
|
||||
private function checkTemplate($template, $base = null)
|
||||
{
|
||||
if (null === $base && null === $this->base) {
|
||||
$base = null !== $base ? $base : (null !== $this->base ? $this->base : null);
|
||||
|
||||
if ($base === null) {
|
||||
$templateFile = $this->theme->getViewsPath() . DIRECTORY_SEPARATOR . $template . self::TEMPLATE_EXTENSION;
|
||||
} elseif (is_dir($base)) {
|
||||
$templateFile = $base . DIRECTORY_SEPARATOR . $template . self::TEMPLATE_EXTENSION;
|
||||
} else {
|
||||
$templateFile = $this->theme->getViewsPath() . DIRECTORY_SEPARATOR . (null === $base ? $this->base : $base) . DIRECTORY_SEPARATOR . $template . self::TEMPLATE_EXTENSION;
|
||||
$templateFile = $this->theme->getViewsPath() . DIRECTORY_SEPARATOR . $base . DIRECTORY_SEPARATOR . $template . self::TEMPLATE_EXTENSION;
|
||||
}
|
||||
|
||||
if (!is_readable($templateFile)) {
|
||||
@@ -338,7 +342,7 @@ final class Template
|
||||
public function render()
|
||||
{
|
||||
if (count($this->templates) === 0) {
|
||||
throw new FileNotFoundException(__u('La plantilla no contiene archivos'));
|
||||
throw new FileNotFoundException(__('La plantilla no contiene archivos'));
|
||||
}
|
||||
|
||||
extract($this->vars, EXTR_SKIP);
|
||||
|
||||
@@ -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.
|
||||
@@ -24,6 +24,9 @@
|
||||
|
||||
namespace SP\Plugin;
|
||||
|
||||
use Psr\Container\ContainerInterface;
|
||||
use SP\Services\Plugin\PluginService;
|
||||
|
||||
/**
|
||||
* Class PluginBase
|
||||
*
|
||||
@@ -51,13 +54,20 @@ abstract class PluginBase implements PluginInterface
|
||||
* @var int
|
||||
*/
|
||||
protected $enabled;
|
||||
/**
|
||||
* @var PluginService
|
||||
*/
|
||||
private $pluginService;
|
||||
|
||||
/**
|
||||
* PluginBase constructor.
|
||||
*
|
||||
* @param ContainerInterface $dic
|
||||
*/
|
||||
public final function __construct()
|
||||
public final function __construct(ContainerInterface $dic)
|
||||
{
|
||||
$this->init();
|
||||
$this->pluginService = $dic->get(PluginService::class);
|
||||
$this->init($dic);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,14 +86,6 @@ abstract class PluginBase implements PluginInterface
|
||||
$this->type = $type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getBase()
|
||||
{
|
||||
return $this->base;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
@@ -100,14 +102,6 @@ abstract class PluginBase implements PluginInterface
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $data
|
||||
*/
|
||||
public function setData($data)
|
||||
{
|
||||
$this->data = $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
@@ -124,6 +118,19 @@ abstract class PluginBase implements PluginInterface
|
||||
$this->enabled = (int)$enabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
* @throws \SP\Repositories\NoSuchItemException
|
||||
*/
|
||||
final public function saveData()
|
||||
{
|
||||
$pluginData = $this->pluginService->getByName($this->getName());
|
||||
$pluginData->setData(serialize($this->data));
|
||||
|
||||
return $this->pluginService->update($pluginData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Establecer las locales del plugin
|
||||
*/
|
||||
@@ -135,4 +142,12 @@ abstract class PluginBase implements PluginInterface
|
||||
bindtextdomain($name, $locales);
|
||||
bind_textdomain_codeset($name, 'UTF-8');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getBase()
|
||||
{
|
||||
return $this->base;
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
namespace SP\Plugin;
|
||||
|
||||
use Psr\Container\ContainerInterface;
|
||||
use SP\Core\Events\Event;
|
||||
use SplObserver;
|
||||
|
||||
@@ -36,8 +37,10 @@ interface PluginEventReceiver extends SplObserver
|
||||
{
|
||||
/**
|
||||
* Inicialización del observador
|
||||
*
|
||||
* @param ContainerInterface $dic
|
||||
*/
|
||||
public function init();
|
||||
public function init(ContainerInterface $dic);
|
||||
|
||||
/**
|
||||
* Evento de actualización
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
|
||||
namespace SP\Plugin;
|
||||
|
||||
use SP\DataModel\PluginData;
|
||||
|
||||
/**
|
||||
* Interface PluginInterface
|
||||
*
|
||||
@@ -86,9 +88,9 @@ interface PluginInterface extends PluginEventReceiver
|
||||
public function getData();
|
||||
|
||||
/**
|
||||
* @param mixed $data
|
||||
* @param PluginData $pluginData
|
||||
*/
|
||||
public function setData($data);
|
||||
public function onLoadData(PluginData $pluginData);
|
||||
|
||||
/**
|
||||
* @return int
|
||||
|
||||
@@ -25,12 +25,16 @@
|
||||
namespace SP\Plugin;
|
||||
|
||||
use ReflectionClass;
|
||||
use SP\Bootstrap;
|
||||
use SP\Core\Context\ContextInterface;
|
||||
use SP\Core\Events\Event;
|
||||
use SP\Core\Events\EventDispatcher;
|
||||
use SP\Core\Events\EventMessage;
|
||||
use SP\Core\Exceptions\ConstraintException;
|
||||
use SP\Core\Exceptions\QueryException;
|
||||
use SP\DataModel\PluginData;
|
||||
use SP\Repositories\NoSuchItemException;
|
||||
use SP\Services\Install\Installer;
|
||||
use SP\Services\Plugin\PluginService;
|
||||
|
||||
/**
|
||||
@@ -40,6 +44,10 @@ use SP\Services\Plugin\PluginService;
|
||||
*/
|
||||
final class PluginManager
|
||||
{
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private static $pluginsAvailable;
|
||||
/**
|
||||
* @var array Plugins habilitados
|
||||
*/
|
||||
@@ -77,6 +85,39 @@ final class PluginManager
|
||||
$this->pluginService = $pluginService;
|
||||
$this->context = $context;
|
||||
$this->eventDispatcher = $eventDispatcher;
|
||||
|
||||
self::$pluginsAvailable = self::getPlugins();
|
||||
}
|
||||
|
||||
/**
|
||||
* Devuelve la lista de Plugins disponibles em el directorio
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getPlugins()
|
||||
{
|
||||
$dir = dir(PLUGINS_PATH);
|
||||
$plugins = [];
|
||||
|
||||
if ($dir) {
|
||||
while (false !== ($entry = $dir->read())) {
|
||||
$pluginDir = PLUGINS_PATH . DIRECTORY_SEPARATOR . $entry;
|
||||
$pluginFile = $pluginDir . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'Plugin.php';
|
||||
|
||||
if (strpos($entry, '.') === false
|
||||
&& is_dir($pluginDir)
|
||||
&& file_exists($pluginFile)
|
||||
) {
|
||||
logger(sprintf('Plugin found: %s', $pluginDir));
|
||||
|
||||
$plugins[$entry] = require $pluginDir . DIRECTORY_SEPARATOR . 'base.php';
|
||||
}
|
||||
}
|
||||
|
||||
$dir->close();
|
||||
}
|
||||
|
||||
return $plugins;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,35 +129,200 @@ final class PluginManager
|
||||
*/
|
||||
public function getPluginInfo($name)
|
||||
{
|
||||
$name = ucfirst($name);
|
||||
if (isset(self::$pluginsAvailable[$name])) {
|
||||
return $this->loadPluginClass(
|
||||
$name,
|
||||
self::$pluginsAvailable[$name]['namespace']
|
||||
);
|
||||
}
|
||||
|
||||
$pluginClass = 'Plugins\\' . $name . '\\' . $name . 'Plugin';
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cargar un plugin
|
||||
*
|
||||
* @param string $name Nombre del plugin
|
||||
* @param string $namespace
|
||||
*
|
||||
* @return PluginInterface
|
||||
*/
|
||||
public function loadPluginClass(string $name, string $namespace)
|
||||
{
|
||||
$name = ucfirst($name);
|
||||
|
||||
if (isset($this->loadedPlugins[$name])) {
|
||||
return $this->loadedPlugins[$name];
|
||||
}
|
||||
|
||||
try {
|
||||
$reflectionClass = new \ReflectionClass($pluginClass);
|
||||
$class = $namespace . 'Plugin';
|
||||
$reflectionClass = new ReflectionClass($class);
|
||||
|
||||
/** @var PluginBase $plugin */
|
||||
$plugin = $reflectionClass->newInstance();
|
||||
/** @var PluginInterface $plugin */
|
||||
$plugin = $reflectionClass->newInstance(Bootstrap::getContainer());
|
||||
|
||||
$this->loadedPlugins[$name] = $plugin;
|
||||
// Do not load plugin's data if not compatible.
|
||||
// Just return the plugin instance before disabling it
|
||||
if (self::checkCompatibility($plugin) === false) {
|
||||
$this->eventDispatcher->notifyEvent('plugin.load.error',
|
||||
new Event($this, EventMessage::factory()
|
||||
->addDescription(sprintf(__('Versión de plugin no compatible (%s)'), implode('.', $plugin->getVersion()))))
|
||||
);
|
||||
|
||||
return $plugin;
|
||||
} catch (\ReflectionException $e) {
|
||||
$this->disabledPlugins[] = $name;
|
||||
|
||||
return $plugin;
|
||||
}
|
||||
|
||||
$pluginData = $this->pluginService->getByName($name);
|
||||
|
||||
if ($pluginData->getEnabled() === 1) {
|
||||
$plugin->onLoadData($pluginData);
|
||||
|
||||
return $plugin;
|
||||
} else {
|
||||
$this->disabledPlugins[] = $name;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
processException($e);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('exception',
|
||||
new Event($e, EventMessage::factory()
|
||||
->addDescription(sprintf(__('No es posible cargar el plugin "%s"'), $name)))
|
||||
->addDescription(sprintf(__('No es posible cargar el plugin "%s"'), $name))
|
||||
->addDescription($e->getMessage())
|
||||
->addDetail(__u('Plugin'), $name))
|
||||
);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param PluginInterface $plugin
|
||||
*
|
||||
* @return bool
|
||||
* @throws ConstraintException
|
||||
* @throws NoSuchItemException
|
||||
* @throws QueryException
|
||||
*/
|
||||
public function checkCompatibility(PluginInterface $plugin)
|
||||
{
|
||||
$pluginVersion = implode('.', $plugin->getCompatibleVersion());
|
||||
$appVersion = implode('.', array_slice(Installer::VERSION, 0, 2));
|
||||
|
||||
if (version_compare($pluginVersion, $appVersion) === -1) {
|
||||
$this->pluginService->toggleEnabledByName($plugin->getName(), false);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('edit.plugin.disable',
|
||||
new Event($this, EventMessage::factory()
|
||||
->addDetail(__u('Plugin deshabilitado'), $plugin->getName()))
|
||||
);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the available and enabled plugins
|
||||
*
|
||||
* @throws ConstraintException
|
||||
* @throws QueryException
|
||||
* @throws \SP\Core\Exceptions\SPException
|
||||
*/
|
||||
public function loadPlugins()
|
||||
{
|
||||
$available = array_keys(self::$pluginsAvailable);
|
||||
$processed = [];
|
||||
|
||||
// Process registered plugins in the database
|
||||
foreach ($this->pluginService->getAll() as $plugin) {
|
||||
$in = in_array($plugin->getName(), $available, true);
|
||||
|
||||
if ($in === true) {
|
||||
if ($plugin->getEnabled() === 1) {
|
||||
$this->load($plugin->getName());
|
||||
}
|
||||
|
||||
if ($plugin->getAvailable() === 0) {
|
||||
$this->pluginService->toggleAvailable($plugin->getId(), true);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('edit.plugin.available',
|
||||
new Event($this, EventMessage::factory()
|
||||
->addDetail(__u('Plugin disponible'), $plugin->getName()))
|
||||
);
|
||||
|
||||
$this->load($plugin->getName());
|
||||
}
|
||||
} else {
|
||||
$this->pluginService->toggleAvailable($plugin->getId(), false);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('edit.plugin.unavailable',
|
||||
new Event($this, EventMessage::factory()
|
||||
->addDetail(__u('Plugin no disponible'), $plugin->getName()))
|
||||
);
|
||||
}
|
||||
|
||||
$processed[] = $plugin->getName();
|
||||
}
|
||||
|
||||
// Search for available plugins and not registered in the database
|
||||
foreach (array_diff($available, $processed) as $plugin) {
|
||||
$this->registerPlugin($plugin);
|
||||
|
||||
$this->load($plugin);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $pluginName
|
||||
*/
|
||||
private function load(string $pluginName)
|
||||
{
|
||||
$plugin = $this->loadPluginClass(
|
||||
$pluginName,
|
||||
self::$pluginsAvailable[$pluginName]['namespace']
|
||||
);
|
||||
|
||||
if ($plugin !== null) {
|
||||
logger(sprintf('Plugin loaded: %s', $pluginName));
|
||||
|
||||
$this->eventDispatcher->notifyEvent('plugin.load',
|
||||
new Event($this, EventMessage::factory()
|
||||
->addDetail(__u('Plugin cargado'), $pluginName))
|
||||
);
|
||||
|
||||
$this->loadedPlugins[$pluginName] = $plugin;
|
||||
|
||||
$this->eventDispatcher->attach($plugin);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
*
|
||||
* @throws ConstraintException
|
||||
* @throws QueryException
|
||||
*/
|
||||
private function registerPlugin(string $name)
|
||||
{
|
||||
$pluginData = new PluginData();
|
||||
$pluginData->setName($name);
|
||||
$pluginData->setEnabled(false);
|
||||
|
||||
$this->pluginService->create($pluginData);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('create.plugin',
|
||||
new Event($this, EventMessage::factory()
|
||||
->addDescription(__u('Nuevo Plugin'))
|
||||
->addDetail(__u('Nombre'), $name)
|
||||
));
|
||||
|
||||
$this->disabledPlugins[] = $name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Comprobar disponibilidad de plugins habilitados
|
||||
*
|
||||
@@ -127,6 +333,11 @@ final class PluginManager
|
||||
foreach ($this->getEnabledPlugins() as $plugin) {
|
||||
if (!in_array($plugin, $this->loadedPlugins)) {
|
||||
$this->pluginService->toggleAvailableByName($plugin, false);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('edit.plugin.unavailable',
|
||||
new Event($this, EventMessage::factory()
|
||||
->addDetail(__u('Plugin deshabilitado'), $plugin->getName()))
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -153,113 +364,6 @@ final class PluginManager
|
||||
return $this->enabledPlugins;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cargar los Plugins disponibles
|
||||
*/
|
||||
public function loadPlugins()
|
||||
{
|
||||
$classLoader = new \SplClassLoader('Plugins', PLUGINS_PATH);
|
||||
$classLoader->register();
|
||||
|
||||
foreach ($this->getPlugins() as $name) {
|
||||
if (($plugin = $this->loadPlugin($name)) !== null) {
|
||||
logger('Plugin loaded: ' . $name);
|
||||
|
||||
$this->eventDispatcher->attach($plugin);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Devuelve la lista de Plugins disponibles em el directorio
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getPlugins()
|
||||
{
|
||||
$pluginDirH = opendir(PLUGINS_PATH);
|
||||
$plugins = [];
|
||||
|
||||
if ($pluginDirH) {
|
||||
while (false !== ($entry = readdir($pluginDirH))) {
|
||||
$pluginDir = PLUGINS_PATH . DIRECTORY_SEPARATOR . $entry;
|
||||
|
||||
if (strpos($entry, '.') === false
|
||||
&& is_dir($pluginDir)
|
||||
&& file_exists($pluginDir . DIRECTORY_SEPARATOR . $entry . 'Plugin.php')
|
||||
) {
|
||||
$plugins[] = $entry;
|
||||
}
|
||||
}
|
||||
|
||||
closedir($pluginDirH);
|
||||
}
|
||||
|
||||
return $plugins;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cargar un plugin
|
||||
*
|
||||
* @param string $name Nombre del plugin
|
||||
*
|
||||
* @return PluginInterface
|
||||
*/
|
||||
public function loadPlugin($name)
|
||||
{
|
||||
$name = ucfirst($name);
|
||||
|
||||
if (isset($this->loadedPlugins[$name])) {
|
||||
return $this->loadedPlugins[$name];
|
||||
}
|
||||
|
||||
try {
|
||||
$pluginClass = 'Plugins\\' . $name . '\\' . $name . 'Plugin';
|
||||
|
||||
$reflectionClass = new ReflectionClass($pluginClass);
|
||||
|
||||
/** @var PluginInterface $plugin */
|
||||
$plugin = $reflectionClass->newInstance();
|
||||
|
||||
try {
|
||||
$pluginData = $this->pluginService->getByName($plugin);
|
||||
|
||||
if ($pluginData->getEnabled() === 1) {
|
||||
if (!empty($pluginData->getData())) {
|
||||
$pluginData->setData(unserialize($pluginData->getData()));
|
||||
}
|
||||
|
||||
return $plugin;
|
||||
} else {
|
||||
$this->disabledPlugins[] = $name;
|
||||
}
|
||||
} catch (NoSuchItemException $noSuchItemException) {
|
||||
$pluginData = new PluginData();
|
||||
$pluginData->setName($name);
|
||||
$pluginData->setEnabled(0);
|
||||
|
||||
$this->pluginService->create($pluginData);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('create.plugin',
|
||||
new Event($this, EventMessage::factory()
|
||||
->addDescription(__u('Nuevo Plugin'))
|
||||
->addDetail(__u('Nombre'), $name)
|
||||
));
|
||||
|
||||
$this->disabledPlugins[] = $name;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
processException($e);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('exception',
|
||||
new Event($e, EventMessage::factory()
|
||||
->addDescription(sprintf(__('No es posible cargar el plugin "%s"'), $name)))
|
||||
);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Devolver los plugins cargados
|
||||
*
|
||||
|
||||
@@ -66,6 +66,7 @@ final class DatabaseLogHandler extends Provider implements EventReceiver
|
||||
* </p>
|
||||
*
|
||||
* @return void
|
||||
* @throws \SP\Core\Exceptions\InvalidClassException
|
||||
* @since 5.1.0
|
||||
*/
|
||||
public function update(SplSubject $subject)
|
||||
@@ -78,6 +79,8 @@ final class DatabaseLogHandler extends Provider implements EventReceiver
|
||||
*
|
||||
* @param string $eventType Nombre del evento
|
||||
* @param Event $event Objeto del evento
|
||||
*
|
||||
* @throws \SP\Core\Exceptions\InvalidClassException
|
||||
*/
|
||||
public function updateEvent($eventType, Event $event)
|
||||
{
|
||||
|
||||
@@ -56,6 +56,7 @@ interface LogInterface
|
||||
'show.authToken',
|
||||
'clear.eventlog',
|
||||
'clear.track',
|
||||
'unlock.track'
|
||||
'unlock.track',
|
||||
'plugin.load.error'
|
||||
];
|
||||
}
|
||||
@@ -386,7 +386,8 @@ final class LoginService extends Service
|
||||
}
|
||||
|
||||
$this->eventDispatcher->notifyEvent('login.session.load',
|
||||
new Event($this, EventMessage::factory()->addDetail(__u('Usuario'), $userLoginResponse->getLogin()))
|
||||
new Event($this, EventMessage::factory()
|
||||
->addDetail(__u('Usuario'), $userLoginResponse->getLogin()))
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -54,36 +54,22 @@ final class ErrorUtil
|
||||
* @param \SP\Mvc\View\Template $view
|
||||
* @param \Exception $e
|
||||
* @param string $replace Template replacement
|
||||
* @param bool $render
|
||||
*/
|
||||
public static function showExceptionInView(Template $view, \Exception $e, $replace = null)
|
||||
{
|
||||
switch (get_class($e)) {
|
||||
case UpdatedMasterPassException::class:
|
||||
self::showErrorInView($view, self::ERR_UPDATE_MPASS, $replace);
|
||||
break;
|
||||
case UnauthorizedPageException::class:
|
||||
self::showErrorInView($view, self::ERR_PAGE_NO_PERMISSION, $replace);
|
||||
break;
|
||||
case AccountPermissionException::class:
|
||||
self::showErrorInView($view, self::ERR_ACCOUNT_NO_PERMISSION, $replace);
|
||||
break;
|
||||
default;
|
||||
self::showErrorInView($view, self::ERR_EXCEPTION, $replace);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Establecer la plantilla de error con el código indicado.
|
||||
*
|
||||
* @param \SP\Mvc\View\Template $view
|
||||
* @param int $type int con el tipo de error
|
||||
* @param string $replace Template replacement
|
||||
*/
|
||||
public static function showErrorInView(Template $view, $type, $replace = null)
|
||||
public static function showExceptionInView(Template $view,
|
||||
\Exception $e,
|
||||
$replace = null,
|
||||
$render = true)
|
||||
{
|
||||
if ($replace === null) {
|
||||
$view->resetTemplates();
|
||||
$view->resetContentTemplates();
|
||||
|
||||
if ($view->hashContentTemplates()) {
|
||||
$view->resetContentTemplates();
|
||||
$view->addContentTemplate('error', Template::PARTIALS_DIR);
|
||||
} else {
|
||||
$view->addTemplate('error', Template::PARTIALS_DIR);
|
||||
}
|
||||
} else {
|
||||
if ($view->hashContentTemplates()) {
|
||||
$view->removeContentTemplate($replace);
|
||||
@@ -94,6 +80,30 @@ final class ErrorUtil
|
||||
}
|
||||
}
|
||||
|
||||
switch (get_class($e)) {
|
||||
case UpdatedMasterPassException::class:
|
||||
self::showErrorInView($view, self::ERR_UPDATE_MPASS, $render);
|
||||
break;
|
||||
case UnauthorizedPageException::class:
|
||||
self::showErrorInView($view, self::ERR_PAGE_NO_PERMISSION, $render);
|
||||
break;
|
||||
case AccountPermissionException::class:
|
||||
self::showErrorInView($view, self::ERR_ACCOUNT_NO_PERMISSION, $render);
|
||||
break;
|
||||
default;
|
||||
self::showErrorInView($view, self::ERR_EXCEPTION, $render);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Establecer la plantilla de error con el código indicado.
|
||||
*
|
||||
* @param \SP\Mvc\View\Template $view
|
||||
* @param int $type int con el tipo de error
|
||||
* @param bool $render
|
||||
*/
|
||||
public static function showErrorInView(Template $view, $type, $render = true)
|
||||
{
|
||||
$error = self::getErrorTypes($type);
|
||||
|
||||
$view->append('errors',
|
||||
@@ -103,15 +113,15 @@ final class ErrorUtil
|
||||
'hint' => $error['hint']
|
||||
]);
|
||||
|
||||
try {
|
||||
echo $view->render();
|
||||
} catch (FileNotFoundException $e) {
|
||||
processException($e);
|
||||
if ($render) {
|
||||
try {
|
||||
echo $view->render();
|
||||
} catch (FileNotFoundException $e) {
|
||||
processException($e);
|
||||
|
||||
echo $e->getMessage();
|
||||
echo $e->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
die();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -209,38 +209,45 @@ final class Util
|
||||
/**
|
||||
* Cast an object to another class, keeping the properties, but changing the methods
|
||||
*
|
||||
* @param string $dstClass Class name
|
||||
* @param string $dstClass Destination class name
|
||||
* @param string|object $serialized
|
||||
* @param string $srcClass Nombre de la clase serializada
|
||||
* @param string $srcClass Old class name for removing from private methods
|
||||
*
|
||||
* @return mixed
|
||||
* @link http://blog.jasny.net/articles/a-dark-corner-of-php-class-casting/
|
||||
*/
|
||||
public static function unserialize($dstClass, $serialized, $srcClass = null)
|
||||
{
|
||||
if (!is_object($serialized)) {
|
||||
preg_match('/^O:\d+:"(?P<class>[^"]++)"/', $serialized, $matches);
|
||||
$match = preg_match_all('/O:\d+:"(?P<class>[^"]++)"/', $serialized, $matches);
|
||||
|
||||
if (class_exists($matches['class'])
|
||||
&& $matches['class'] === $dstClass
|
||||
) {
|
||||
return unserialize($serialized);
|
||||
$process = false;
|
||||
|
||||
if ($match) {
|
||||
foreach ($matches['class'] as $class) {
|
||||
if (!class_exists($class)
|
||||
|| $class !== $dstClass
|
||||
) {
|
||||
$process = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ($process === false) {
|
||||
return unserialize($serialized);
|
||||
}
|
||||
}
|
||||
|
||||
// Si se indica la clase origen, se elimina el nombre
|
||||
// de la clase en los métodos privados
|
||||
if ($srcClass !== null) {
|
||||
$serializedOut = preg_replace_callback(
|
||||
'/:\d+:"\x00' . preg_quote($srcClass, '/') . '\x00(\w+)"/',
|
||||
function ($matches) {
|
||||
return ':' . strlen($matches[1]) . ':"' . $matches[1] . '"';
|
||||
},
|
||||
$serialized);
|
||||
// Serialized data needs to be processed to change the class name
|
||||
if ($process === true) {
|
||||
// If source class is set, it will try to clean up the class name from private methods
|
||||
if ($srcClass !== null) {
|
||||
$serialized = preg_replace_callback(
|
||||
'/:\d+:"\x00' . preg_quote($srcClass, '/') . '\x00(\w+)"/',
|
||||
function ($matches) {
|
||||
return ':' . strlen($matches[1]) . ':"' . $matches[1] . '"';
|
||||
},
|
||||
$serialized);
|
||||
}
|
||||
|
||||
return self::castToClass($serializedOut, $dstClass);
|
||||
}
|
||||
|
||||
if ($matches['class'] !== $dstClass) {
|
||||
return self::castToClass($serialized, $dstClass);
|
||||
}
|
||||
}
|
||||
@@ -251,20 +258,18 @@ final class Util
|
||||
/**
|
||||
* Cast an object to another class
|
||||
*
|
||||
* @param $object
|
||||
* @param $cast
|
||||
* @param $class
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public static function castToClass($object, $class)
|
||||
public static function castToClass($cast, $class)
|
||||
{
|
||||
// should avoid '__PHP_Incomplete_Class'?
|
||||
// TODO: should avoid '__PHP_Incomplete_Class'?
|
||||
|
||||
if (is_object($object)) {
|
||||
return unserialize(preg_replace('/^O:\d+:"[^"]++"/', 'O:' . strlen($class) . ':"' . $class . '"', serialize($object)));
|
||||
}
|
||||
$cast = is_object($cast) ? serialize($cast) : $cast;
|
||||
|
||||
return unserialize(preg_replace('/^O:\d+:"[^"]++"/', 'O:' . strlen($class) . ':"' . $class . '"', $object));
|
||||
return unserialize(preg_replace('/O:\d+:"[^"]++"/', 'O:' . strlen($class) . ':"' . $class . '"', $cast));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1351,11 +1351,28 @@ sysPass.Actions = function (log) {
|
||||
toggle: function ($obj) {
|
||||
log.info("plugin:enable");
|
||||
|
||||
tabs.save($obj, function () {
|
||||
// Recargar para cargar/descargar el plugin
|
||||
setTimeout(function () {
|
||||
sysPassApp.util.redirect("index.php");
|
||||
}, 2000);
|
||||
tabs.state.update($obj);
|
||||
|
||||
const itemId = $obj.data("item-id");
|
||||
|
||||
const opts = sysPassApp.requests.getRequestOpts();
|
||||
opts.url = ajaxUrl.entrypoint;
|
||||
opts.method = "get";
|
||||
opts.data = {
|
||||
r: $obj.data("action-route") + "/" + itemId,
|
||||
sk: sysPassApp.sk.get(),
|
||||
isAjax: 1
|
||||
};
|
||||
|
||||
sysPassApp.requests.getActionCall(opts, function (json) {
|
||||
sysPassApp.msg.out(json);
|
||||
|
||||
if (json.status === 0) {
|
||||
// Recargar para cargar/descargar el plugin
|
||||
setTimeout(function () {
|
||||
sysPassApp.util.redirect("index.php");
|
||||
}, 2000);
|
||||
}
|
||||
});
|
||||
},
|
||||
reset: function ($obj) {
|
||||
|
||||
23
public/js/app-actions.min.js
vendored
23
public/js/app-actions.min.js
vendored
@@ -42,14 +42,15 @@ var b=sysPassApp.requests.getRequestOpts();b.url=e.entrypoint+"/?r="+a.data("act
|
||||
d.data=a.serialize());sysPassApp.requests.getActionCall(d,function(b){sysPassApp.msg.out(b);0===b.status&&f({r:a.data("action-next")+"/"+c})})},c='<div id="alert"><p id="alert-text">'+sysPassApp.config.LANG[48]+"</p></div>";mdlDialog().show({text:c,negative:{title:sysPassApp.config.LANG[44],onClick:function(a){a.preventDefault();b(0)}},positive:{title:sysPassApp.config.LANG[43],onClick:function(a){a.preventDefault();b(1)}}})},delete:function(a){d.info("link:delete");var b='<div id="alert"><p id="alert-text">'+
|
||||
sysPassApp.config.LANG[12]+"</p></div>";mdlDialog().show({text:b,negative:{title:sysPassApp.config.LANG[44],onClick:function(a){a.preventDefault();sysPassApp.msg.error(sysPassApp.config.LANG[44])}},positive:{title:sysPassApp.config.LANG[43],onClick:function(b){b.preventDefault();b=a.data("item-id");var c=sysPassApp.requests.getRequestOpts();c.url=e.entrypoint+"?r="+a.data("action-route")+"/"+b;sysPassApp.requests.getActionCall(c,function(b){sysPassApp.msg.out(b);0===b.status&&f({r:a.data("action-next")+
|
||||
"/"+a.data("account-id")})})}}})},refresh:function(a){d.info("link:refresh");g.state.update(a);var b=a.data("item-id"),c=sysPassApp.requests.getRequestOpts();c.url=e.entrypoint;c.method="get";c.data={r:a.data("action-route")+"/"+b,sk:sysPassApp.sk.get(),isAjax:1};sysPassApp.requests.getActionCall(c,function(b){sysPassApp.msg.out(b);0===b.status&&((b=a.data("action-next"))?f({r:b+"/"+a.data("account-id")}):f({r:g.state.tab.route,tabIndex:g.state.tab.index}))})}},eventlog:{clear:function(a){var b='<div id="alert"><p id="alert-text">'+
|
||||
sysPassApp.config.LANG[20]+"</p></div>";mdlDialog().show({text:b,negative:{title:sysPassApp.config.LANG[44],onClick:function(a){a.preventDefault();sysPassApp.msg.error(sysPassApp.config.LANG[44])}},positive:{title:sysPassApp.config.LANG[43],onClick:function(b){b.preventDefault();g.save(a)}}})}},ajaxUrl:e,plugin:{toggle:function(a){d.info("plugin:enable");g.save(a,function(){setTimeout(function(){sysPassApp.util.redirect("index.php")},2E3)})},reset:function(a){d.info("plugin:reset");var b='<div id="alert"><p id="alert-text">'+
|
||||
sysPassApp.config.LANG[58]+"</p></div>";mdlDialog().show({text:b,negative:{title:sysPassApp.config.LANG[44],onClick:function(a){a.preventDefault();sysPassApp.msg.error(sysPassApp.config.LANG[44])}},positive:{title:sysPassApp.config.LANG[43],onClick:function(b){b.preventDefault();g.save(a)}}})},search:function(a){d.info("plugin:search");m.search(a)},show:function(a){d.info("plugin:show");t.show(a)},save:function(a){d.info("plugin:save");var b=sysPassApp.requests.getRequestOpts();b.url=e.entrypoint+
|
||||
"?r="+a.data("route");b.data=a.serialize();sysPassApp.requests.getActionCall(b,function(b){sysPassApp.msg.out(b);0===b.status&&(f({r:a.data("action-next")}),$.magnificPopup.close())})},nav:function(a){d.info("plugin:nav");m.nav(a)}},notification:{check:function(a){d.info("notification:check");var b=sysPassApp.requests.getRequestOpts();b.url=e.entrypoint;b.method="get";b.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:sysPassApp.sk.get(),isAjax:1};sysPassApp.requests.getActionCall(b,function(b){sysPassApp.msg.out(b);
|
||||
0===b.status&&f({r:a.data("action-next")});sysPassApp.sk.set(b.csrf)})},search:function(a){d.info("notification:search");m.search(a)},show:function(a){d.info("notification:show");t.show(a)},save:function(a){d.info("notification:save");var b=sysPassApp.requests.getRequestOpts();b.url=e.entrypoint+"?r="+a.data("route");b.data=a.serialize();sysPassApp.requests.getActionCall(b,function(b){sysPassApp.msg.out(b);0===b.status&&(f({r:a.data("action-next")}),$.magnificPopup.close())})},delete:function(a){d.info("notification:delete");
|
||||
m.delete(a,function(b){var c=sysPassApp.requests.getRequestOpts();c.url=e.entrypoint;c.method="get";c.data={r:a.data("action-route")+(0===b.length?"/"+a.data("item-id"):""),items:b,sk:sysPassApp.sk.get(),isAjax:1};sysPassApp.requests.getActionCall(c,function(b){sysPassApp.msg.out(b);f({r:a.data("action-next")})})})},getActive:function(){d.info("notification:getActive");var a=sysPassApp.requests.getRequestOpts();a.url=e.entrypoint;a.method="get";a.data={r:"items/notifications",sk:sysPassApp.sk.get(),
|
||||
isAjax:1};sysPassApp.requests.getActionCall(a,function(a){return a})},nav:function(a){d.info("eventlog:nav");m.nav(a)}},wiki:{show:function(a){d.info("wiki:show");var b=sysPassApp.requests.getRequestOpts();b.url=e.entrypoint;b.method="get";b.data={pageName:a.data("pagename"),actionId:a.data("action-id"),sk:sysPassApp.sk.get(),isAjax:1};sysPassApp.requests.getActionCall(b,function(a){0!==a.status?sysPassApp.msg.out(a):h(a.data.html)})}},items:{get:function(a){d.info("items:get");var b=a[0].selectize;
|
||||
b.clearOptions();b.load(function(c){var d=sysPassApp.requests.getRequestOpts();d.url=e.entrypoint;d.method="get";d.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:a.data("sk")};sysPassApp.requests.getActionCall(d,function(d){c(d.data);b.setValue(a.data("selected-id"),!0);sysPassApp.triggers.updateFormHash()})})},update:function(a){d.info("items:update");var b=$("#"+a.data("item-dst"))[0].selectize,c=b.getValue();b.clearOptions();b.load(function(d){var f=sysPassApp.requests.getRequestOpts();
|
||||
f.url=e.entrypoint;f.method="get";f.data={r:a.data("item-route"),sk:sysPassApp.sk.get()};sysPassApp.requests.getActionCall(f,function(a){d(a);b.setValue(c,!0)})})}},ldap:{check:function(a){d.info("ldap:check");var b=$(a.data("src")),c=sysPassApp.requests.getRequestOpts();c.url=e.entrypoint+"?r="+a.data("action-route");c.data=b.serialize()+"&sk="+sysPassApp.sk.get();sysPassApp.requests.getActionCall(c,function(a){sysPassApp.msg.out(a);0===a.status&&void 0!==a.data.template&&void 0!==a.data.items&&
|
||||
h(a.data.template,{open:function(){var b=$("#ldap-results").find(".list-wrap").empty();a.data.items.forEach(function(a){b.append(sysPassApp.theme.html.getList(a.items,a.icon))})}})})},import:function(a){d.info("ldap:import");var b='<div id="alert"><p id="alert-text">'+sysPassApp.config.LANG[57]+"</p></div>";mdlDialog().show({text:b,negative:{title:sysPassApp.config.LANG[44],onClick:function(a){a.preventDefault();sysPassApp.msg.error(sysPassApp.config.LANG[44])}},positive:{title:sysPassApp.config.LANG[43],
|
||||
onClick:function(b){b=$(a.data("src"));var c=sysPassApp.requests.getRequestOpts();c.url=e.entrypoint+"?r="+a.data("action-route");c.data=b.serialize()+"&sk="+sysPassApp.sk.get();sysPassApp.requests.getActionCall(c,function(a){sysPassApp.msg.out(a)})}}})}},track:{unlock:function(a){d.info("track:unlock");var b=sysPassApp.requests.getRequestOpts();b.url=e.entrypoint;b.method="get";b.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:sysPassApp.sk.get(),isAjax:1};sysPassApp.requests.getActionCall(b,
|
||||
function(b){sysPassApp.msg.out(b);g.refresh(a)})},clear:function(a){d.info("track:clear");var b='<div id="alert"><p id="alert-text">'+sysPassApp.config.LANG[71]+"</p></div>";mdlDialog().show({text:b,negative:{title:sysPassApp.config.LANG[44],onClick:function(a){a.preventDefault();sysPassApp.msg.error(sysPassApp.config.LANG[44])}},positive:{title:sysPassApp.config.LANG[43],onClick:function(b){b.preventDefault();g.save(a)}}})}}}};
|
||||
sysPassApp.config.LANG[20]+"</p></div>";mdlDialog().show({text:b,negative:{title:sysPassApp.config.LANG[44],onClick:function(a){a.preventDefault();sysPassApp.msg.error(sysPassApp.config.LANG[44])}},positive:{title:sysPassApp.config.LANG[43],onClick:function(b){b.preventDefault();g.save(a)}}})}},ajaxUrl:e,plugin:{toggle:function(a){d.info("plugin:enable");g.state.update(a);var b=a.data("item-id"),c=sysPassApp.requests.getRequestOpts();c.url=e.entrypoint;c.method="get";c.data={r:a.data("action-route")+
|
||||
"/"+b,sk:sysPassApp.sk.get(),isAjax:1};sysPassApp.requests.getActionCall(c,function(a){sysPassApp.msg.out(a);0===a.status&&setTimeout(function(){sysPassApp.util.redirect("index.php")},2E3)})},reset:function(a){d.info("plugin:reset");var b='<div id="alert"><p id="alert-text">'+sysPassApp.config.LANG[58]+"</p></div>";mdlDialog().show({text:b,negative:{title:sysPassApp.config.LANG[44],onClick:function(a){a.preventDefault();sysPassApp.msg.error(sysPassApp.config.LANG[44])}},positive:{title:sysPassApp.config.LANG[43],
|
||||
onClick:function(b){b.preventDefault();g.save(a)}}})},search:function(a){d.info("plugin:search");m.search(a)},show:function(a){d.info("plugin:show");t.show(a)},save:function(a){d.info("plugin:save");var b=sysPassApp.requests.getRequestOpts();b.url=e.entrypoint+"?r="+a.data("route");b.data=a.serialize();sysPassApp.requests.getActionCall(b,function(b){sysPassApp.msg.out(b);0===b.status&&(f({r:a.data("action-next")}),$.magnificPopup.close())})},nav:function(a){d.info("plugin:nav");m.nav(a)}},notification:{check:function(a){d.info("notification:check");
|
||||
var b=sysPassApp.requests.getRequestOpts();b.url=e.entrypoint;b.method="get";b.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:sysPassApp.sk.get(),isAjax:1};sysPassApp.requests.getActionCall(b,function(b){sysPassApp.msg.out(b);0===b.status&&f({r:a.data("action-next")});sysPassApp.sk.set(b.csrf)})},search:function(a){d.info("notification:search");m.search(a)},show:function(a){d.info("notification:show");t.show(a)},save:function(a){d.info("notification:save");var b=sysPassApp.requests.getRequestOpts();
|
||||
b.url=e.entrypoint+"?r="+a.data("route");b.data=a.serialize();sysPassApp.requests.getActionCall(b,function(b){sysPassApp.msg.out(b);0===b.status&&(f({r:a.data("action-next")}),$.magnificPopup.close())})},delete:function(a){d.info("notification:delete");m.delete(a,function(b){var c=sysPassApp.requests.getRequestOpts();c.url=e.entrypoint;c.method="get";c.data={r:a.data("action-route")+(0===b.length?"/"+a.data("item-id"):""),items:b,sk:sysPassApp.sk.get(),isAjax:1};sysPassApp.requests.getActionCall(c,
|
||||
function(b){sysPassApp.msg.out(b);f({r:a.data("action-next")})})})},getActive:function(){d.info("notification:getActive");var a=sysPassApp.requests.getRequestOpts();a.url=e.entrypoint;a.method="get";a.data={r:"items/notifications",sk:sysPassApp.sk.get(),isAjax:1};sysPassApp.requests.getActionCall(a,function(a){return a})},nav:function(a){d.info("eventlog:nav");m.nav(a)}},wiki:{show:function(a){d.info("wiki:show");var b=sysPassApp.requests.getRequestOpts();b.url=e.entrypoint;b.method="get";b.data=
|
||||
{pageName:a.data("pagename"),actionId:a.data("action-id"),sk:sysPassApp.sk.get(),isAjax:1};sysPassApp.requests.getActionCall(b,function(a){0!==a.status?sysPassApp.msg.out(a):h(a.data.html)})}},items:{get:function(a){d.info("items:get");var b=a[0].selectize;b.clearOptions();b.load(function(c){var d=sysPassApp.requests.getRequestOpts();d.url=e.entrypoint;d.method="get";d.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:a.data("sk")};sysPassApp.requests.getActionCall(d,function(d){c(d.data);b.setValue(a.data("selected-id"),
|
||||
!0);sysPassApp.triggers.updateFormHash()})})},update:function(a){d.info("items:update");var b=$("#"+a.data("item-dst"))[0].selectize,c=b.getValue();b.clearOptions();b.load(function(d){var f=sysPassApp.requests.getRequestOpts();f.url=e.entrypoint;f.method="get";f.data={r:a.data("item-route"),sk:sysPassApp.sk.get()};sysPassApp.requests.getActionCall(f,function(a){d(a);b.setValue(c,!0)})})}},ldap:{check:function(a){d.info("ldap:check");var b=$(a.data("src")),c=sysPassApp.requests.getRequestOpts();c.url=
|
||||
e.entrypoint+"?r="+a.data("action-route");c.data=b.serialize()+"&sk="+sysPassApp.sk.get();sysPassApp.requests.getActionCall(c,function(a){sysPassApp.msg.out(a);0===a.status&&void 0!==a.data.template&&void 0!==a.data.items&&h(a.data.template,{open:function(){var b=$("#ldap-results").find(".list-wrap").empty();a.data.items.forEach(function(a){b.append(sysPassApp.theme.html.getList(a.items,a.icon))})}})})},import:function(a){d.info("ldap:import");var b='<div id="alert"><p id="alert-text">'+sysPassApp.config.LANG[57]+
|
||||
"</p></div>";mdlDialog().show({text:b,negative:{title:sysPassApp.config.LANG[44],onClick:function(a){a.preventDefault();sysPassApp.msg.error(sysPassApp.config.LANG[44])}},positive:{title:sysPassApp.config.LANG[43],onClick:function(b){b=$(a.data("src"));var c=sysPassApp.requests.getRequestOpts();c.url=e.entrypoint+"?r="+a.data("action-route");c.data=b.serialize()+"&sk="+sysPassApp.sk.get();sysPassApp.requests.getActionCall(c,function(a){sysPassApp.msg.out(a)})}}})}},track:{unlock:function(a){d.info("track:unlock");
|
||||
var b=sysPassApp.requests.getRequestOpts();b.url=e.entrypoint;b.method="get";b.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:sysPassApp.sk.get(),isAjax:1};sysPassApp.requests.getActionCall(b,function(b){sysPassApp.msg.out(b);g.refresh(a)})},clear:function(a){d.info("track:clear");var b='<div id="alert"><p id="alert-text">'+sysPassApp.config.LANG[71]+"</p></div>";mdlDialog().show({text:b,negative:{title:sysPassApp.config.LANG[44],onClick:function(a){a.preventDefault();sysPassApp.msg.error(sysPassApp.config.LANG[44])}},
|
||||
positive:{title:sysPassApp.config.LANG[43],onClick:function(b){b.preventDefault();g.save(a)}}})}}}};
|
||||
|
||||
@@ -31,8 +31,8 @@ sysPass.Main = function () {
|
||||
log.info("checkPluginUpdates");
|
||||
|
||||
for (const plugin in oPublic.plugins) {
|
||||
if (typeof oPublic.plugins.plugin.checkVersion === "function") {
|
||||
oPublic.plugins.plugin.checkVersion().then(function (json) {
|
||||
if (typeof oPublic.plugins[plugin].checkVersion === "function") {
|
||||
oPublic.plugins[plugin].checkVersion().then(function (json) {
|
||||
if (json.status === 0 && json.data.plugin !== undefined) {
|
||||
msg.info(String.format(oPublic.config.LANG[67], json.data.plugin, json.data.remoteVersion));
|
||||
}
|
||||
@@ -52,11 +52,13 @@ sysPass.Main = function () {
|
||||
for (let i = 0; i < oPublic.config.PLUGINS.length; i++) {
|
||||
const plugin = oPublic.config.PLUGINS[i];
|
||||
|
||||
if (typeof sysPass.Plugin[plugin] === "function") {
|
||||
plugins.plugin = sysPass.Plugin[plugin]();
|
||||
if (typeof sysPass.Plugins[plugin] === "function") {
|
||||
plugins[plugin] = sysPass.Plugins[plugin](oPublic);
|
||||
}
|
||||
}
|
||||
|
||||
log.info(plugins);
|
||||
|
||||
return plugins;
|
||||
};
|
||||
|
||||
|
||||
4
public/js/app-main.min.js
vendored
4
public/js/app-main.min.js
vendored
@@ -1,4 +1,4 @@
|
||||
sysPass.Main=function(){var k=function(){d.info("checkPluginUpdates");for(var a in b.plugins)"function"===typeof b.plugins.plugin.checkVersion&&b.plugins.plugin.checkVersion().then(function(a){0===a.status&&void 0!==a.data.plugin&&e.info(String.format(b.config.LANG[67],a.data.plugin,a.data.remoteVersion))})},l=function(){d.info("bindPassEncrypt");$("body").on("blur",":input[type=password]",function(a){a=$(this);if(!a.hasClass("passwordfield__no-pki"))try{g(a)}catch(c){d.error(c),e.error(c)}}).on("keypress",
|
||||
sysPass.Main=function(){var k=function(){d.info("checkPluginUpdates");for(var a in b.plugins)"function"===typeof b.plugins[a].checkVersion&&b.plugins[a].checkVersion().then(function(a){0===a.status&&void 0!==a.data.plugin&&e.info(String.format(b.config.LANG[67],a.data.plugin,a.data.remoteVersion))})},l=function(){d.info("bindPassEncrypt");$("body").on("blur",":input[type=password]",function(a){a=$(this);if(!a.hasClass("passwordfield__no-pki"))try{g(a)}catch(c){d.error(c),e.error(c)}}).on("keypress",
|
||||
":input[type=password]",function(a){if(13===a.keyCode){a.preventDefault();a=$(this);try{g(a)}catch(c){d.error(c),e.error(c)}a.closest("form").submit()}})},m=function(){d.info("initializeClipboard");if(clipboard.isSupported())$("body").on("click",".clip-pass-button",function(){var a=sysPassApp.actions.account.copyPass($(this)).done(function(a){if(0!==a.status)return e.out(a),!1;h.set(a.csrf)});!1!==a&&clipboard.copy(a.responseJSON.data.accpass).then(function(){e.ok(b.config.LANG[45])},function(a){e.error(b.config.LANG[46])})}).on("click",
|
||||
".dialog-clip-button",function(){var a=$(this.dataset.clipboardTarget);clipboard.copy(a.text().replace(/\r?\n|\r/g)).then(function(){$(".dialog-text").removeClass("dialog-clip-copy");a.addClass("dialog-clip-copy")},function(a){e.error(b.config.LANG[46])})}).on("click",".clip-pass-icon",function(){clipboard.copy(sysPass.Util.decodeEntities($(this.dataset.clipboardTarget).val())).then(function(){e.ok(b.config.LANG[45])},function(a){e.error(b.config.LANG[46])})}).on("click",".clip-pass-field",function(){clipboard.copy(sysPass.Util.decodeEntities(document.getElementById(this.dataset.clipboardTarget).dataset.pass)).then(function(){e.ok(b.config.LANG[45])},
|
||||
function(a){e.error(b.config.LANG[46])})});else d.warn(b.config.LANG[65])},g=function(a){d.info("encryptFormValue");var c=a.val();if(""!==c&&parseInt(a.attr("data-length"))!==c.length){if(c.length>b.config.PKI.MAX_SIZE)throw a.val(""),"Data length too big for encrypting";c=b.config.PKI.CRYPTO.encrypt(c);a.val(c);a.attr("data-length",c.length)}},p=function(){d.info("checkLogout");return"login/logout"===n("r")?(e.sticky(b.config.LANG[61],function(){b.util.redirect("index.php?r=login")}),!0):!1},h={current:"",
|
||||
@@ -9,4 +9,4 @@ case 100:this.ok(b);this.sticky(b);break;case 101:this.error(b);this.sticky(b);b
|
||||
c=sysPass.Config();c.setAppRoot(window.location.protocol+"//"+window.location.host+function(){for(var b="",c=1;c<=a.length-2;c++)b+="/"+a[c];return b}());var f=b.requests.getRequestOpts();f.url="/index.php?r=bootstrap/getEnvironment";f.method="get";f.useLoading=!1;f.data={isAjax:1};return b.requests.getActionCall(f,function(a){void 0!==a.data&&(c.setLang(a.data.lang),c.setPkiKey(a.data.pki_key),c.setPkiSize(a.data.pki_max_size),c.setCheckUpdates(a.data.check_updates),c.setCheckNotices(a.data.check_notices),
|
||||
c.setTimezone(a.data.timezone),c.setLocale(a.data.locale),c.setDebugEnabled(a.data.debug),c.setFileMaxSize(a.data.max_file_size),c.setFileAccountAllowedExts(a.data.files_allowed_exts),c.setFileImportAllowedExts(a.data.import_allowed_exts),c.setCookiesEnabled(a.data.cookies_enabled),c.setPlugins(a.data.plugins),c.setLoggedIn(a.data.loggedin),c.setAuthBasicAutologinEnabled(a.data.authbasic_autologin),c.initialize(),b.config=c.getConfig())}).fail(function(){e.error("Error while getting sysPass config<br/>Please try again or check web server logs")})},
|
||||
b={config:sysPass.Config().getConfig(),actions:sysPass.Actions(d),triggers:sysPass.Triggers(d),util:sysPass.Util(d),theme:{},plugins:{},sk:h,msg:e,log:d,encryptFormValue:g},n=function(a){for(var b=[],d,e=window.location.href.slice(window.location.href.indexOf("?")+1).split("&"),g=0;g<e.length;g++)d=e[g].split("="),b.push(d[0]),b[d[0]]=d[1];return void 0!==a&&void 0!==b[a]?b[a]:b};return function(){d.info("init");"function"===typeof sysPass.Theme&&(b.theme=sysPass.Theme(d));b.requests=sysPass.Requests(b);
|
||||
r().then(function(){if(!p()&&(b.config.PKI.AVAILABLE&&l(),!1===b.config.BROWSER.COOKIES_ENABLED&&e.sticky(b.config.LANG[64]),m(),q(),0<b.config.PLUGINS.length)){d.info(b.config.PLUGINS);d.info("initPlugins");for(var a={},c=0;c<b.config.PLUGINS.length;c++){var f=b.config.PLUGINS[c];"function"===typeof sysPass.Plugin[f]&&(a.plugin=sysPass.Plugin[f]())}b.plugins=a;!0===b.config.AUTH.LOGGEDIN&&!0===b.config.STATUS.CHECK_UPDATES&&k()}Object.freeze(b)});return b}()};
|
||||
r().then(function(){if(!p()&&(b.config.PKI.AVAILABLE&&l(),!1===b.config.BROWSER.COOKIES_ENABLED&&e.sticky(b.config.LANG[64]),m(),q(),0<b.config.PLUGINS.length)){d.info(b.config.PLUGINS);d.info("initPlugins");for(var a={},c=0;c<b.config.PLUGINS.length;c++){var f=b.config.PLUGINS[c];"function"===typeof sysPass.Plugins[f]&&(a[f]=sysPass.Plugins[f](b))}d.info(a);b.plugins=a;!0===b.config.AUTH.LOGGEDIN&&!0===b.config.STATUS.CHECK_UPDATES&&k()}Object.freeze(b)});return b}()};
|
||||
|
||||
@@ -113,8 +113,8 @@ sysPass.Triggers = function (log) {
|
||||
|
||||
const plugin = $obj.data("plugin");
|
||||
|
||||
if (plugin !== undefined && sysPassApp.plugins.plugin !== undefined) {
|
||||
actions = sysPassApp.plugins.plugin;
|
||||
if (plugin !== undefined && sysPassApp.plugins[plugin] !== undefined) {
|
||||
actions = sysPassApp.plugins[plugin];
|
||||
} else {
|
||||
actions = sysPassApp.actions;
|
||||
}
|
||||
@@ -145,8 +145,8 @@ sysPass.Triggers = function (log) {
|
||||
const plugin = $obj.data("plugin");
|
||||
let actions;
|
||||
|
||||
if (plugin !== undefined && sysPassApp.plugins.plugin !== undefined) {
|
||||
actions = sysPassApp.plugins.plugin;
|
||||
if (plugin !== undefined && sysPassApp.plugins[plugin] !== undefined) {
|
||||
actions = sysPassApp.plugins[plugin];
|
||||
} else {
|
||||
actions = sysPassApp.actions;
|
||||
}
|
||||
|
||||
28
public/js/app-triggers.min.js
vendored
28
public/js/app-triggers.min.js
vendored
@@ -1,19 +1,19 @@
|
||||
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(c,e,d){c instanceof String&&(c=String(c));for(var f=c.length,a=0;a<f;a++){var b=c[a];if(e.call(d,b,a,c))return{i:a,v:b}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(c,e,d){c!=Array.prototype&&c!=Object.prototype&&(c[e]=d.value)};
|
||||
$jscomp.getGlobal=function(c){return"undefined"!=typeof window&&window===c?c:"undefined"!=typeof global&&null!=global?global:c};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(c,e,d,f){if(e){d=$jscomp.global;c=c.split(".");for(f=0;f<c.length-1;f++){var a=c[f];a in d||(d[a]={});d=d[a]}c=c[c.length-1];f=d[c];e=e(f);e!=f&&null!=e&&$jscomp.defineProperty(d,c,{configurable:!0,writable:!0,value:e})}};
|
||||
$jscomp.polyfill("Array.prototype.find",function(c){return c?c:function(c,d){return $jscomp.findInternal(this,c,d).v}},"es6","es3");
|
||||
sysPass.Triggers=function(c){var e=function(a){var b={valueField:"id",labelField:"name",searchField:["name"],onInitialize:function(){var a=$(this.$wrapper[0]),b=$(this.$input[0]).siblings(".btn-add-select");1===b.length&&a.append(b)}};a.find(".select-box").each(function(a){var c=$(this);a={};!0===c.data("create")&&(a.create=!0);b.plugins=c.hasClass("select-box-deselect")?{clear_selection:{title:sysPassApp.config.LANG[51]}}:{};if(c.data("onchange")){var g=c.data("onchange").split("/");b.onChange=function(a){if(0<
|
||||
a)if(2===g.length)sysPassApp.actions[g[0]][g[1]](c);else sysPassApp.actions[g[0]](c)}}c.selectize($.extend(a,b))});a.find("#allowed_exts").selectize({create:function(a){return{value:a.toUpperCase(),text:a.toUpperCase()}},createFilter:/^[a-z0-9]{1,4}$/i,plugins:["remove_button"]});a.find("#wikifilter").selectize({create:!0,createFilter:/^[a-z0-9:._-]+$/i,plugins:["remove_button"]});a.find(".select-items-tag").selectize({create:function(a){return{value:a.toLowerCase(),text:a.toLowerCase()}},createFilter:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,
|
||||
plugins:["remove_button"]})},d={main:function(a){c.info("views:main");clipboard.isSupported()||sysPassApp.msg.info(sysPassApp.config.LANG[65]);$(".btn-menu").click(function(){var a=$(this);"1"===a.attr("data-history-reset")&&sysPassApp.requests.history.reset();sysPassApp.actions.doAction({r:a.data("route")},a.data("view"))});if(0===a.data("upgraded"))sysPassApp.actions.doAction({r:"account/index"},"search");else{a=$("#content");var b=a.data("page");d.common(a);if(""!==b&&"function"===typeof d[b])d[b]()}!0===
|
||||
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(c,f,e){c instanceof String&&(c=String(c));for(var g=c.length,a=0;a<g;a++){var b=c[a];if(f.call(e,b,a,c))return{i:a,v:b}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(c,f,e){c!=Array.prototype&&c!=Object.prototype&&(c[f]=e.value)};
|
||||
$jscomp.getGlobal=function(c){return"undefined"!=typeof window&&window===c?c:"undefined"!=typeof global&&null!=global?global:c};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(c,f,e,g){if(f){e=$jscomp.global;c=c.split(".");for(g=0;g<c.length-1;g++){var a=c[g];a in e||(e[a]={});e=e[a]}c=c[c.length-1];g=e[c];f=f(g);f!=g&&null!=f&&$jscomp.defineProperty(e,c,{configurable:!0,writable:!0,value:f})}};
|
||||
$jscomp.polyfill("Array.prototype.find",function(c){return c?c:function(c,e){return $jscomp.findInternal(this,c,e).v}},"es6","es3");
|
||||
sysPass.Triggers=function(c){var f=function(a){var b={valueField:"id",labelField:"name",searchField:["name"],onInitialize:function(){var a=$(this.$wrapper[0]),b=$(this.$input[0]).siblings(".btn-add-select");1===b.length&&a.append(b)}};a.find(".select-box").each(function(a){var c=$(this);a={};!0===c.data("create")&&(a.create=!0);b.plugins=c.hasClass("select-box-deselect")?{clear_selection:{title:sysPassApp.config.LANG[51]}}:{};if(c.data("onchange")){var d=c.data("onchange").split("/");b.onChange=function(a){if(0<
|
||||
a)if(2===d.length)sysPassApp.actions[d[0]][d[1]](c);else sysPassApp.actions[d[0]](c)}}c.selectize($.extend(a,b))});a.find("#allowed_exts").selectize({create:function(a){return{value:a.toUpperCase(),text:a.toUpperCase()}},createFilter:/^[a-z0-9]{1,4}$/i,plugins:["remove_button"]});a.find("#wikifilter").selectize({create:!0,createFilter:/^[a-z0-9:._-]+$/i,plugins:["remove_button"]});a.find(".select-items-tag").selectize({create:function(a){return{value:a.toLowerCase(),text:a.toLowerCase()}},createFilter:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,
|
||||
plugins:["remove_button"]})},e={main:function(a){c.info("views:main");clipboard.isSupported()||sysPassApp.msg.info(sysPassApp.config.LANG[65]);$(".btn-menu").click(function(){var a=$(this);"1"===a.attr("data-history-reset")&&sysPassApp.requests.history.reset();sysPassApp.actions.doAction({r:a.data("route")},a.data("view"))});if(0===a.data("upgraded"))sysPassApp.actions.doAction({r:"account/index"},"search");else{a=$("#content");var b=a.data("page");e.common(a);if(""!==b&&"function"===typeof e[b])e[b]()}!0===
|
||||
sysPassApp.config.STATUS.CHECK_UPDATES&&sysPassApp.actions.main.getUpdates();!0===sysPassApp.config.STATUS.CHECK_NOTICES&&sysPassApp.actions.main.getNotices();"function"===typeof sysPassApp.theme.viewsTriggers.main&&sysPassApp.theme.viewsTriggers.main()},search:function(){c.info("views:search");var a=$("#frmSearch");0!==a.length&&(a.find("input[name='search']").on("keyup",function(b){b.preventDefault();13!==b.which&&13!==b.keyCode||a.submit()}),a.find("select, #rpp").on("change",function(){a.submit()}),
|
||||
a.find("button.btn-clear").on("click",function(b){b.preventDefault();a.find('input[name="searchfav"]').val(0);a[0].reset()}),a.find("input:text:visible:first").focus(),$("#globalSearch").click(function(){var b=1==$(this).prop("checked")?1:0;a.find("input[name='gsearch']").val(b);a.submit()}),"function"===typeof sysPassApp.theme.viewsTriggers.search&&sysPassApp.theme.viewsTriggers.search())},login:function(){c.info("views:login");var a=$("#frmLogin");sysPassApp.config.AUTH.AUTHBASIC_AUTOLOGIN&&"0"===
|
||||
a.find("input[name='loggedOut']").val()&&(c.info("views:login:autologin"),sysPassApp.msg.info(sysPassApp.config.LANG[66]),sysPassApp.actions.main.login(a));a.find("input:visible:first").focus()},userpassreset:function(){c.info("views:userpassreset");var a=$("#frmUserPassReset");sysPassApp.theme.passwordDetect(a)},footer:function(){c.info("views:footer")},common:function(a){c.info("views:common");e(a);var b=a.find(":input [name='sk']");0<b.length&&sysPassApp.sk.set(b.val());"function"===typeof sysPassApp.theme.viewsTriggers.common&&
|
||||
sysPassApp.theme.viewsTriggers.common(a);f();sysPassApp.triggers.updateFormHash(a)},datatabs:function(){c.info("views:datatabs");$(".datagrid-action-search>form").each(function(){var a=$(this);a.find("button.btn-clear").on("click",function(b){b.preventDefault();a.trigger("reset")})})},config:function(){c.info("views:config");var a=$("#drop-import-files");if(0<a.length){var b=sysPassApp.util.fileUpload(a);b.url=sysPassApp.actions.ajaxUrl.entrypoint+"?r="+a.data("action-route");b.allowedExts=sysPassApp.config.FILES.IMPORT_ALLOWED_EXTS;
|
||||
b.beforeSendAction=function(){b.setRequestData({sk:sysPassApp.sk.get(),csvDelimiter:$("#csvDelimiter").val(),importPwd:$("#importPwd").val(),importMasterPwd:$("#importMasterPwd").val(),import_defaultuser:$("#import_defaultuser").val(),import_defaultgroup:$("#import_defaultgroup").val()})}}},account:function(){c.info("views:account");var a=$("#list-account-files");0<a.length&&sysPassApp.actions.account.listFiles(a);var b=$("#drop-account-files");if(0<b.length){var g=sysPassApp.util.fileUpload(b);g.url=
|
||||
sysPassApp.actions.ajaxUrl.entrypoint+"?r="+b.data("action-route")+"/"+b.data("item-id");g.allowedExts=sysPassApp.config.FILES.ACCOUNT_ALLOWED_EXTS;g.requestDoneAction=function(){sysPassApp.actions.account.listFiles(a)}}b=$("#parent_account_id");0<b.length&&(b.on("change",function(){var a=$(this),b=$("#accountpass,#accountpassR");0<a[0].value?b.each(function(){$(this).prop("disabled","true");$(this).prop("required","false")}):b.each(function(){$(this).prop("disabled","");$(this).prop("required","true")})}),
|
||||
sysPassApp.actions.items.get(b));$("input:text:visible:first").focus()},install:function(){c.info("views:install");var a=$("#frmInstall");sysPassApp.theme.passwordDetect(a);e(a)}},f=function(){c.info("initializeTags");$(".select-box-tags").selectize({persist:!1,valueField:"id",labelField:"name",searchField:["name"],plugins:["remove_button"],onInitialize:function(){var a=$(this.$wrapper[0]),b=$(this.$input[0]);b.attr("data-hash",sysPassApp.util.hash.md5(this.getValue().join()));var c=b.data("currentItemId");
|
||||
void 0!==c&&this.removeOption(c,!0);c=b.siblings(".btn-add-select");1===c.length&&a.append(c);b=b.siblings(".select-icon");1===b.length&&a.prepend(b)},onChange:function(){var a=$(this.$input[0]),b=sysPassApp.util.hash.md5(this.getValue().join())!==a.data("hash");a.attr("data-updated",b)}})};return{views:d,selectDetect:e,updateSk:function(){$("#content").find("[data-sk]").each(function(){c.info("updateSk");$(this).data("sk",sysPassApp.sk.get())})},updateFormHash:function(a){c.info("updateFormHash");
|
||||
a.find("input[name='loggedOut']").val()&&(c.info("views:login:autologin"),sysPassApp.msg.info(sysPassApp.config.LANG[66]),sysPassApp.actions.main.login(a));a.find("input:visible:first").focus()},userpassreset:function(){c.info("views:userpassreset");var a=$("#frmUserPassReset");sysPassApp.theme.passwordDetect(a)},footer:function(){c.info("views:footer")},common:function(a){c.info("views:common");f(a);var b=a.find(":input [name='sk']");0<b.length&&sysPassApp.sk.set(b.val());"function"===typeof sysPassApp.theme.viewsTriggers.common&&
|
||||
sysPassApp.theme.viewsTriggers.common(a);g();sysPassApp.triggers.updateFormHash(a)},datatabs:function(){c.info("views:datatabs");$(".datagrid-action-search>form").each(function(){var a=$(this);a.find("button.btn-clear").on("click",function(b){b.preventDefault();a.trigger("reset")})})},config:function(){c.info("views:config");var a=$("#drop-import-files");if(0<a.length){var b=sysPassApp.util.fileUpload(a);b.url=sysPassApp.actions.ajaxUrl.entrypoint+"?r="+a.data("action-route");b.allowedExts=sysPassApp.config.FILES.IMPORT_ALLOWED_EXTS;
|
||||
b.beforeSendAction=function(){b.setRequestData({sk:sysPassApp.sk.get(),csvDelimiter:$("#csvDelimiter").val(),importPwd:$("#importPwd").val(),importMasterPwd:$("#importMasterPwd").val(),import_defaultuser:$("#import_defaultuser").val(),import_defaultgroup:$("#import_defaultgroup").val()})}}},account:function(){c.info("views:account");var a=$("#list-account-files");0<a.length&&sysPassApp.actions.account.listFiles(a);var b=$("#drop-account-files");if(0<b.length){var d=sysPassApp.util.fileUpload(b);d.url=
|
||||
sysPassApp.actions.ajaxUrl.entrypoint+"?r="+b.data("action-route")+"/"+b.data("item-id");d.allowedExts=sysPassApp.config.FILES.ACCOUNT_ALLOWED_EXTS;d.requestDoneAction=function(){sysPassApp.actions.account.listFiles(a)}}b=$("#parent_account_id");0<b.length&&(b.on("change",function(){var a=$(this),b=$("#accountpass,#accountpassR");0<a[0].value?b.each(function(){$(this).prop("disabled","true");$(this).prop("required","false")}):b.each(function(){$(this).prop("disabled","");$(this).prop("required","true")})}),
|
||||
sysPassApp.actions.items.get(b));$("input:text:visible:first").focus()},install:function(){c.info("views:install");var a=$("#frmInstall");sysPassApp.theme.passwordDetect(a);f(a)}},g=function(){c.info("initializeTags");$(".select-box-tags").selectize({persist:!1,valueField:"id",labelField:"name",searchField:["name"],plugins:["remove_button"],onInitialize:function(){var a=$(this.$wrapper[0]),b=$(this.$input[0]);b.attr("data-hash",sysPassApp.util.hash.md5(this.getValue().join()));var c=b.data("currentItemId");
|
||||
void 0!==c&&this.removeOption(c,!0);c=b.siblings(".btn-add-select");1===c.length&&a.append(c);b=b.siblings(".select-icon");1===b.length&&a.prepend(b)},onChange:function(){var a=$(this.$input[0]),b=sysPassApp.util.hash.md5(this.getValue().join())!==a.data("hash");a.attr("data-updated",b)}})};return{views:e,selectDetect:f,updateSk:function(){$("#content").find("[data-sk]").each(function(){c.info("updateSk");$(this).data("sk",sysPassApp.sk.get())})},updateFormHash:function(a){c.info("updateFormHash");
|
||||
a=void 0!==a?a.find(".form-action[data-hash]"):$(".form-action[data-hash]");0<a.length&&a.each(function(){var a=$(this);a.attr("data-hash",sysPassApp.util.hash.md5(a.serialize()))})},bodyHooks:function(){c.info("bodyHooks");$("body").on("click","button.btn-action[data-onclick][type='button'],li.btn-action[data-onclick],span.btn-action[data-onclick],i.btn-action[data-onclick],a.btn-action[data-onclick],.btn-action-pager[data-onclick]",function(){var a=$(this);c.info("handleActionButton: "+a.attr("id"));
|
||||
var b=a.data("onclick").split("/");var d=void 0!==a.data("plugin")&&void 0!==sysPassApp.plugins.plugin?sysPassApp.plugins.plugin:sysPassApp.actions;if(2===b.length)d[b[0]][b[1]](a);else d[b[0]](a)}).on("click",".btn-back",function(){if(0<sysPassApp.requests.history.length()){c.info("back");var a=sysPassApp.requests.history.del();sysPassApp.requests.getActionCall(a,a.callback)}}).on("submit",".form-action",function(a){a.preventDefault();a=$(this);c.info("formAction");var b=a.attr("data-hash"),d=sysPassApp.util.hash.md5(a.serialize());
|
||||
if(b===d)sysPassApp.msg.ok(sysPassApp.config.LANG[55]);else if(b=void 0!==a.data("plugin")&&void 0!==sysPassApp.plugins.plugin?sysPassApp.plugins.plugin:sysPassApp.actions,d=a.data("onsubmit").split("/"),a.find("input[name='sk']").val(sysPassApp.sk.get()),2===d.length)b[d[0]][d[1]](a);else b[d[0]](a)}).on("click",".btn-help[data-help]",function(){var a=$(this);a=$.find("div[for='"+a.data("help")+"']");if(0<a.length){var b=sysPassApp.config.LANG[54]+" - "+a[0].getAttribute("title")||sysPassApp.config.LANG[54];
|
||||
var b=a.data("onclick").split("/");var d=a.data("plugin");d=void 0!==d&&void 0!==sysPassApp.plugins[d]?sysPassApp.plugins[d]:sysPassApp.actions;if(2===b.length)d[b[0]][b[1]](a);else d[b[0]](a)}).on("click",".btn-back",function(){if(0<sysPassApp.requests.history.length()){c.info("back");var a=sysPassApp.requests.history.del();sysPassApp.requests.getActionCall(a,a.callback)}}).on("submit",".form-action",function(a){a.preventDefault();a=$(this);c.info("formAction");var b=a.attr("data-hash"),d=sysPassApp.util.hash.md5(a.serialize());
|
||||
if(b===d)sysPassApp.msg.ok(sysPassApp.config.LANG[55]);else if(b=a.data("plugin"),b=void 0!==b&&void 0!==sysPassApp.plugins[b]?sysPassApp.plugins[b]:sysPassApp.actions,d=a.data("onsubmit").split("/"),a.find("input[name='sk']").val(sysPassApp.sk.get()),2===d.length)b[d[0]][d[1]](a);else b[d[0]](a)}).on("click",".btn-help[data-help]",function(){var a=$(this);a=$.find("div[for='"+a.data("help")+"']");if(0<a.length){var b=sysPassApp.config.LANG[54]+" - "+a[0].getAttribute("title")||sysPassApp.config.LANG[54];
|
||||
mdlDialog().show({title:b,text:a[0].innerHTML,positive:{title:sysPassApp.config.LANG[43]}})}}).on("reset",".form-action",function(a){a.preventDefault();c.info("reset");a=$(this);a.find("input:text, input:password, input:file, textarea").val("").parent("div").removeClass("is-dirty");a.find("input:radio, input:checkbox").prop("checked",!1).prop("selected",!1);a.find("input[name='start'], input[name='skey'], input[name='sorder']").val(0);a.find("select").each(function(){$(this)[0].selectize.clear(!0)});
|
||||
a.submit()}).on("click",".btn-popup-close",function(a){$.magnificPopup.close()})}}};
|
||||
|
||||
@@ -64,7 +64,7 @@ sysPass.createNS("Triggers");
|
||||
sysPass.createNS("Actions");
|
||||
sysPass.createNS("Requests");
|
||||
sysPass.createNS("Theme");
|
||||
sysPass.createNS("Plugin");
|
||||
sysPass.createNS("Plugins");
|
||||
sysPass.createNS("Util");
|
||||
|
||||
// Objeto con las funciones públicas de sysPass
|
||||
|
||||
2
public/js/app.min.js
vendored
2
public/js/app.min.js
vendored
@@ -1 +1 @@
|
||||
var sysPass={createNS:function(a){a=a.split(".");var b=sysPass;"sysPass"===a[0]&&(a=a.slice(1));for(var c=0;c<a.length;c++){var d=a[c];"undefined"===typeof b[d]&&(b[d]={});b=b[d]}return b}};sysPass.createNS("Config");sysPass.createNS("Main");sysPass.createNS("Triggers");sysPass.createNS("Actions");sysPass.createNS("Requests");sysPass.createNS("Theme");sysPass.createNS("Plugin");sysPass.createNS("Util");var sysPassApp={};$(document).on("DOMContentLoaded",function(a){sysPassApp=sysPass.Main()});
|
||||
var sysPass={createNS:function(a){a=a.split(".");var b=sysPass;"sysPass"===a[0]&&(a=a.slice(1));for(var c=0;c<a.length;c++){var d=a[c];"undefined"===typeof b[d]&&(b[d]={});b=b[d]}return b}};sysPass.createNS("Config");sysPass.createNS("Main");sysPass.createNS("Triggers");sysPass.createNS("Actions");sysPass.createNS("Requests");sysPass.createNS("Theme");sysPass.createNS("Plugins");sysPass.createNS("Util");var sysPassApp={};$(document).on("DOMContentLoaded",function(a){sysPassApp=sysPass.Main()});
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
<authBasicAutoLoginEnabled>1</authBasicAutoLoginEnabled>
|
||||
<authBasicDomain></authBasicDomain>
|
||||
<authBasicEnabled>1</authBasicEnabled>
|
||||
<backup_hash>aaeac4305c3720ad2583da0b48fe9e8772baf830</backup_hash>
|
||||
<backup_hash>469d8c9e4929938ef00640f07de42d56e3b9b29b</backup_hash>
|
||||
<checkUpdates>0</checkUpdates>
|
||||
<checknotices>0</checknotices>
|
||||
<configDate>1539293913</configDate>
|
||||
<configHash>f53ab0a1ef713674d6398b4e188e098b4090166c</configHash>
|
||||
<configDate>1539562721</configDate>
|
||||
<configHash>70ced48a5cd70bf112f386361d4c10ac603132fe</configHash>
|
||||
<configSaver></configSaver>
|
||||
<configVersion></configVersion>
|
||||
<databaseVersion></databaseVersion>
|
||||
@@ -32,7 +32,7 @@
|
||||
<dokuwikiUrlBase></dokuwikiUrlBase>
|
||||
<dokuwikiUser></dokuwikiUser>
|
||||
<encryptSession>0</encryptSession>
|
||||
<export_hash>6f2ae342398f2315be1702fa560634b8f1a3e408</export_hash>
|
||||
<export_hash>0dcdb304c5e122e25fbbb97f5b9de17f87195c62</export_hash>
|
||||
<filesAllowedExts>
|
||||
<item type="filesAllowedExts">PDF</item>
|
||||
<item type="filesAllowedExts">JPG</item>
|
||||
|
||||
Reference in New Issue
Block a user