mirror of
https://github.com/nuxsmin/sysPass.git
synced 2026-03-03 23:24:07 +01:00
* [DEV] Config actions refactoring & code cleanup
This commit is contained in:
@@ -23,26 +23,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
use SP\Account\Account;
|
||||
use SP\Account\AccountHistory;
|
||||
use SP\Config\Config;
|
||||
use SP\Config\ConfigDB;
|
||||
use SP\Core\ActionsInterface;
|
||||
use SP\Core\Crypt;
|
||||
use SP\Core\CryptMasterPass;
|
||||
use SP\Core\Init;
|
||||
use SP\Core\Session;
|
||||
use SP\Core\SessionUtil;
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\Html\Html;
|
||||
use SP\Http\JsonResponse;
|
||||
use SP\Controller\ConfigActionController;
|
||||
use SP\Http\Request;
|
||||
use SP\Log\Email;
|
||||
use SP\Log\Log;
|
||||
use SP\Mgmt\CustomFields\CustomFieldsUtil;
|
||||
use SP\Mgmt\Users\UserPass;
|
||||
use SP\Util\Checks;
|
||||
use SP\Util\Json;
|
||||
|
||||
define('APP_ROOT', '..');
|
||||
|
||||
@@ -50,416 +32,5 @@ require_once APP_ROOT . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR . 'Bas
|
||||
|
||||
Request::checkReferer('POST');
|
||||
|
||||
$Json = new JsonResponse();
|
||||
|
||||
if (!Init::isLoggedIn()) {
|
||||
$Json->setStatus(10);
|
||||
$Json->setDescription(_('La sesión no se ha iniciado o ha caducado'));
|
||||
Json::returnJson($Json);
|
||||
}
|
||||
|
||||
$sk = Request::analyze('sk', false);
|
||||
|
||||
|
||||
if (!$sk || !SessionUtil::checkSessionKey($sk)) {
|
||||
$Json->setDescription(_('CONSULTA INVÁLIDA'));
|
||||
Json::returnJson($Json);
|
||||
} elseif (Checks::demoIsEnabled()) {
|
||||
$Json->setDescription(_('Ey, esto es una DEMO!!'));
|
||||
Json::returnJson($Json);
|
||||
}
|
||||
|
||||
// Variables POST del formulario
|
||||
$actionId = Request::analyze('actionId', 0);
|
||||
$activeTab = Request::analyze('activeTab', 0);
|
||||
|
||||
if ($actionId === ActionsInterface::ACTION_CFG_GENERAL
|
||||
|| $actionId === ActionsInterface::ACTION_CFG_WIKI
|
||||
|| $actionId === ActionsInterface::ACTION_CFG_LDAP
|
||||
|| $actionId === ActionsInterface::ACTION_CFG_MAIL
|
||||
) {
|
||||
$Log = Log::newLog(_('Modificar Configuración'));
|
||||
$Config = Session::getConfig();
|
||||
|
||||
if ($actionId === ActionsInterface::ACTION_CFG_GENERAL) {
|
||||
// General
|
||||
$siteLang = Request::analyze('sitelang');
|
||||
$siteTheme = Request::analyze('sitetheme', 'material-blue');
|
||||
$sessionTimeout = Request::analyze('session_timeout', 300);
|
||||
$httpsEnabled = Request::analyze('https_enabled', false, false, true);
|
||||
$debugEnabled = Request::analyze('debug', false, false, true);
|
||||
$maintenanceEnabled = Request::analyze('maintenance', false, false, true);
|
||||
$checkUpdatesEnabled = Request::analyze('updates', false, false, true);
|
||||
$checkNoticesEnabled = Request::analyze('notices', false, false, true);
|
||||
|
||||
$Config->setSiteLang($siteLang);
|
||||
$Config->setSiteTheme($siteTheme);
|
||||
$Config->setSessionTimeout($sessionTimeout);
|
||||
$Config->setHttpsEnabled($httpsEnabled);
|
||||
$Config->setDebug($debugEnabled);
|
||||
$Config->setMaintenance($maintenanceEnabled);
|
||||
$Config->setCheckUpdates($checkUpdatesEnabled);
|
||||
$Config->setChecknotices($checkNoticesEnabled);
|
||||
|
||||
// Events
|
||||
$logEnabled = Request::analyze('log_enabled', false, false, true);
|
||||
$syslogEnabled = Request::analyze('syslog_enabled', false, false, true);
|
||||
$remoteSyslogEnabled = Request::analyze('remotesyslog_enabled', false, false, true);
|
||||
$syslogServer = Request::analyze('remotesyslog_server');
|
||||
$syslogPort = Request::analyze('remotesyslog_port', 0);
|
||||
|
||||
$Config->setLogEnabled($logEnabled);
|
||||
$Config->setSyslogEnabled($syslogEnabled);
|
||||
|
||||
if ($remoteSyslogEnabled && (!$syslogServer || !$syslogPort)) {
|
||||
$Json->setDescription(_('Faltan parámetros de syslog remoto'));
|
||||
Json::returnJson($Json);
|
||||
} elseif ($remoteSyslogEnabled) {
|
||||
$Config->setSyslogRemoteEnabled($remoteSyslogEnabled);
|
||||
$Config->setSyslogServer($syslogServer);
|
||||
$Config->setSyslogPort($syslogPort);
|
||||
} else {
|
||||
$Config->setSyslogRemoteEnabled(false);
|
||||
|
||||
$Log->addDescription(_('Syslog remoto deshabilitado'));
|
||||
}
|
||||
|
||||
// Accounts
|
||||
$globalSearchEnabled = Request::analyze('globalsearch', false, false, true);
|
||||
$accountPassToImageEnabled = Request::analyze('account_passtoimage', false, false, true);
|
||||
$accountLinkEnabled = Request::analyze('account_link', false, false, true);
|
||||
$accountCount = Request::analyze('account_count', 10);
|
||||
$resultsAsCardsEnabled = Request::analyze('resultsascards', false, false, true);
|
||||
|
||||
$Config->setGlobalSearch($globalSearchEnabled);
|
||||
$Config->setAccountPassToImage($accountPassToImageEnabled);
|
||||
$Config->setAccountLink($accountLinkEnabled);
|
||||
$Config->setAccountCount($accountCount);
|
||||
$Config->setResultsAsCards($resultsAsCardsEnabled);
|
||||
|
||||
// Files
|
||||
$filesEnabled = Request::analyze('files_enabled', false, false, true);
|
||||
$filesAllowedSize = Request::analyze('files_allowed_size', 1024);
|
||||
$filesAllowedExts = Request::analyze('files_allowed_exts');
|
||||
|
||||
if ($filesEnabled && $filesAllowedSize >= 16384) {
|
||||
$Json->setDescription(_('El tamaño máximo por archivo es de 16MB'));
|
||||
Json::returnJson($Json);
|
||||
}
|
||||
|
||||
if (!empty($filesAllowedExts)) {
|
||||
$exts = explode(',', $filesAllowedExts);
|
||||
array_walk($exts, function (&$value) use ($Json) {
|
||||
if (preg_match('/[^a-z0-9_-]+/i', $value)) {
|
||||
$Json->setDescription(sprintf('%s: %s', _('Extensión no permitida'), $value));
|
||||
Json::returnJson($Json);
|
||||
}
|
||||
});
|
||||
$Config->setFilesAllowedExts($exts);
|
||||
} else {
|
||||
$Config->setFilesAllowedExts([]);
|
||||
}
|
||||
|
||||
$Config->setFilesEnabled($filesEnabled);
|
||||
$Config->setFilesAllowedSize($filesAllowedSize);
|
||||
|
||||
// Public Links
|
||||
$pubLinksEnabled = Request::analyze('publinks_enabled', false, false, true);
|
||||
$pubLinksImageEnabled = Request::analyze('publinks_image_enabled', false, false, true);
|
||||
$pubLinksMaxTime = Request::analyze('publinks_maxtime', 10);
|
||||
$pubLinksMaxViews = Request::analyze('publinks_maxviews', 3);
|
||||
|
||||
$Config->setPublinksEnabled($pubLinksEnabled);
|
||||
$Config->setPublinksImageEnabled($pubLinksImageEnabled);
|
||||
$Config->setPublinksMaxTime($pubLinksMaxTime * 60);
|
||||
$Config->setPublinksMaxViews($pubLinksMaxViews);
|
||||
|
||||
// Proxy
|
||||
$proxyEnabled = Request::analyze('proxy_enabled', false, false, true);
|
||||
$proxyServer = Request::analyze('proxy_server');
|
||||
$proxyPort = Request::analyze('proxy_port', 0);
|
||||
$proxyUser = Request::analyze('proxy_user');
|
||||
$proxyPass = Request::analyzeEncrypted('proxy_pass');
|
||||
|
||||
|
||||
// Valores para Proxy
|
||||
if ($proxyEnabled && (!$proxyServer || !$proxyPort)) {
|
||||
$Json->setDescription(_('Faltan parámetros de Proxy'));
|
||||
Json::returnJson($Json);
|
||||
} elseif ($proxyEnabled) {
|
||||
$Config->setProxyEnabled(true);
|
||||
$Config->setProxyServer($proxyServer);
|
||||
$Config->setProxyPort($proxyPort);
|
||||
$Config->setProxyUser($proxyUser);
|
||||
$Config->setProxyPass($proxyPass);
|
||||
|
||||
$Log->addDescription(_('Proxy habiltado'));
|
||||
} else {
|
||||
$Config->setProxyEnabled(false);
|
||||
|
||||
$Log->addDescription(_('Proxy deshabilitado'));
|
||||
}
|
||||
|
||||
$Log->addDetails(_('Sección'), _('General'));
|
||||
} elseif ($actionId === ActionsInterface::ACTION_CFG_WIKI) {
|
||||
// Wiki
|
||||
$wikiEnabled = Request::analyze('wiki_enabled', false, false, true);
|
||||
$wikiSearchUrl = Request::analyze('wiki_searchurl');
|
||||
$wikiPageUrl = Request::analyze('wiki_pageurl');
|
||||
$wikiFilter = Request::analyze('wiki_filter');
|
||||
|
||||
// Valores para la conexión a la Wiki
|
||||
if ($wikiEnabled && (!$wikiSearchUrl || !$wikiPageUrl || !$wikiFilter)) {
|
||||
$Json->setDescription(_('Faltan parámetros de Wiki'));
|
||||
Json::returnJson($Json);
|
||||
} elseif ($wikiEnabled) {
|
||||
$Config->setWikiEnabled(true);
|
||||
$Config->setWikiSearchurl($wikiSearchUrl);
|
||||
$Config->setWikiPageurl($wikiPageUrl);
|
||||
$Config->setWikiFilter(explode(',', $wikiFilter));
|
||||
|
||||
$Log->addDescription(_('Wiki habiltada'));
|
||||
} else {
|
||||
$Config->setWikiEnabled(false);
|
||||
|
||||
$Log->addDescription(_('Wiki deshabilitada'));
|
||||
}
|
||||
|
||||
// DokuWiki
|
||||
$dokuWikiEnabled = Request::analyze('dokuwiki_enabled', false, false, true);
|
||||
$dokuWikiUrl = Request::analyze('dokuwiki_url');
|
||||
$dokuWikiUrlBase = Request::analyze('dokuwiki_urlbase');
|
||||
$dokuWikiUser = Request::analyze('dokuwiki_user');
|
||||
$dokuWikiPass = Request::analyzeEncrypted('dokuwiki_pass');
|
||||
$dokuWikiNamespace = Request::analyze('dokuwiki_namespace');
|
||||
|
||||
// Valores para la conexión a la API de DokuWiki
|
||||
if ($dokuWikiEnabled && (!$dokuWikiUrl || !$dokuWikiUrlBase)) {
|
||||
$Json->setDescription(_('Faltan parámetros de DokuWiki'));
|
||||
Json::returnJson($Json);
|
||||
} elseif ($dokuWikiEnabled) {
|
||||
$Config->setDokuwikiEnabled(true);
|
||||
$Config->setDokuwikiUrl($dokuWikiUrl);
|
||||
$Config->setDokuwikiUrlBase(trim($dokuWikiUrlBase, '/'));
|
||||
$Config->setDokuwikiUser($dokuWikiUser);
|
||||
$Config->setDokuwikiPass($dokuWikiPass);
|
||||
$Config->setDokuwikiNamespace($dokuWikiNamespace);
|
||||
|
||||
$Log->addDescription(_('DokuWiki habiltada'));
|
||||
} else {
|
||||
$Config->setDokuwikiEnabled(false);
|
||||
|
||||
$Log->addDescription(_('DokuWiki deshabilitada'));
|
||||
}
|
||||
|
||||
$Log->addDetails(_('Sección'), _('Wiki'));
|
||||
} elseif ($actionId === ActionsInterface::ACTION_CFG_LDAP) {
|
||||
// LDAP
|
||||
$ldapEnabled = Request::analyze('ldap_enabled', false, false, true);
|
||||
$ldapADSEnabled = Request::analyze('ldap_ads', false, false, true);
|
||||
$ldapServer = Request::analyze('ldap_server');
|
||||
$ldapBase = Request::analyze('ldap_base');
|
||||
$ldapGroup = Request::analyze('ldap_group');
|
||||
$ldapDefaultGroup = Request::analyze('ldap_defaultgroup', 0);
|
||||
$ldapDefaultProfile = Request::analyze('ldap_defaultprofile', 0);
|
||||
$ldapBindUser = Request::analyze('ldap_binduser');
|
||||
$ldapBindPass = Request::analyzeEncrypted('ldap_bindpass');
|
||||
|
||||
// Valores para la configuración de LDAP
|
||||
if ($ldapEnabled && (!$ldapServer || !$ldapBase || !$ldapBindUser)) {
|
||||
$Json->setDescription(_('Faltan parámetros de LDAP'));
|
||||
Json::returnJson($Json);
|
||||
} elseif ($ldapEnabled) {
|
||||
$Config->setLdapEnabled(true);
|
||||
$Config->setLdapAds($ldapADSEnabled);
|
||||
$Config->setLdapServer($ldapServer);
|
||||
$Config->setLdapBase($ldapBase);
|
||||
$Config->setLdapGroup($ldapGroup);
|
||||
$Config->setLdapDefaultGroup($ldapDefaultGroup);
|
||||
$Config->setLdapDefaultProfile($ldapDefaultProfile);
|
||||
$Config->setLdapBindUser($ldapBindUser);
|
||||
$Config->setLdapBindPass($ldapBindPass);
|
||||
|
||||
$Log->addDescription(_('LDAP habiltado'));
|
||||
} else {
|
||||
$Config->setLdapEnabled(false);
|
||||
|
||||
$Log->addDescription(_('LDAP deshabilitado'));
|
||||
}
|
||||
|
||||
$Log->addDetails(_('Sección'), _('LDAP'));
|
||||
} elseif ($actionId === ActionsInterface::ACTION_CFG_MAIL) {
|
||||
// Mail
|
||||
$mailEnabled = Request::analyze('mail_enabled', false, false, true);
|
||||
$mailServer = Request::analyze('mail_server');
|
||||
$mailPort = Request::analyze('mail_port', 25);
|
||||
$mailUser = Request::analyze('mail_user');
|
||||
$mailPass = Request::analyzeEncrypted('mail_pass');
|
||||
$mailSecurity = Request::analyze('mail_security');
|
||||
$mailFrom = Request::analyze('mail_from');
|
||||
$mailRequests = Request::analyze('mail_requestsenabled', false, false, true);
|
||||
$mailAuth = Request::analyze('mail_authenabled', false, false, true);
|
||||
|
||||
// Valores para la configuración del Correo
|
||||
if ($mailEnabled && (!$mailServer || !$mailFrom)) {
|
||||
$Json->setDescription(_('Faltan parámetros de Correo'));
|
||||
Json::returnJson($Json);
|
||||
} elseif ($mailEnabled) {
|
||||
$Config->setMailEnabled(true);
|
||||
$Config->setMailRequestsEnabled($mailRequests);
|
||||
$Config->setMailServer($mailServer);
|
||||
$Config->setMailPort($mailPort);
|
||||
$Config->setMailSecurity($mailSecurity);
|
||||
$Config->setMailFrom($mailFrom);
|
||||
|
||||
if ($mailAuth) {
|
||||
$Config->setMailAuthenabled($mailAuth);
|
||||
$Config->setMailUser($mailUser);
|
||||
$Config->setMailPass($mailPass);
|
||||
}
|
||||
|
||||
$Log->addDescription(_('Correo habiltado'));
|
||||
} else {
|
||||
$Config->setMailEnabled(false);
|
||||
$Config->setMailRequestsEnabled(false);
|
||||
$Config->setMailAuthenabled(false);
|
||||
|
||||
$Log->addDescription(_('Correo deshabilitado'));
|
||||
}
|
||||
|
||||
$Log->addDetails(_('Sección'), _('Correo'));
|
||||
}
|
||||
|
||||
try {
|
||||
Config::saveConfig();
|
||||
} catch (SPException $e) {
|
||||
$Log->addDescription(_('Error al guardar la configuración'));
|
||||
$Log->addDetails($e->getMessage(), $e->getHint());
|
||||
$Log->writeLog();
|
||||
|
||||
Email::sendEmail($Log);
|
||||
|
||||
$Json->setDescription($e->getMessage());
|
||||
Json::returnJson($Json);
|
||||
}
|
||||
|
||||
$Log->writeLog();
|
||||
|
||||
Email::sendEmail($Log);
|
||||
|
||||
if ($actionId === ActionsInterface::ACTION_CFG_GENERAL) {
|
||||
// Recargar la aplicación completa para establecer nuevos valores
|
||||
\SP\Util\Util::reload();
|
||||
}
|
||||
|
||||
$Json->setStatus(0);
|
||||
$Json->setDescription(_('Configuración actualizada'));
|
||||
Json::returnJson($Json);
|
||||
} elseif ($actionId === ActionsInterface::ACTION_CFG_ENCRYPTION) {
|
||||
$currentMasterPass = Request::analyzeEncrypted('curMasterPwd');
|
||||
$newMasterPass = Request::analyzeEncrypted('newMasterPwd');
|
||||
$newMasterPassR = Request::analyzeEncrypted('newMasterPwdR');
|
||||
$confirmPassChange = Request::analyze('confirmPassChange', 0, false, 1);
|
||||
$noAccountPassChange = Request::analyze('chkNoAccountChange', 0, false, 1);
|
||||
|
||||
if (!UserPass::getItem(Session::getUserData())->checkUserUpdateMPass()) {
|
||||
$Json->setDescription(_('Clave maestra actualizada'));
|
||||
$Json->addMessage(_('Reinicie la sesión para cambiarla'));
|
||||
Json::returnJson($Json);
|
||||
} elseif ($newMasterPass == '' && $currentMasterPass == '') {
|
||||
$Json->setDescription(_('Clave maestra no indicada'));
|
||||
Json::returnJson($Json);
|
||||
} elseif ($confirmPassChange == 0) {
|
||||
$Json->setDescription(_('Se ha de confirmar el cambio de clave'));
|
||||
Json::returnJson($Json);
|
||||
}
|
||||
|
||||
if ($newMasterPass == $currentMasterPass) {
|
||||
$Json->setDescription(_('Las claves son idénticas'));
|
||||
Json::returnJson($Json);
|
||||
} elseif ($newMasterPass != $newMasterPassR) {
|
||||
$Json->setDescription(_('Las claves maestras no coinciden'));
|
||||
Json::returnJson($Json);
|
||||
} elseif (!Crypt::checkHashPass($currentMasterPass, ConfigDB::getValue('masterPwd'), true)) {
|
||||
$Json->setDescription(_('La clave maestra actual no coincide'));
|
||||
Json::returnJson($Json);
|
||||
}
|
||||
|
||||
$hashMPass = Crypt::mkHashPassword($newMasterPass);
|
||||
|
||||
if (!$noAccountPassChange) {
|
||||
$Account = new Account();
|
||||
|
||||
if (!$Account->updateAccountsMasterPass($currentMasterPass, $newMasterPass)) {
|
||||
$Json->setDescription(_('Errores al actualizar las claves de las cuentas'));
|
||||
Json::returnJson($Json);
|
||||
}
|
||||
|
||||
$AccountHistory = new AccountHistory();
|
||||
|
||||
if (!$AccountHistory->updateAccountsMasterPass($currentMasterPass, $newMasterPass, $hashMPass)) {
|
||||
$Json->setDescription(_('Errores al actualizar las claves de las cuentas del histórico'));
|
||||
Json::returnJson($Json);
|
||||
}
|
||||
|
||||
if (!CustomFieldsUtil::updateCustomFieldsCrypt($currentMasterPass, $newMasterPass)) {
|
||||
$Json->setDescription(_('Errores al actualizar datos de campos personalizados'));
|
||||
Json::returnJson($Json);
|
||||
}
|
||||
}
|
||||
|
||||
if (Checks::demoIsEnabled()) {
|
||||
$Json->setDescription(_('Ey, esto es una DEMO!!'));
|
||||
Json::returnJson($Json);
|
||||
}
|
||||
|
||||
// ConfigDB::readConfig();
|
||||
ConfigDB::setCacheConfigValue('masterPwd', $hashMPass);
|
||||
ConfigDB::setCacheConfigValue('lastupdatempass', time());
|
||||
|
||||
$Log = new Log(_('Actualizar Clave Maestra'));
|
||||
|
||||
if (ConfigDB::writeConfig()) {
|
||||
$Log->addDescription(_('Clave maestra actualizada'));
|
||||
$Log->writeLog();
|
||||
|
||||
$Json->setStatus(0);
|
||||
Email::sendEmail($Log);
|
||||
} else {
|
||||
$Log->setLogLevel(Log::ERROR);
|
||||
$Log->addDescription(_('Error al guardar el hash de la clave maestra'));
|
||||
$Log->writeLog();
|
||||
|
||||
Email::sendEmail($Log);
|
||||
}
|
||||
|
||||
$Json->setDescription($Log->getDescription());
|
||||
Json::returnJson($Json);
|
||||
} elseif ($actionId === ActionsInterface::ACTION_CFG_ENCRYPTION_TEMPPASS) {
|
||||
$tempMasterMaxTime = Request::analyze('tmpass_maxtime', 3600);
|
||||
$tempMasterPass = CryptMasterPass::setTempMasterPass($tempMasterMaxTime);
|
||||
|
||||
$Log = new Log('Generar Clave Temporal');
|
||||
|
||||
if ($tempMasterPass !== false && !empty($tempMasterPass)) {
|
||||
$Log->addDescription(_('Clave Temporal Generada'));
|
||||
$Log->addDetails(Html::strongText(_('Clave')), $tempMasterPass);
|
||||
$Log->writeLog();
|
||||
|
||||
Email::sendEmail($Log);
|
||||
|
||||
$Json->setStatus(0);
|
||||
} else {
|
||||
$Log->setLogLevel(Log::ERROR);
|
||||
$Log->addDescription(_('Error al generar clave temporal'));
|
||||
$Log->writeLog();
|
||||
|
||||
Email::sendEmail($Log);
|
||||
}
|
||||
|
||||
$Json->setDescription($Log->getDescription());
|
||||
Json::returnJson($Json);
|
||||
} else {
|
||||
$Json->setDescription(_('Acción Inválida'));
|
||||
Json::returnJson($Json);
|
||||
}
|
||||
$Controller = new ConfigActionController();
|
||||
$Controller->doAction();
|
||||
|
||||
536
inc/SP/Controller/ConfigActionController.class.php
Normal file
536
inc/SP/Controller/ConfigActionController.class.php
Normal file
@@ -0,0 +1,536 @@
|
||||
<?php
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @copyright 2012-2017, 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\Controller;
|
||||
|
||||
use SP\Account\Account;
|
||||
use SP\Account\AccountHistory;
|
||||
use SP\Config\Config;
|
||||
use SP\Config\ConfigDB;
|
||||
use SP\Core\ActionsInterface;
|
||||
use SP\Core\Crypt;
|
||||
use SP\Core\CryptMasterPass;
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\Core\Session;
|
||||
use SP\Html\Html;
|
||||
use SP\Http\Request;
|
||||
use SP\Log\Email;
|
||||
use SP\Log\Log;
|
||||
use SP\Mgmt\CustomFields\CustomFieldsUtil;
|
||||
use SP\Mgmt\Users\UserPass;
|
||||
use SP\Util\Checks;
|
||||
use SP\Util\Json;
|
||||
use SP\Util\Util;
|
||||
|
||||
/**
|
||||
* Class ConfigActionController
|
||||
*
|
||||
* @package SP\Controller
|
||||
*/
|
||||
class ConfigActionController implements ItemControllerInterface
|
||||
{
|
||||
use RequestControllerTrait;
|
||||
|
||||
/**
|
||||
* ConfigActionController constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->init();
|
||||
}
|
||||
|
||||
/**
|
||||
* Realizar la acción solicitada en la la petición HTTP
|
||||
*
|
||||
* @throws \SP\Core\Exceptions\SPException
|
||||
*/
|
||||
public function doAction()
|
||||
{
|
||||
try {
|
||||
switch ($this->actionId) {
|
||||
case ActionsInterface::ACTION_CFG_GENERAL:
|
||||
$this->generalAction();
|
||||
break;
|
||||
case ActionsInterface::ACTION_CFG_WIKI:
|
||||
$this->wikiAction();
|
||||
break;
|
||||
case ActionsInterface::ACTION_CFG_LDAP:
|
||||
$this->ldapAction();
|
||||
break;
|
||||
case ActionsInterface::ACTION_CFG_MAIL:
|
||||
$this->mailAction();
|
||||
break;
|
||||
case ActionsInterface::ACTION_CFG_ENCRYPTION:
|
||||
$this->masterPassAction();
|
||||
break;
|
||||
case ActionsInterface::ACTION_CFG_ENCRYPTION_TEMPPASS:
|
||||
$this->tempMasterPassAction();
|
||||
break;
|
||||
default:
|
||||
$this->invalidAction();
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
$this->jsonResponse->setDescription($e->getMessage());
|
||||
}
|
||||
|
||||
Json::returnJson($this->jsonResponse);
|
||||
}
|
||||
|
||||
/**
|
||||
* Accion para opciones configuración general
|
||||
*
|
||||
* @throws \SP\Core\Exceptions\SPException
|
||||
*/
|
||||
protected function generalAction()
|
||||
{
|
||||
$Log = Log::newLog(_('Modificar Configuración'));
|
||||
$Config = Session::getConfig();
|
||||
|
||||
// General
|
||||
$siteLang = Request::analyze('sitelang');
|
||||
$siteTheme = Request::analyze('sitetheme', 'material-blue');
|
||||
$sessionTimeout = Request::analyze('session_timeout', 300);
|
||||
$httpsEnabled = Request::analyze('https_enabled', false, false, true);
|
||||
$debugEnabled = Request::analyze('debug', false, false, true);
|
||||
$maintenanceEnabled = Request::analyze('maintenance', false, false, true);
|
||||
$checkUpdatesEnabled = Request::analyze('updates', false, false, true);
|
||||
$checkNoticesEnabled = Request::analyze('notices', false, false, true);
|
||||
|
||||
$Config->setSiteLang($siteLang);
|
||||
$Config->setSiteTheme($siteTheme);
|
||||
$Config->setSessionTimeout($sessionTimeout);
|
||||
$Config->setHttpsEnabled($httpsEnabled);
|
||||
$Config->setDebug($debugEnabled);
|
||||
$Config->setMaintenance($maintenanceEnabled);
|
||||
$Config->setCheckUpdates($checkUpdatesEnabled);
|
||||
$Config->setChecknotices($checkNoticesEnabled);
|
||||
|
||||
// Events
|
||||
$logEnabled = Request::analyze('log_enabled', false, false, true);
|
||||
$syslogEnabled = Request::analyze('syslog_enabled', false, false, true);
|
||||
$remoteSyslogEnabled = Request::analyze('remotesyslog_enabled', false, false, true);
|
||||
$syslogServer = Request::analyze('remotesyslog_server');
|
||||
$syslogPort = Request::analyze('remotesyslog_port', 0);
|
||||
|
||||
$Config->setLogEnabled($logEnabled);
|
||||
$Config->setSyslogEnabled($syslogEnabled);
|
||||
|
||||
if ($remoteSyslogEnabled && (!$syslogServer || !$syslogPort)) {
|
||||
$this->jsonResponse->setDescription(_('Faltan parámetros de syslog remoto'));
|
||||
return;
|
||||
} elseif ($remoteSyslogEnabled) {
|
||||
$Config->setSyslogRemoteEnabled($remoteSyslogEnabled);
|
||||
$Config->setSyslogServer($syslogServer);
|
||||
$Config->setSyslogPort($syslogPort);
|
||||
} else {
|
||||
$Config->setSyslogRemoteEnabled(false);
|
||||
|
||||
$Log->addDescription(_('Syslog remoto deshabilitado'));
|
||||
}
|
||||
|
||||
// Accounts
|
||||
$globalSearchEnabled = Request::analyze('globalsearch', false, false, true);
|
||||
$accountPassToImageEnabled = Request::analyze('account_passtoimage', false, false, true);
|
||||
$accountLinkEnabled = Request::analyze('account_link', false, false, true);
|
||||
$accountCount = Request::analyze('account_count', 10);
|
||||
$resultsAsCardsEnabled = Request::analyze('resultsascards', false, false, true);
|
||||
|
||||
$Config->setGlobalSearch($globalSearchEnabled);
|
||||
$Config->setAccountPassToImage($accountPassToImageEnabled);
|
||||
$Config->setAccountLink($accountLinkEnabled);
|
||||
$Config->setAccountCount($accountCount);
|
||||
$Config->setResultsAsCards($resultsAsCardsEnabled);
|
||||
|
||||
// Files
|
||||
$filesEnabled = Request::analyze('files_enabled', false, false, true);
|
||||
$filesAllowedSize = Request::analyze('files_allowed_size', 1024);
|
||||
$filesAllowedExts = Request::analyze('files_allowed_exts');
|
||||
|
||||
if ($filesEnabled && $filesAllowedSize >= 16384) {
|
||||
$this->jsonResponse->setDescription(_('El tamaño máximo por archivo es de 16MB'));
|
||||
Json::returnJson($this->jsonResponse);
|
||||
}
|
||||
|
||||
if (!empty($filesAllowedExts)) {
|
||||
$exts = explode(',', $filesAllowedExts);
|
||||
array_walk($exts, function (&$value) {
|
||||
if (preg_match('/[^a-z0-9_-]+/i', $value)) {
|
||||
$this->jsonResponse->setDescription(sprintf('%s: %s', _('Extensión no permitida'), $value));
|
||||
Json::returnJson($this->jsonResponse);
|
||||
}
|
||||
});
|
||||
$Config->setFilesAllowedExts($exts);
|
||||
} else {
|
||||
$Config->setFilesAllowedExts([]);
|
||||
}
|
||||
|
||||
$Config->setFilesEnabled($filesEnabled);
|
||||
$Config->setFilesAllowedSize($filesAllowedSize);
|
||||
|
||||
// Public Links
|
||||
$pubLinksEnabled = Request::analyze('publinks_enabled', false, false, true);
|
||||
$pubLinksImageEnabled = Request::analyze('publinks_image_enabled', false, false, true);
|
||||
$pubLinksMaxTime = Request::analyze('publinks_maxtime', 10);
|
||||
$pubLinksMaxViews = Request::analyze('publinks_maxviews', 3);
|
||||
|
||||
$Config->setPublinksEnabled($pubLinksEnabled);
|
||||
$Config->setPublinksImageEnabled($pubLinksImageEnabled);
|
||||
$Config->setPublinksMaxTime($pubLinksMaxTime * 60);
|
||||
$Config->setPublinksMaxViews($pubLinksMaxViews);
|
||||
|
||||
// Proxy
|
||||
$proxyEnabled = Request::analyze('proxy_enabled', false, false, true);
|
||||
$proxyServer = Request::analyze('proxy_server');
|
||||
$proxyPort = Request::analyze('proxy_port', 0);
|
||||
$proxyUser = Request::analyze('proxy_user');
|
||||
$proxyPass = Request::analyzeEncrypted('proxy_pass');
|
||||
|
||||
|
||||
// Valores para Proxy
|
||||
if ($proxyEnabled && (!$proxyServer || !$proxyPort)) {
|
||||
$this->jsonResponse->setDescription(_('Faltan parámetros de Proxy'));
|
||||
return;
|
||||
} elseif ($proxyEnabled) {
|
||||
$Config->setProxyEnabled(true);
|
||||
$Config->setProxyServer($proxyServer);
|
||||
$Config->setProxyPort($proxyPort);
|
||||
$Config->setProxyUser($proxyUser);
|
||||
$Config->setProxyPass($proxyPass);
|
||||
|
||||
$Log->addDescription(_('Proxy habiltado'));
|
||||
} else {
|
||||
$Config->setProxyEnabled(false);
|
||||
|
||||
$Log->addDescription(_('Proxy deshabilitado'));
|
||||
}
|
||||
|
||||
$Log->addDetails(_('Sección'), _('General'));
|
||||
|
||||
// Recargar la aplicación completa para establecer nuevos valores
|
||||
Util::reload();
|
||||
|
||||
$this->saveConfig($Log);
|
||||
}
|
||||
|
||||
/**
|
||||
* Guardar la configuración
|
||||
*
|
||||
* @param Log $Log instancia de Log
|
||||
* @throws \SP\Core\Exceptions\SPException
|
||||
*/
|
||||
protected function saveConfig(Log $Log)
|
||||
{
|
||||
try {
|
||||
Config::saveConfig();
|
||||
|
||||
$this->jsonResponse->setStatus(0);
|
||||
$this->jsonResponse->setDescription(_('Configuración actualizada'));
|
||||
} catch (SPException $e) {
|
||||
$Log->addDescription(_('Error al guardar la configuración'));
|
||||
$Log->addDetails($e->getMessage(), $e->getHint());
|
||||
|
||||
$this->jsonResponse->setDescription($e->getMessage());
|
||||
}
|
||||
|
||||
$Log->writeLog();
|
||||
Email::sendEmail($Log);
|
||||
}
|
||||
|
||||
/**
|
||||
* Acción para opciones de Wiki
|
||||
*
|
||||
* @throws \SP\Core\Exceptions\SPException
|
||||
*/
|
||||
protected function wikiAction()
|
||||
{
|
||||
$Log = Log::newLog(_('Modificar Configuración'));
|
||||
$Config = Session::getConfig();
|
||||
|
||||
// Wiki
|
||||
$wikiEnabled = Request::analyze('wiki_enabled', false, false, true);
|
||||
$wikiSearchUrl = Request::analyze('wiki_searchurl');
|
||||
$wikiPageUrl = Request::analyze('wiki_pageurl');
|
||||
$wikiFilter = Request::analyze('wiki_filter');
|
||||
|
||||
// Valores para la conexión a la Wiki
|
||||
if ($wikiEnabled && (!$wikiSearchUrl || !$wikiPageUrl || !$wikiFilter)) {
|
||||
$this->jsonResponse->setDescription(_('Faltan parámetros de Wiki'));
|
||||
return;
|
||||
} elseif ($wikiEnabled) {
|
||||
$Config->setWikiEnabled(true);
|
||||
$Config->setWikiSearchurl($wikiSearchUrl);
|
||||
$Config->setWikiPageurl($wikiPageUrl);
|
||||
$Config->setWikiFilter(explode(',', $wikiFilter));
|
||||
|
||||
$Log->addDescription(_('Wiki habiltada'));
|
||||
} else {
|
||||
$Config->setWikiEnabled(false);
|
||||
|
||||
$Log->addDescription(_('Wiki deshabilitada'));
|
||||
}
|
||||
|
||||
// DokuWiki
|
||||
$dokuWikiEnabled = Request::analyze('dokuwiki_enabled', false, false, true);
|
||||
$dokuWikiUrl = Request::analyze('dokuwiki_url');
|
||||
$dokuWikiUrlBase = Request::analyze('dokuwiki_urlbase');
|
||||
$dokuWikiUser = Request::analyze('dokuwiki_user');
|
||||
$dokuWikiPass = Request::analyzeEncrypted('dokuwiki_pass');
|
||||
$dokuWikiNamespace = Request::analyze('dokuwiki_namespace');
|
||||
|
||||
// Valores para la conexión a la API de DokuWiki
|
||||
if ($dokuWikiEnabled && (!$dokuWikiUrl || !$dokuWikiUrlBase)) {
|
||||
$this->jsonResponse->setDescription(_('Faltan parámetros de DokuWiki'));
|
||||
return;
|
||||
} elseif ($dokuWikiEnabled) {
|
||||
$Config->setDokuwikiEnabled(true);
|
||||
$Config->setDokuwikiUrl($dokuWikiUrl);
|
||||
$Config->setDokuwikiUrlBase(trim($dokuWikiUrlBase, '/'));
|
||||
$Config->setDokuwikiUser($dokuWikiUser);
|
||||
$Config->setDokuwikiPass($dokuWikiPass);
|
||||
$Config->setDokuwikiNamespace($dokuWikiNamespace);
|
||||
|
||||
$Log->addDescription(_('DokuWiki habiltada'));
|
||||
} else {
|
||||
$Config->setDokuwikiEnabled(false);
|
||||
|
||||
$Log->addDescription(_('DokuWiki deshabilitada'));
|
||||
}
|
||||
|
||||
$Log->addDetails(_('Sección'), _('Wiki'));
|
||||
|
||||
$this->saveConfig($Log);
|
||||
}
|
||||
|
||||
/**
|
||||
* Acción para opciones de LDAP
|
||||
*
|
||||
* @throws \SP\Core\Exceptions\SPException
|
||||
*/
|
||||
protected function ldapAction()
|
||||
{
|
||||
$Log = Log::newLog(_('Modificar Configuración'));
|
||||
$Config = Session::getConfig();
|
||||
|
||||
// LDAP
|
||||
$ldapEnabled = Request::analyze('ldap_enabled', false, false, true);
|
||||
$ldapADSEnabled = Request::analyze('ldap_ads', false, false, true);
|
||||
$ldapServer = Request::analyze('ldap_server');
|
||||
$ldapBase = Request::analyze('ldap_base');
|
||||
$ldapGroup = Request::analyze('ldap_group');
|
||||
$ldapDefaultGroup = Request::analyze('ldap_defaultgroup', 0);
|
||||
$ldapDefaultProfile = Request::analyze('ldap_defaultprofile', 0);
|
||||
$ldapBindUser = Request::analyze('ldap_binduser');
|
||||
$ldapBindPass = Request::analyzeEncrypted('ldap_bindpass');
|
||||
|
||||
// Valores para la configuración de LDAP
|
||||
if ($ldapEnabled && (!$ldapServer || !$ldapBase || !$ldapBindUser)) {
|
||||
$this->jsonResponse->setDescription(_('Faltan parámetros de LDAP'));
|
||||
return;
|
||||
} elseif ($ldapEnabled) {
|
||||
$Config->setLdapEnabled(true);
|
||||
$Config->setLdapAds($ldapADSEnabled);
|
||||
$Config->setLdapServer($ldapServer);
|
||||
$Config->setLdapBase($ldapBase);
|
||||
$Config->setLdapGroup($ldapGroup);
|
||||
$Config->setLdapDefaultGroup($ldapDefaultGroup);
|
||||
$Config->setLdapDefaultProfile($ldapDefaultProfile);
|
||||
$Config->setLdapBindUser($ldapBindUser);
|
||||
$Config->setLdapBindPass($ldapBindPass);
|
||||
|
||||
$Log->addDescription(_('LDAP habiltado'));
|
||||
} else {
|
||||
$Config->setLdapEnabled(false);
|
||||
|
||||
$Log->addDescription(_('LDAP deshabilitado'));
|
||||
}
|
||||
|
||||
$Log->addDetails(_('Sección'), _('LDAP'));
|
||||
|
||||
$this->saveConfig($Log);
|
||||
}
|
||||
|
||||
/**
|
||||
* Accion para opciones de correo
|
||||
*
|
||||
* @throws \SP\Core\Exceptions\SPException
|
||||
*/
|
||||
protected function mailAction()
|
||||
{
|
||||
$Log = Log::newLog(_('Modificar Configuración'));
|
||||
$Config = Session::getConfig();
|
||||
|
||||
// Mail
|
||||
$mailEnabled = Request::analyze('mail_enabled', false, false, true);
|
||||
$mailServer = Request::analyze('mail_server');
|
||||
$mailPort = Request::analyze('mail_port', 25);
|
||||
$mailUser = Request::analyze('mail_user');
|
||||
$mailPass = Request::analyzeEncrypted('mail_pass');
|
||||
$mailSecurity = Request::analyze('mail_security');
|
||||
$mailFrom = Request::analyze('mail_from');
|
||||
$mailRequests = Request::analyze('mail_requestsenabled', false, false, true);
|
||||
$mailAuth = Request::analyze('mail_authenabled', false, false, true);
|
||||
|
||||
// Valores para la configuración del Correo
|
||||
if ($mailEnabled && (!$mailServer || !$mailFrom)) {
|
||||
$this->jsonResponse->setDescription(_('Faltan parámetros de Correo'));
|
||||
return;
|
||||
} elseif ($mailEnabled) {
|
||||
$Config->setMailEnabled(true);
|
||||
$Config->setMailRequestsEnabled($mailRequests);
|
||||
$Config->setMailServer($mailServer);
|
||||
$Config->setMailPort($mailPort);
|
||||
$Config->setMailSecurity($mailSecurity);
|
||||
$Config->setMailFrom($mailFrom);
|
||||
|
||||
if ($mailAuth) {
|
||||
$Config->setMailAuthenabled($mailAuth);
|
||||
$Config->setMailUser($mailUser);
|
||||
$Config->setMailPass($mailPass);
|
||||
}
|
||||
|
||||
$Log->addDescription(_('Correo habiltado'));
|
||||
} else {
|
||||
$Config->setMailEnabled(false);
|
||||
$Config->setMailRequestsEnabled(false);
|
||||
$Config->setMailAuthenabled(false);
|
||||
|
||||
$Log->addDescription(_('Correo deshabilitado'));
|
||||
}
|
||||
|
||||
$Log->addDetails(_('Sección'), _('Correo'));
|
||||
|
||||
$this->saveConfig($Log);
|
||||
}
|
||||
|
||||
/**
|
||||
* Acción para cambio de clave maestra
|
||||
*
|
||||
* @throws \SP\Core\Exceptions\SPException
|
||||
*/
|
||||
protected function masterPassAction()
|
||||
{
|
||||
$currentMasterPass = Request::analyzeEncrypted('curMasterPwd');
|
||||
$newMasterPass = Request::analyzeEncrypted('newMasterPwd');
|
||||
$newMasterPassR = Request::analyzeEncrypted('newMasterPwdR');
|
||||
$confirmPassChange = Request::analyze('confirmPassChange', 0, false, 1);
|
||||
$noAccountPassChange = Request::analyze('chkNoAccountChange', 0, false, 1);
|
||||
|
||||
if (!UserPass::getItem(Session::getUserData())->checkUserUpdateMPass()) {
|
||||
$this->jsonResponse->setDescription(_('Clave maestra actualizada'));
|
||||
$this->jsonResponse->addMessage(_('Reinicie la sesión para cambiarla'));
|
||||
return;
|
||||
} elseif ($newMasterPass === '' && $currentMasterPass === '') {
|
||||
$this->jsonResponse->setDescription(_('Clave maestra no indicada'));
|
||||
return;
|
||||
} elseif ($confirmPassChange === 0) {
|
||||
$this->jsonResponse->setDescription(_('Se ha de confirmar el cambio de clave'));
|
||||
return;
|
||||
}
|
||||
|
||||
if ($newMasterPass === $currentMasterPass) {
|
||||
$this->jsonResponse->setDescription(_('Las claves son idénticas'));
|
||||
return;
|
||||
} elseif ($newMasterPass !== $newMasterPassR) {
|
||||
$this->jsonResponse->setDescription(_('Las claves maestras no coinciden'));
|
||||
return;
|
||||
} elseif (!Crypt::checkHashPass($currentMasterPass, ConfigDB::getValue('masterPwd'), true)) {
|
||||
$this->jsonResponse->setDescription(_('La clave maestra actual no coincide'));
|
||||
return;
|
||||
}
|
||||
|
||||
if (Checks::demoIsEnabled()) {
|
||||
$this->jsonResponse->setDescription(_('Ey, esto es una DEMO!!'));
|
||||
return;
|
||||
}
|
||||
|
||||
$hashMPass = Crypt::mkHashPassword($newMasterPass);
|
||||
|
||||
if (!$noAccountPassChange) {
|
||||
$Account = new Account();
|
||||
|
||||
if (!$Account->updateAccountsMasterPass($currentMasterPass, $newMasterPass)) {
|
||||
$this->jsonResponse->setDescription(_('Errores al actualizar las claves de las cuentas'));
|
||||
return;
|
||||
}
|
||||
|
||||
$AccountHistory = new AccountHistory();
|
||||
|
||||
if (!$AccountHistory->updateAccountsMasterPass($currentMasterPass, $newMasterPass, $hashMPass)) {
|
||||
$this->jsonResponse->setDescription(_('Errores al actualizar las claves de las cuentas del histórico'));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!CustomFieldsUtil::updateCustomFieldsCrypt($currentMasterPass, $newMasterPass)) {
|
||||
$this->jsonResponse->setDescription(_('Errores al actualizar datos de campos personalizados'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
ConfigDB::setCacheConfigValue('masterPwd', $hashMPass);
|
||||
ConfigDB::setCacheConfigValue('lastupdatempass', time());
|
||||
|
||||
$Log = new Log(_('Actualizar Clave Maestra'));
|
||||
|
||||
if (ConfigDB::writeConfig()) {
|
||||
$Log->addDescription(_('Clave maestra actualizada'));
|
||||
|
||||
$this->jsonResponse->setStatus(0);
|
||||
} else {
|
||||
$Log->setLogLevel(Log::ERROR);
|
||||
$Log->addDescription(_('Error al guardar el hash de la clave maestra'));
|
||||
}
|
||||
|
||||
$this->jsonResponse->setDescription($Log->getDescription());
|
||||
|
||||
$Log->writeLog();
|
||||
Email::sendEmail($Log);
|
||||
}
|
||||
|
||||
/**
|
||||
* Acción para generarclave maestra temporal
|
||||
*/
|
||||
protected function tempMasterPassAction()
|
||||
{
|
||||
$tempMasterMaxTime = Request::analyze('tmpass_maxtime', 3600);
|
||||
$tempMasterPass = CryptMasterPass::setTempMasterPass($tempMasterMaxTime);
|
||||
|
||||
$Log = new Log('Generar Clave Temporal');
|
||||
|
||||
if ($tempMasterPass !== false && !empty($tempMasterPass)) {
|
||||
$Log->addDescription(_('Clave Temporal Generada'));
|
||||
$Log->addDetails(Html::strongText(_('Clave')), $tempMasterPass);
|
||||
|
||||
$this->jsonResponse->setStatus(0);
|
||||
} else {
|
||||
$Log->setLogLevel(Log::ERROR);
|
||||
$Log->addDescription(_('Error al generar clave temporal'));
|
||||
|
||||
}
|
||||
|
||||
$this->jsonResponse->setDescription($Log->getDescription());
|
||||
|
||||
$Log->writeLog();
|
||||
Email::sendEmail($Log);
|
||||
}
|
||||
}
|
||||
@@ -606,7 +606,7 @@ class ItemActionController implements ItemControllerInterface
|
||||
* @throws \SP\Core\Exceptions\ValidationException
|
||||
* @throws \SP\Core\Exceptions\SPException
|
||||
*/
|
||||
private function favoriteAction()
|
||||
protected function favoriteAction()
|
||||
{
|
||||
$userId = Session::getUserData()->getUserId();
|
||||
|
||||
@@ -629,7 +629,7 @@ class ItemActionController implements ItemControllerInterface
|
||||
/**
|
||||
* Importar usuarios de LDAP
|
||||
*/
|
||||
private function ldapImportAction()
|
||||
protected function ldapImportAction()
|
||||
{
|
||||
if (UserLdapSync::run()) {
|
||||
$this->jsonResponse->setStatus(0);
|
||||
@@ -645,8 +645,10 @@ class ItemActionController implements ItemControllerInterface
|
||||
|
||||
/**
|
||||
* Acciones sobre plugins
|
||||
*
|
||||
* @throws \SP\Core\Exceptions\SPException
|
||||
*/
|
||||
private function pluginAction()
|
||||
protected function pluginAction()
|
||||
{
|
||||
$PluginData = new PluginData();
|
||||
$PluginData->setPluginId($this->itemId);
|
||||
|
||||
@@ -391,6 +391,7 @@ class MainController extends ControllerBase implements ActionsInterface
|
||||
$this->view->addTemplate('update');
|
||||
|
||||
$this->view->assign('hasUpdates', false);
|
||||
$this->view->assign('updateStatus', null);
|
||||
|
||||
if (Config::getConfig()->isCheckUpdates()) {
|
||||
$updates = Util::checkUpdates();
|
||||
|
||||
@@ -5,8 +5,11 @@
|
||||
?>
|
||||
<div id="tabs-<?php echo $config_tabIndex; ?>" class="mdl-tabs__panel">
|
||||
<div class="tab-data">
|
||||
<form method="post" name="frmConfig" id="frmConfig" class="form-action" data-onsubmit="config/save"
|
||||
data-type="general" data-hash="">
|
||||
<form method="post" name="frmConfig" id="frmConfig" class="form-action"
|
||||
data-onsubmit="config/save"
|
||||
data-type="general"
|
||||
data-reload="1"
|
||||
data-hash="">
|
||||
|
||||
<?php include $this->includeTemplate('general-site');; ?>
|
||||
<?php include $this->includeTemplate('general-events'); ?>
|
||||
|
||||
@@ -72,6 +72,20 @@ use SP\Core\Session; ?>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="descField">
|
||||
<?php echo _('Clave Maestra'); ?>
|
||||
</td>
|
||||
<td class="valField">
|
||||
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
|
||||
<input id="masterPwd" name="masterPwd" type="password"
|
||||
class="mdl-textfield__input mdl-color-text--indigo-400 passwordfield__input-show"
|
||||
maxlength="255" />
|
||||
<label class="mdl-textfield__label"
|
||||
for="masterPwd"><?php echo _('Clave Maestra'); ?></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="descField">
|
||||
<?php echo _('Delimitador CSV'); ?>
|
||||
|
||||
@@ -7,7 +7,9 @@
|
||||
<?php echo _('LDAP'); ?>
|
||||
</div>
|
||||
|
||||
<form method="post" name="frmLdap" id="frmLdap" class="form-action" data-onsubmit="config/save" data-type="ldap"
|
||||
<form method="post" name="frmLdap" id="frmLdap" class="form-action"
|
||||
data-onsubmit="config/save"
|
||||
data-type="ldap"
|
||||
data-hash="">
|
||||
<table id="tblLdap" class="data tblConfig round">
|
||||
<?php if ($ldapIsAvailable || $isDemoMode): ?>
|
||||
|
||||
@@ -420,9 +420,9 @@ sysPass.Actions = function (Common) {
|
||||
Common.msg.out(json);
|
||||
|
||||
if (json.status === 0) {
|
||||
if ($obj.data("nextaction-id") !== "undefined") {
|
||||
if ($obj.data("nextaction-id") !== undefined) {
|
||||
doAction({actionId: $obj.data("nextaction-id"), itemId: $obj.data("activetab")});
|
||||
} else {
|
||||
} else if ($obj.data("reload") !== undefined) {
|
||||
setTimeout(function () {
|
||||
Common.redirect("index.php");
|
||||
}, 2000);
|
||||
@@ -440,7 +440,7 @@ sysPass.Actions = function (Common) {
|
||||
Common.appRequests().getActionCall(opts, function (json) {
|
||||
Common.msg.out(json);
|
||||
|
||||
if (json.status === 0 && $obj.data("nextaction-id") !== "undefined") {
|
||||
if (json.status === 0 && $obj.data("nextaction-id") !== undefined) {
|
||||
doAction({actionId: $obj.data("nextaction-id"), itemId: $obj.data("activetab")});
|
||||
}
|
||||
});
|
||||
@@ -455,7 +455,7 @@ sysPass.Actions = function (Common) {
|
||||
Common.appRequests().getActionCall(opts, function (json) {
|
||||
Common.msg.out(json);
|
||||
|
||||
if (json.status === 0 && $obj.data("nextaction-id") !== "undefined") {
|
||||
if (json.status === 0 && $obj.data("nextaction-id") !== undefined) {
|
||||
doAction({actionId: $obj.data("nextaction-id"), itemId: $obj.data("activetab")});
|
||||
}
|
||||
});
|
||||
@@ -470,7 +470,7 @@ sysPass.Actions = function (Common) {
|
||||
Common.appRequests().getActionCall(opts, function (json) {
|
||||
Common.msg.out(json);
|
||||
|
||||
if (json.status === 0 && typeof $obj.data("nextaction-id") !== "undefined") {
|
||||
if (json.status === 0 && $obj.data("nextaction-id") !== undefined) {
|
||||
doAction({actionId: $obj.data("nextaction-id"), itemId: $obj.data("activetab")});
|
||||
}
|
||||
});
|
||||
@@ -492,7 +492,7 @@ sysPass.Actions = function (Common) {
|
||||
opts.data = {fileId: $obj.data("item-id"), sk: Common.sk.get(), actionId: $obj.data("action-id")};
|
||||
|
||||
Common.appRequests().getActionCall(opts, function (response) {
|
||||
if (typeof response.status !== "undefined" && response.status === 1) {
|
||||
if (response.status !== undefined && response.status === 1) {
|
||||
Common.msg.out(response);
|
||||
return;
|
||||
}
|
||||
@@ -733,7 +733,7 @@ sysPass.Actions = function (Common) {
|
||||
|
||||
var response = Common.appRequests().getActionCall(opts);
|
||||
|
||||
if (typeof response.responseJSON.csrf !== "undefined") {
|
||||
if (response.responseJSON.csrf !== undefined) {
|
||||
Common.sk.set(response.responseJSON.csrf);
|
||||
}
|
||||
|
||||
@@ -873,7 +873,7 @@ sysPass.Actions = function (Common) {
|
||||
show: function ($obj) {
|
||||
log.info("appMgmt:show");
|
||||
|
||||
if ($obj.data("item-dst") || $obj.data("activetab") === "undefined") {
|
||||
if ($obj.data("item-dst") || $obj.data("activetab") === undefined) {
|
||||
log.info($obj.data("activetab"));
|
||||
|
||||
appMgmt.refreshTab = false;
|
||||
@@ -1041,7 +1041,7 @@ sysPass.Actions = function (Common) {
|
||||
*/
|
||||
var eventlog = {
|
||||
nav: function ($obj) {
|
||||
if (typeof $obj.data("start") === "undefined") {
|
||||
if ($obj.data("start") === undefined) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
20
js/app-actions.min.js
vendored
20
js/app-actions.min.js
vendored
@@ -11,24 +11,24 @@ a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);0==a.stat
|
||||
{show:function(a){d.info("account:show");g({actionId:a.data("action-id"),itemId:a.data("item-id")})},showHistory:function(a){d.info("account:showHistory");g({actionId:a.data("action-id"),itemId:a.val()})},edit:function(a){d.info("account:edit");g({actionId:a.data("action-id"),itemId:a.data("item-id")})},"delete":function(a){d.info("account:delete");var b='<div id="alert"><p id="alert-text">'+c.config().LANG[3]+"</p></div>";showDialog({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();
|
||||
c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b=c.appRequests().getRequestOpts();b.url=e.account.save;b.data={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get()};c.appRequests().getActionCall(b,function(a){c.msg.out(a);l.search()})}}})},showpass:function(a){d.info("account:showpass");var b=a.data("parent-id"),f=c.appRequests().getRequestOpts();f.url=e.appMgmt.show;f.data={itemId:0==b?a.data("item-id"):b,actionId:a.data("action-id"),isHistory:a.data("history"),
|
||||
isFull:1,sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(f,function(b){0!==b.status?c.msg.out(b):(b=$(b.data.html),p(a,b),b.on("mouseleave",function(){clearTimeout(h);h=setTimeout(function(){$.magnificPopup.close()},3E4)}).on("mouseenter",function(){0!==h&&clearTimeout(h)}))})},copypass:function(a){d.info("account:copypass");var b=a.data("parent-id"),f=c.appRequests().getRequestOpts();f.url=e.appMgmt.show;f.async=!1;f.data={itemId:0==b?a.data("item-id"):b,actionId:a.data("action-id"),isHistory:a.data("history"),
|
||||
isFull:0,sk:c.sk.get(),isAjax:1};a=c.appRequests().getActionCall(f);"undefined"!==typeof a.responseJSON.csrf&&c.sk.set(a.responseJSON.csrf);return a},copy:function(a){d.info("account:copy");g({actionId:a.data("action-id"),itemId:a.data("item-id")})},savefavorite:function(a,b){d.info("account:saveFavorite");var f="on"===a.data("status"),k={actionId:f?a.data("action-id-off"):a.data("action-id-on"),itemId:a.data("item-id"),sk:c.sk.get(),isAjax:1},g=c.appRequests().getRequestOpts();g.url=e.account.saveFavorite;
|
||||
g.data=k;c.appRequests().getActionCall(g,function(d){c.msg.out(d);0===d.status&&(a.data("status",f?"off":"on"),"function"===typeof b&&b())})},request:function(a){d.info("account:request");var b=c.appRequests().getRequestOpts();b.url=e.account.request;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a)})},menu:function(a){a.hide();a.parent().children(".actions-optional").show(250)},sort:function(a){d.info("account:sort");var c=$("#frmSearch");c.find('input[name="skey"]').val(a.data("key"));
|
||||
isFull:0,sk:c.sk.get(),isAjax:1};a=c.appRequests().getActionCall(f);void 0!==a.responseJSON.csrf&&c.sk.set(a.responseJSON.csrf);return a},copy:function(a){d.info("account:copy");g({actionId:a.data("action-id"),itemId:a.data("item-id")})},savefavorite:function(a,b){d.info("account:saveFavorite");var f="on"===a.data("status"),k={actionId:f?a.data("action-id-off"):a.data("action-id-on"),itemId:a.data("item-id"),sk:c.sk.get(),isAjax:1},g=c.appRequests().getRequestOpts();g.url=e.account.saveFavorite;g.data=
|
||||
k;c.appRequests().getActionCall(g,function(d){c.msg.out(d);0===d.status&&(a.data("status",f?"off":"on"),"function"===typeof b&&b())})},request:function(a){d.info("account:request");var b=c.appRequests().getRequestOpts();b.url=e.account.request;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a)})},menu:function(a){a.hide();a.parent().children(".actions-optional").show(250)},sort:function(a){d.info("account:sort");var c=$("#frmSearch");c.find('input[name="skey"]').val(a.data("key"));
|
||||
c.find('input[name="sorder"]').val(a.data("dir"));c.find('input[name="start"]').val(a.data("start"));l.search()},editpass:function(a){d.info("account:editpass");var c=a.data("parent-id");g({actionId:a.data("action-id"),itemId:0==c?a.data("item-id"):c})},restore:function(a){d.info("account:restore");l.save(a)},getfiles:function(a){d.info("account:getfiles");var b=c.appRequests().getRequestOpts();b.method="get";b.type="html";b.url=e.account.getFiles;b.data={id:a.data("item-id"),del:a.data("delete"),
|
||||
sk:c.sk.get()};c.appRequests().getActionCall(b,function(c){a.html(c)})},search:function(){d.info("account:search");var a=$("#frmSearch");a.find("input[name='sk']").val(c.sk.get());a.find("input[name='skey']").val();a.find("input[name='sorder']").val();var b=c.appRequests().getRequestOpts();b.url=e.account.search;b.data=a.serialize();c.appRequests().getActionCall(b,function(b){10===b.status&&c.msg.out(b);c.sk.set(b.sk);$("#res-content").empty().html(b.html);a.find("input:first").focus()})},save:function(a){d.info("account:save");
|
||||
var b=c.appRequests().getRequestOpts();b.url=e.account.save;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a)})}},n={refreshTab:!0,show:function(a){d.info("appMgmt:show");if(a.data("item-dst")||"undefined"===a.data("activetab"))d.info(a.data("activetab")),n.refreshTab=!1;var b=c.appRequests().getRequestOpts();b.url=e.appMgmt.show;b.data={itemId:a.data("item-id"),actionId:a.data("action-id"),activeTab:a.data("activetab"),sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,
|
||||
var b=c.appRequests().getRequestOpts();b.url=e.account.save;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a)})}},n={refreshTab:!0,show:function(a){d.info("appMgmt:show");if(a.data("item-dst")||void 0===a.data("activetab"))d.info(a.data("activetab")),n.refreshTab=!1;var b=c.appRequests().getRequestOpts();b.url=e.appMgmt.show;b.data={itemId:a.data("item-id"),actionId:a.data("action-id"),activeTab:a.data("activetab"),sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,
|
||||
function(b){0!==b.status?c.msg.out(b):p(a,b.data.html)})},"delete":function(a){d.info("appMgmt:delete");var b='<div id="alert"><p id="alert-text">'+c.config().LANG[12]+"</p></div>",f=a.data("selection"),k=[];if(f&&($(f).find(".is-selected").each(function(a,c){var b=$(this);k.push(b.data("item-id"))}),0===k.length))return;showDialog({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b.preventDefault();
|
||||
b=c.appRequests().getRequestOpts();b.url=e.appMgmt.save;b.data={itemId:f?k:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,function(b){c.msg.out(b);a.data("nextaction-id")&&g({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})}}})},save:function(a){d.info("appMgmt:save");var b=c.appRequests().getRequestOpts();b.url=e.appMgmt.save;b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&(!0===n.refreshTab&&
|
||||
g({actionId:a.data("nextaction-id"),itemId:a.data("activetab")}),$.magnificPopup.close())})},search:function(a){d.info("appMgmt:search");var b=$(a.data("target")),f=c.appRequests().getRequestOpts();f.url=e.appMgmt.search;f.data=a.serialize();c.appRequests().getActionCall(f,function(a){0===a.status?b.html(a.data.html):b.html(c.msg.html.error(a.description));c.sk.set(a.csrf)})},nav:function(a){d.info("appMgmt:nav");var b=$("#"+a.data("action-form"));b.find("[name='start']").val(a.data("start"));b.find("[name='count']").val(a.data("count"));
|
||||
b.find("[name='sk']").val(c.sk.get());n.search(b)},ldapSync:function(a){d.info("appMgmt:ldapSync");var b='<div id="alert"><p id="alert-text">'+c.config().LANG[57]+"</p></div>";showDialog({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b=c.appRequests().getRequestOpts();b.url=e.appMgmt.save;b.data={actionId:a.data("action-id"),sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,
|
||||
function(a){c.msg.out(a)})}}})}};return{doAction:g,appMgmt:n,account:l,file:{view:function(a){d.info("file:view");var b=c.appRequests().getRequestOpts();b.url=e.file;b.type="html";b.data={fileId:a.data("item-id"),sk:c.sk.get(),actionId:a.data("action-id")};c.appRequests().getActionCall(b,function(b){"undefined"!==typeof b.status&&1===b.status?c.msg.out(b):b?r(a,b):c.msg.error(c.config().LANG[14])})},download:function(a){d.info("file:download");a={fileId:a.data("item-id"),sk:c.sk.get(),actionId:a.data("action-id")};
|
||||
function(a){c.msg.out(a)})}}})}};return{doAction:g,appMgmt:n,account:l,file:{view:function(a){d.info("file:view");var b=c.appRequests().getRequestOpts();b.url=e.file;b.type="html";b.data={fileId:a.data("item-id"),sk:c.sk.get(),actionId:a.data("action-id")};c.appRequests().getActionCall(b,function(b){void 0!==b.status&&1===b.status?c.msg.out(b):b?r(a,b):c.msg.error(c.config().LANG[14])})},download:function(a){d.info("file:download");a={fileId:a.data("item-id"),sk:c.sk.get(),actionId:a.data("action-id")};
|
||||
$.fileDownload(c.config().APP_ROOT+e.file,{httpMethod:"POST",data:a})},"delete":function(a){d.info("file:delete");var b='<div id="alert"><p id="alert-text">'+c.config().LANG[15]+"</p></div>";showDialog({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b=c.appRequests().getRequestOpts();b.url=e.file;b.data={fileId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get()};
|
||||
c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&(a=$("#list-account-files"),l.getfiles(a))})}}})}},checks:{ldap:function(a){d.info("checks:ldap");a=$(a.data("src"));a.find("[name='sk']").val(c.sk.get());var b=c.appRequests().getRequestOpts();b.url=e.checks;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);var b=$("#ldap-results");b.find(".list-wrap").html(c.appTheme().html.getList(a.data));b.show("slow")})},wiki:function(a){d.info("checks:wiki");
|
||||
a=$(a.data("src"));a.find("[name='sk']").val(c.sk.get());var b=c.appRequests().getRequestOpts();b.url=e.checks;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&$("#dokuWikiResCheck").html(a.data)})}},config:{save:function(a){d.info("config:save");var b=c.appRequests().getRequestOpts();b.url=e.config.save;b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&("undefined"!==a.data("nextaction-id")?g({actionId:a.data("nextaction-id"),
|
||||
itemId:a.data("activetab")}):setTimeout(function(){c.redirect("index.php")},2E3))})},backup:function(a){d.info("config:backup");var b=c.appRequests().getRequestOpts();b.url=e.config["export"];b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&"undefined"!==a.data("nextaction-id")&&g({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})},"export":function(a){d.info("config:export");var b=c.appRequests().getRequestOpts();b.url=e.config["export"];b.data=
|
||||
a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&"undefined"!==a.data("nextaction-id")&&g({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})},"import":function(a){d.info("config:import");var b=c.appRequests().getRequestOpts();b.url=e.config["import"];b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&"undefined"!==typeof a.data("nextaction-id")&&g({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})}},
|
||||
a=$(a.data("src"));a.find("[name='sk']").val(c.sk.get());var b=c.appRequests().getRequestOpts();b.url=e.checks;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&$("#dokuWikiResCheck").html(a.data)})}},config:{save:function(a){d.info("config:save");var b=c.appRequests().getRequestOpts();b.url=e.config.save;b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&(void 0!==a.data("nextaction-id")?g({actionId:a.data("nextaction-id"),
|
||||
itemId:a.data("activetab")}):void 0!==a.data("reload")&&setTimeout(function(){c.redirect("index.php")},2E3))})},backup:function(a){d.info("config:backup");var b=c.appRequests().getRequestOpts();b.url=e.config["export"];b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&void 0!==a.data("nextaction-id")&&g({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})},"export":function(a){d.info("config:export");var b=c.appRequests().getRequestOpts();b.url=
|
||||
e.config["export"];b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&void 0!==a.data("nextaction-id")&&g({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})},"import":function(a){d.info("config:import");var b=c.appRequests().getRequestOpts();b.url=e.config["import"];b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&void 0!==a.data("nextaction-id")&&g({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})}},
|
||||
main:q,user:{savePreferences:function(a){d.info("user:savePreferences");var b=c.appRequests().getRequestOpts();b.url=e.user.savePreferences;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);setTimeout(function(){c.redirect("index.php")},2E3)})},saveSecurity:function(a){d.info("user:saveSecurity");var b=c.appRequests().getRequestOpts();b.url=e.user.savePreferences;b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);g({actionId:a.data("nextaction-id"),
|
||||
itemId:a.data("activetab")})})},password:function(a){d.info("user:password");var b=c.appRequests().getRequestOpts();b.type="html";b.method="get";b.url=e.user.password;b.data={actionId:a.data("action-id"),itemId:a.data("item-id"),sk:a.data("sk"),isAjax:1};c.appRequests().getActionCall(b,function(b){0===b.length?q.logout():p(a,b)})},passreset:function(a){d.info("user:passreset");var b=c.appRequests().getRequestOpts();b.url=e.user.passreset;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a)})}},
|
||||
link:{save:function(a){d.info("link:save");var b=c.appRequests().getRequestOpts();b.url=e.link;b.data={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),isAjax:1};a='<div id="alert"><p id="alert-text">'+c.config().LANG[48]+"</p></div>";showDialog({text:a,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.appRequests().getActionCall(b,function(a){c.msg.out(a)})}},positive:{title:c.config().LANG[43],onClick:function(a){a.preventDefault();b.data.notify=1;c.appRequests().getActionCall(b,
|
||||
function(a){c.msg.out(a)})}}})},refresh:function(a){d.info("link:refresh");var b={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),activeTab:a.data("activetab")},f=c.appRequests().getRequestOpts();f.url=e.link;f.data=b;c.appRequests().getActionCall(f,function(b){c.msg.out(b);0===b.status&&g({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})}},eventlog:{nav:function(a){if("undefined"===typeof a.data("start"))return!1;var b=c.appRequests().getRequestOpts();b.url=e.eventlog;
|
||||
b.type="html";b.data={start:a.data("start"),current:a.data("current")};c.appRequests().getActionCall(b,function(a){$("#content").html(a);c.scrollUp()})},clear:function(a){var b='<div id="alert"><p id="alert-text">'+c.config().LANG[20]+"</p></div>";showDialog({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b.preventDefault();b=c.appRequests().getRequestOpts();b.url=e.eventlog;
|
||||
b.data={clear:1,sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,function(b){c.msg.out(b);0==b.status&&g({actionId:a.data("nextaction-id")})})}}})}},ajaxUrl:e,plugin:{toggle:function(a){d.info("plugin:enable");var b={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),activeTab:a.data("activetab")},f=c.appRequests().getRequestOpts();f.url=e.appMgmt.save;f.data=b;c.appRequests().getActionCall(f,function(b){c.msg.out(b);0===b.status&&g({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})}}}};
|
||||
function(a){c.msg.out(a)})}}})},refresh:function(a){d.info("link:refresh");var b={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),activeTab:a.data("activetab")},f=c.appRequests().getRequestOpts();f.url=e.link;f.data=b;c.appRequests().getActionCall(f,function(b){c.msg.out(b);0===b.status&&g({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})}},eventlog:{nav:function(a){if(void 0===a.data("start"))return!1;var b=c.appRequests().getRequestOpts();b.url=e.eventlog;b.type=
|
||||
"html";b.data={start:a.data("start"),current:a.data("current")};c.appRequests().getActionCall(b,function(a){$("#content").html(a);c.scrollUp()})},clear:function(a){var b='<div id="alert"><p id="alert-text">'+c.config().LANG[20]+"</p></div>";showDialog({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b.preventDefault();b=c.appRequests().getRequestOpts();b.url=e.eventlog;b.data=
|
||||
{clear:1,sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,function(b){c.msg.out(b);0==b.status&&g({actionId:a.data("nextaction-id")})})}}})}},ajaxUrl:e,plugin:{toggle:function(a){d.info("plugin:enable");var b={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),activeTab:a.data("activetab")},f=c.appRequests().getRequestOpts();f.url=e.appMgmt.save;f.data=b;c.appRequests().getActionCall(f,function(b){c.msg.out(b);0===b.status&&g({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})}}}};
|
||||
|
||||
2
js/app-main.min.js
vendored
2
js/app-main.min.js
vendored
@@ -1,4 +1,4 @@
|
||||
var $jscomp={scope:{}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(a,f,e){if(e.get||e.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[f]=e.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_";
|
||||
var $jscomp={scope:{}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(a,f,e){if(e.get||e.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[f]=e.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_";
|
||||
$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(a){return $jscomp.SYMBOL_PREFIX+(a||"")+$jscomp.symbolCounter_++};
|
||||
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.iterator;a||(a=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&$jscomp.defineProperty(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(a){var f=0;return $jscomp.iteratorPrototype(function(){return f<a.length?{done:!1,value:a[f++]}:{done:!0}})};
|
||||
$jscomp.iteratorPrototype=function(a){$jscomp.initSymbolIterator();a={next:a};a[$jscomp.global.Symbol.iterator]=function(){return this};return a};$jscomp.array=$jscomp.array||{};$jscomp.iteratorFromArray=function(a,f){$jscomp.initSymbolIterator();a instanceof String&&(a+="");var e=0,c={next:function(){if(e<a.length){var g=e++;return{value:f(g,a[g]),done:!1}}c.next=function(){return{done:!0,value:void 0}};return c.next()}};c[Symbol.iterator]=function(){return c};return c};
|
||||
|
||||
Reference in New Issue
Block a user