parent
2e3082a75a
commit
0cc54ce34b
|
@ -0,0 +1,39 @@
|
||||||
|
<?php
|
||||||
|
/* Icinga Web 2 | (c) 2013-2015 Icinga Development Team | GPLv2+ */
|
||||||
|
|
||||||
|
namespace Icinga\Controllers;
|
||||||
|
|
||||||
|
use Icinga\Application\Icinga;
|
||||||
|
use Icinga\Web\Controller;
|
||||||
|
use Icinga\Web\Session;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @TODO(el): https://dev.icinga.org/issues/10646
|
||||||
|
*/
|
||||||
|
class ApplicationStateController extends Controller
|
||||||
|
{
|
||||||
|
public function indexAction()
|
||||||
|
{
|
||||||
|
if (isset($_COOKIE['icingaweb2-session'])) {
|
||||||
|
$last = (int) $_COOKIE['icingaweb2-session'];
|
||||||
|
} else {
|
||||||
|
$last = 0;
|
||||||
|
}
|
||||||
|
$now = time();
|
||||||
|
if ($last + 60 < $now) {
|
||||||
|
Session::getSession()->refreshId();
|
||||||
|
$params = session_get_cookie_params();
|
||||||
|
setcookie(
|
||||||
|
'icingaweb2-session',
|
||||||
|
$now,
|
||||||
|
null,
|
||||||
|
$params['path'],
|
||||||
|
$params['domain'],
|
||||||
|
$params['secure'],
|
||||||
|
$params['httponly']
|
||||||
|
);
|
||||||
|
$_COOKIE['icingaweb2-session'] = $now;
|
||||||
|
}
|
||||||
|
Icinga::app()->getResponse()->setHeader('X-Icinga-Container', 'ignore', true);
|
||||||
|
}
|
||||||
|
}
|
|
@ -341,6 +341,17 @@ class Auth
|
||||||
*/
|
*/
|
||||||
public function persistCurrentUser()
|
public function persistCurrentUser()
|
||||||
{
|
{
|
||||||
|
// @TODO(el): https://dev.icinga.org/issues/10646
|
||||||
|
$params = session_get_cookie_params();
|
||||||
|
setcookie(
|
||||||
|
'icingaweb2-session',
|
||||||
|
time(),
|
||||||
|
null,
|
||||||
|
$params['path'],
|
||||||
|
$params['domain'],
|
||||||
|
$params['secure'],
|
||||||
|
$params['httponly']
|
||||||
|
);
|
||||||
Session::getSession()->set('user', $this->user)->refreshId();
|
Session::getSession()->set('user', $this->user)->refreshId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
namespace Icinga\Web\Controller;
|
namespace Icinga\Web\Controller;
|
||||||
|
|
||||||
use Exception;
|
use Exception;
|
||||||
|
use Icinga\Util\String;
|
||||||
use Zend_Controller_Action;
|
use Zend_Controller_Action;
|
||||||
use Zend_Controller_Action_Interface;
|
use Zend_Controller_Action_Interface;
|
||||||
use Zend_Controller_Dispatcher_Exception;
|
use Zend_Controller_Dispatcher_Exception;
|
||||||
|
@ -43,7 +44,7 @@ class Dispatcher extends Zend_Controller_Dispatcher_Standard
|
||||||
parent::dispatch($request, $response);
|
parent::dispatch($request, $response);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$controllerName = ucfirst($controllerName) . 'Controller';
|
$controllerName = String::cname($controllerName, '-') . 'Controller';
|
||||||
$moduleName = $request->getModuleName();
|
$moduleName = $request->getModuleName();
|
||||||
if ($moduleName === null || $moduleName === $this->_defaultModule) {
|
if ($moduleName === null || $moduleName === $this->_defaultModule) {
|
||||||
$controllerClass = 'Icinga\\' . self::CONTROLLER_NAMESPACE . '\\' . $controllerName;
|
$controllerClass = 'Icinga\\' . self::CONTROLLER_NAMESPACE . '\\' . $controllerName;
|
||||||
|
|
|
@ -22,6 +22,7 @@ class JavaScript
|
||||||
'js/icinga/history.js',
|
'js/icinga/history.js',
|
||||||
'js/icinga/module.js',
|
'js/icinga/module.js',
|
||||||
'js/icinga/timezone.js',
|
'js/icinga/timezone.js',
|
||||||
|
'js/icinga/behavior/application-state.js',
|
||||||
'js/icinga/behavior/tooltip.js',
|
'js/icinga/behavior/tooltip.js',
|
||||||
'js/icinga/behavior/sparkline.js',
|
'js/icinga/behavior/sparkline.js',
|
||||||
'js/icinga/behavior/tristate.js',
|
'js/icinga/behavior/tristate.js',
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
/*! Icinga Web 2 | (c) 2013-2015 Icinga Development Team | GPLv2+ */
|
||||||
|
|
||||||
|
// @TODO(el): https://dev.icinga.org/issues/10646
|
||||||
|
(function(Icinga, $) {
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Icinga.Behaviors = Icinga.Behaviors || {};
|
||||||
|
|
||||||
|
var ApplicationState = function (icinga) {
|
||||||
|
Icinga.EventListener.call(this, icinga);
|
||||||
|
this.on('rendered', this.onRendered, this);
|
||||||
|
this.icinga = icinga;
|
||||||
|
};
|
||||||
|
|
||||||
|
ApplicationState.prototype = new Icinga.EventListener();
|
||||||
|
|
||||||
|
ApplicationState.prototype.onRendered = function(e) {
|
||||||
|
var _this = e.data.self;
|
||||||
|
if (! $('#application-state').length) {
|
||||||
|
$('#layout').append(
|
||||||
|
'<div id="application-state" class="container" style="display: none" data-icinga-url="'
|
||||||
|
+ _this.icinga.loader.baseUrl
|
||||||
|
+ '/application-state" data-icinga-refresh="60"></div>'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Icinga.Behaviors.ApplicationState = ApplicationState;
|
||||||
|
|
||||||
|
})(Icinga, jQuery);
|
Loading…
Reference in New Issue