* [FIX] Fixed bug when retrieving account ACL to show accesses box.

* [FIX] Fixed bug on API token deletion.
* [MOD] Improved event log management.
This commit is contained in:
nuxsmin
2017-02-01 15:39:48 +01:00
parent 4fe66db9bc
commit 3515d23f71
8 changed files with 65 additions and 53 deletions

View File

@@ -24,7 +24,6 @@
use SP\Controller\EventlogController;
use SP\Core\Init;
use SP\Core\Template;
use SP\Http\Request;
define('APP_ROOT', '..');
@@ -37,16 +36,6 @@ if (!Init::isLoggedIn()) {
\SP\Util\Util::logout();
}
$start = Request::analyze('start', 0);
$clear = Request::analyze('clear', 0);
$sk = Request::analyze('sk', false);
$Tpl = new Template();
$Tpl->assign('limitStart', $start);
$Tpl->assign('clear', $clear);
$Tpl->assign('sk', $sk);
$Tpl->assign('queryTimeStart', microtime());
$Controller = new EventlogController($Tpl);
$Controller->checkClear();
$Controller->getEventlog();
echo $Tpl->render();
$Controller = new EventlogController();
$Controller->doAction();
$Controller->view();

View File

@@ -528,9 +528,10 @@ class AccountAcl
public function isShowPermission()
{
$UserProfile = Session::getUserProfile();
$UserData = Session::getUserData();
return $this->UserData->isUserIsAdminAcc()
|| $this->UserData->isUserIsAdminApp()
return $UserData->isUserIsAdminAcc()
|| $UserData->isUserIsAdminApp()
|| $UserProfile->isAccPermission()
|| $UserProfile->isAccPrivateGroup()
|| $UserProfile->isAccPrivate();

View File

@@ -229,16 +229,16 @@ class ApiTokens
/**
* Eliminar token
*
* @throws SPException
* @param $id
*/
public function deleteToken()
public function deleteToken($id)
{
$query = /** @lang SQL */
'DELETE FROM authTokens WHERE authtoken_id = ? LIMIT 1';
$Data = new QueryData();
$Data->setQuery($query);
$Data->addParam($this->tokenId);
$Data->addParam($id);
$Data->setOnErrorMessage(__('Error interno', false));
DB::getQuery($Data);

View File

@@ -27,11 +27,13 @@ namespace SP\Controller;
defined('APP_ROOT') || die();
use SP\Core\ActionsInterface;
use SP\Core\Messages\LogMessage;
use SP\Core\SessionUtil;
use SP\Core\Template;
use SP\Html\DataGrid\DataGridActionSearch;
use SP\Html\DataGrid\DataGridActionType;
use SP\Html\DataGrid\DataGridPager;
use SP\Http\Request;
use SP\Http\Response;
use SP\Log\Log;
use SP\Util\Checks;
@@ -46,7 +48,11 @@ class EventlogController extends ControllerBase implements ActionsInterface
/**
* Número de máximo de registros por página
*/
const MAX_ROWS = 30;
const MAX_ROWS = 50;
/**
* @var
*/
protected $limitStart;
/**
* Constructor
@@ -60,6 +66,21 @@ class EventlogController extends ControllerBase implements ActionsInterface
$this->view->assign('sk', SessionUtil::getSessionKey(true));
}
/**
* Realizar las acciones del controlador
*
* @param mixed $type Tipo de acción
*/
public function doAction($type = null)
{
$this->limitStart = Request::analyze('start', 0);
$this->checkClear();
$this->getEventlog();
$this->EventDispatcher->notifyEvent('show.eventlog', $this);
}
/**
* Comprobar si es necesario limpiar el registro de eventos
*
@@ -70,27 +91,20 @@ class EventlogController extends ControllerBase implements ActionsInterface
*/
public function checkClear()
{
if ($this->view->clear
$clear = Request::analyze('clear', 0);
if ($clear === 1
&& $this->view->sk
&& SessionUtil::checkSessionKey($this->view->sk)
) {
Log::clearEvents();
Log::writeNewLogAndEmail(__('Vaciar Eventos', false), __('Vaciar registro de eventos', false), null);
Response::printJson(__('Registro de eventos vaciado', false), 0);
}
}
/**
* Realizar las accione del controlador
*
* @param mixed $type Tipo de acción
*/
public function doAction($type = null)
{
$this->getEventlog();
$this->EventDispatcher->notifyEvent('show.eventlog', $this);
}
/**
* Obtener los datos para la presentación de la tabla de eventos
*/
@@ -113,8 +127,8 @@ class EventlogController extends ControllerBase implements ActionsInterface
$this->view->assign('rowClass', 'row_even');
$this->view->assign('isDemoMode', Checks::demoIsEnabled() || !$this->UserData->isUserIsAdminApp());
$this->view->assign('limitStart', isset($this->view->limitStart) ? (int)$this->view->limitStart : 0);
$this->view->assign('events', Log::getEvents($this->view->limitStart, self::MAX_ROWS));
$this->view->assign('limitStart', $this->limitStart);
$this->view->assign('events', Log::getEvents($this->limitStart, self::MAX_ROWS));
$Pager = $this->getPager($GridActionSearch);
$Pager->setTotalRows(Log::$numRows);
@@ -133,7 +147,7 @@ class EventlogController extends ControllerBase implements ActionsInterface
$GridPager = new DataGridPager();
$GridPager->setSourceAction($sourceAction);
$GridPager->setOnClickFunction('eventlog/nav');
$GridPager->setLimitStart($this->view->limitStart);
$GridPager->setLimitStart($this->limitStart);
$GridPager->setLimitCount(self::MAX_ROWS);
$GridPager->setIconPrev($this->icons->getIconNavPrev());
$GridPager->setIconNext($this->icons->getIconNavNext());

View File

@@ -27,6 +27,7 @@ namespace SP\Controller;
use SP\Account\Account;
use SP\Account\AccountFavorites;
use SP\Account\AccountUtil;
use SP\Api\ApiTokens;
use SP\Auth\AuthUtil;
use SP\Core\ActionsInterface;
use SP\Core\Messages\LogMessage;
@@ -599,10 +600,10 @@ class ItemActionController implements ItemControllerInterface
protected function tokenAction()
{
$Form = new ApiTokenForm($this->itemId);
$Form->validate($this->actionId);
switch ($this->actionId) {
case ActionsInterface::ACTION_MGM_APITOKENS_NEW:
$Form->validate($this->actionId);
$Form->getItemData()->addToken();
$this->LogMessage->setAction(__('Crear Autorización', false));
@@ -610,6 +611,7 @@ class ItemActionController implements ItemControllerInterface
$this->LogMessage->addDetails(__('Usuario', false), UserUtil::getUserLoginById($Form->getItemData()->getUserId()));
break;
case ActionsInterface::ACTION_MGM_APITOKENS_EDIT:
$Form->validate($this->actionId);
$Form->getItemData()->updateToken();
$this->LogMessage->setAction(__('Actualizar Autorización', false));
@@ -617,12 +619,14 @@ class ItemActionController implements ItemControllerInterface
$this->LogMessage->addDetails(__('Usuario', false), UserUtil::getUserLoginById($Form->getItemData()->getUserId()));
break;
case ActionsInterface::ACTION_MGM_APITOKENS_DELETE:
$ApiToken = new ApiTokens();
if (is_array($this->itemId)) {
$Form->getItemData()->deleteTokenBatch($this->itemId);
$ApiToken->deleteTokenBatch($this->itemId);
$this->LogMessage->addDescription(__('Autorizaciones eliminadas', false));
} else {
$Form->getItemData()->deleteToken();
$ApiToken->deleteToken($this->itemId);
$this->LogMessage->addDescription(__('Autorización eliminada', false));
}

View File

@@ -90,11 +90,7 @@ class Log extends ActionLog
$Data->setQuery($query);
$Data->setOnErrorMessage(__('Error al vaciar el registro de eventos', false));
DB::getQuery($Data);
self::writeNewLogAndEmail(__('Vaciar Eventos', false), __('Vaciar registro de eventos', false), null);
return true;
return DB::getQuery($Data);
}
/**

View File

@@ -1169,7 +1169,14 @@ sysPass.Actions = function (Common) {
opts.url = ajaxUrl.eventlog;
opts.method = "get";
opts.type = "html";
opts.data = {start: $obj.data("start"), current: $obj.data("current")};
opts.data = {
actionId: $obj.data("action-id"),
sk: Common.sk.get(),
isAjax: 1,
start: $obj.data("start"),
count: $obj.data("count"),
current: $obj.data("current")
};
Common.appRequests().getActionCall(opts, function (response) {
$("#content").html(response);
@@ -1196,6 +1203,7 @@ sysPass.Actions = function (Common) {
var opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.eventlog;
opts.method = "get";
opts.data = {clear: 1, sk: Common.sk.get(), isAjax: 1};
Common.appRequests().getActionCall(opts, function (json) {

16
js/app-actions.min.js vendored
View File

@@ -1,5 +1,5 @@
var $jscomp={scope:{},findInternal:function(c,d,k){c instanceof String&&(c=String(c));for(var e=c.length,g=0;g<e;g++){var l=c[g];if(d.call(k,l,g,c))return{i:g,v:l}}return{i:-1,v:void 0}}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(c,d,k){if(k.get||k.set)throw new TypeError("ES3 does not support getters and setters.");c!=Array.prototype&&c!=Object.prototype&&(c[d]=k.value)};
$jscomp.getGlobal=function(c){return"undefined"!=typeof window&&window===c?c:"undefined"!=typeof global?global:c};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(c,d,k,e){if(d){k=$jscomp.global;c=c.split(".");for(e=0;e<c.length-1;e++){var g=c[e];g in k||(k[g]={});k=k[g]}c=c[c.length-1];e=k[c];d=d(e);d!=e&&null!=d&&$jscomp.defineProperty(k,c,{configurable:!0,writable:!0,value:d})}};
$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,d,k,e){if(d){k=$jscomp.global;c=c.split(".");for(e=0;e<c.length-1;e++){var g=c[e];g in k||(k[g]={});k=k[g]}c=c[c.length-1];e=k[c];d=d(e);d!=e&&null!=d&&$jscomp.defineProperty(k,c,{configurable:!0,writable:!0,value:d})}};
$jscomp.polyfill("Array.prototype.find",function(c){return c?c:function(c,k){return $jscomp.findInternal(this,c,k).v}},"es6-impl","es3");
sysPass.Actions=function(c){var d=c.log,k=0,e={doAction:"/ajax/ajax_getContent.php",updateItems:"/ajax/ajax_getItems.php",user:{savePreferences:"/ajax/ajax_userPrefsSave.php",password:"/ajax/ajax_usrpass.php",passreset:"/ajax/ajax_passReset.php"},main:{login:"/ajax/ajax_doLogin.php",install:"/ajax/ajax_install.php",getUpdates:"/ajax/ajax_checkUpds.php"},checks:"/ajax/ajax_checkConnection.php",config:{save:"/ajax/ajax_configSave.php","export":"/ajax/ajax_configSave.php","import":"/ajax/ajax_configSave.php"},
file:"/ajax/ajax_filesMgmt.php",link:"/ajax/ajax_itemSave.php",plugin:"/ajax/ajax_itemSave.php",account:{save:"/ajax/ajax_itemSave.php",saveFavorite:"/ajax/ajax_itemSave.php",request:"/ajax/ajax_itemSave.php",getFiles:"/ajax/ajax_accGetFiles.php",search:"/ajax/ajax_accSearch.php"},appMgmt:{show:"/ajax/ajax_itemShow.php",save:"/ajax/ajax_itemSave.php",search:"/ajax/ajax_itemSearch.php"},eventlog:"/ajax/ajax_eventlog.php",wiki:{show:"/ajax/ajax_wiki.php"},notice:{show:"/ajax/ajax_noticeShow.php",search:"/ajax/ajax_noticeSearch.php"}},
@@ -33,10 +33,10 @@ var b=c.appRequests().getRequestOpts();b.url=e.checks;b.data=a.serialize();c.app
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(c){0===c.length?q.logout():
l(a,c)})},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};var f='<div id="alert"><p id="alert-text">'+c.config().LANG[48]+"</p></div>";showDialog({text:f,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(f){f.preventDefault();b.data.notify=1;c.appRequests().getActionCall(b,function(b){c.msg.out(b);g({actionId:a.data("nextaction-id"),itemId:a.data("item-id")})})}}})},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.method="get";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");
a={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),activeTab:a.data("activetab")};var b=c.appRequests().getRequestOpts();b.url=e.appMgmt.save;b.data=a;c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&setTimeout(function(){c.redirect("index.php")},2E3)})},reset:function(a){d.info("plugin:reset");var b='<div id="alert"><p id="alert-text">'+c.config().LANG[58]+"</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={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),activeTab:a.data("activetab")};var d=c.appRequests().getRequestOpts();d.url=e.appMgmt.save;d.data=b;c.appRequests().getActionCall(d,function(a){c.msg.out(a)})}}})}},notice:{check:function(a){d.info("notice:check");var b={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get()},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")})})},search:function(a){d.info("notice:search");var b=$(a.data("target")),f=c.appRequests().getRequestOpts();f.url=e.notice.search;f.method="get";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)})},show:function(a){d.info("notice:show");
var b=c.appRequests().getRequestOpts();b.url=e.notice.show;b.method="get";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):l(a,b.data.html)})}},wiki:{show:function(a){d.info("wiki:show");var b=c.appRequests().getRequestOpts();b.url=e.wiki.show;b.method="get";b.data={pageName:a.data("pagename"),actionId:a.data("action-id"),sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,
function(b){0!==b.status?c.msg.out(b):l(a,b.data.html)})}},items:p}};
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.method="get";b.type="html";b.data={actionId:a.data("action-id"),sk:c.sk.get(),isAjax:1,start:a.data("start"),count:a.data("count"),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.method="get";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");a={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),activeTab:a.data("activetab")};var b=c.appRequests().getRequestOpts();b.url=e.appMgmt.save;b.data=a;c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&setTimeout(function(){c.redirect("index.php")},2E3)})},reset:function(a){d.info("plugin:reset");var b='<div id="alert"><p id="alert-text">'+c.config().LANG[58]+"</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={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),activeTab:a.data("activetab")};var d=c.appRequests().getRequestOpts();d.url=e.appMgmt.save;d.data=b;c.appRequests().getActionCall(d,function(a){c.msg.out(a)})}}})}},notice:{check:function(a){d.info("notice:check");var b={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get()},
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")})})},search:function(a){d.info("notice:search");var b=$(a.data("target")),f=c.appRequests().getRequestOpts();f.url=e.notice.search;f.method="get";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)})},
show:function(a){d.info("notice:show");var b=c.appRequests().getRequestOpts();b.url=e.notice.show;b.method="get";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):l(a,b.data.html)})}},wiki:{show:function(a){d.info("wiki:show");var b=c.appRequests().getRequestOpts();b.url=e.wiki.show;b.method="get";b.data={pageName:a.data("pagename"),actionId:a.data("action-id"),sk:c.sk.get(),
isAjax:1};c.appRequests().getActionCall(b,function(b){0!==b.status?c.msg.out(b):l(a,b.data.html)})}},items:p}};