diff --git a/config/nginx.rewrite.rules b/config/nginx.rewrite.rules index 5e54b68b17..2de196058f 100644 --- a/config/nginx.rewrite.rules +++ b/config/nginx.rewrite.rules @@ -14,6 +14,7 @@ rewrite ^/admin/description/.*$ /admin/router.php last; rewrite ^/admin/subdefs/.*$ /admin/router.php last; rewrite ^/admin/publications/.*$ /admin/router.php last; rewrite ^/admin/typeahead/.*$ /admin/router.php last; +rewrite ^/admin/connected-users/.*$ /admin/router.php last; rewrite ^/prod/records/edit/.*$ /prod/router.php last; diff --git a/lib/Alchemy/Phrasea/Application/Admin.php b/lib/Alchemy/Phrasea/Application/Admin.php index f84bc2b7fc..84e91aeb22 100644 --- a/lib/Alchemy/Phrasea/Application/Admin.php +++ b/lib/Alchemy/Phrasea/Application/Admin.php @@ -26,6 +26,7 @@ return call_user_func( $app['Core'] = \bootstrap::getCore(); $app->mount('/', new Controller\Root()); + $app->mount('/connected-users', new Controller\ConnectedUsers()); $app->mount('/publications', new Controller\Publications()); $app->mount('/users', new Controller\Users()); $app->mount('/fields', new Controller\Fields()); diff --git a/lib/Alchemy/Phrasea/Controller/Admin/ConnectedUsers.php b/lib/Alchemy/Phrasea/Controller/Admin/ConnectedUsers.php new file mode 100644 index 0000000000..5e6b3275b4 --- /dev/null +++ b/lib/Alchemy/Phrasea/Controller/Admin/ConnectedUsers.php @@ -0,0 +1,68 @@ +get('/', function(Application $app, Request $request) { + + $app['Core']['Twig']->addFilter('AppName', new \Twig_Filter_Function(__CLASS__ . '::appName')); + + return new Response( + $app['Core']['Twig']->render( + 'admin/connected-users.html.twig', array('datas' => \Session_Handler::get_active_sessions() + ) + ) + ); + }); + + return $controllers; + } + + public function appName($appId) + { + $appRef = array( + '0' => _('admin::monitor: module inconnu') + , '1' => _('admin::monitor: module production') + , '2' => _('admin::monitor: module client') + , '3' => _('admin::monitor: module admin') + , '4' => _('admin::monitor: module report') + , '5' => _('admin::monitor: module thesaurus') + , '6' => _('admin::monitor: module comparateur') + , '7' => _('admin::monitor: module validation') + , '8' => _('admin::monitor: module upload') + ); + + return isset($appRef[$appId]) ? $appRef[$appId] : $appRef['0']; + } +} diff --git a/lib/classes/Session/Handler.class.php b/lib/classes/Session/Handler.class.php index 6eebf2480d..6e90f64f40 100644 --- a/lib/classes/Session/Handler.class.php +++ b/lib/classes/Session/Handler.class.php @@ -652,11 +652,43 @@ class Session_Handler $geonames = new geonames(); - foreach ($rs as $k => $row) { - $rs[$k]['created_on'] = new DateTime($row['created_on']); - $rs[$k]['lastaccess'] = new DateTime($row['lastaccess']); - $rs[$k]['token'] = ! ! $row['token']; - $rs[$k]['usr_id'] = User_Adapter::getInstance($row['usr_id'], appbox::get_instance(\bootstrap::getCore())); + $ret = array( + 'sessions' => array(), + 'applications' => array( + '0' => 0, + '1' => 0, + '2' => 0, + '3' => 0, + '4' => 0, + '5' => 0, + '6' => 0, + '7' => 0, + '8' => 0, + ) + ); + + foreach ($rs as $row) { + + $session = array(); + + $session['browser'] = $row['browser']; + $session['browser_version'] = $row['browser_version']; + $session['session_id'] = $row['session_id']; + $session['user_agent'] = $row['user_agent']; + $session['ip'] = $row['ip']; + $session['screen'] = $row['screen']; + $session['platform'] = $row['platform']; + $session['created_on'] = new DateTime($row['created_on']); + $session['lastaccess'] = new DateTime($row['lastaccess']); + $session['token'] = ! ! $row['token']; + $session['user'] = User_Adapter::getInstance($row['usr_id'], appbox::get_instance(\bootstrap::getCore())); + $session["app"] = (array) unserialize($row["app"]); + + foreach ($session["app"] as $app) { + if (isset($ret['applications'][$app])) { + $ret['applications'][$app] ++; + } + } $datas = $geonames->find_geoname_from_ip($row['ip']); @@ -670,10 +702,12 @@ class Session_Handler $infos = ''; } - $rs[$k]['ip_infos'] = $infos; + $session['ip_infos'] = $infos; + + $ret['sessions'][] = $session; } - return $rs; + return $ret; } } diff --git a/lib/classes/setup.class.php b/lib/classes/setup.class.php index b7d905cccf..47e1f72519 100644 --- a/lib/classes/setup.class.php +++ b/lib/classes/setup.class.php @@ -292,116 +292,6 @@ class setup ); } - public function check_mod_auth_token() - { - $registry = registry::get_instance(); - - if ($registry->get('GV_h264_streaming') !== true) { - return; - } - ?> -

mod_auth_token configuration

- - -

Apache Server mods avalaibility

-
- -
- -