improvements for saimod security
This commit is contained in:
parent
a7152116dd
commit
770702ddb4
@ -19,4 +19,3 @@ class SYS_SAIMOD_LOG_FILTER extends \SYSTEM\DB\QP {
|
|||||||
' WHERE '.\SYSTEM\DBD\system_log::FIELD_CLASS.' LIKE ?'.
|
' WHERE '.\SYSTEM\DBD\system_log::FIELD_CLASS.' LIKE ?'.
|
||||||
' ORDER BY '.\SYSTEM\DBD\system_log::FIELD_TIME.' DESC LIMIT 100;'
|
' ORDER BY '.\SYSTEM\DBD\system_log::FIELD_TIME.' DESC LIMIT 100;'
|
||||||
);}}
|
);}}
|
||||||
|
|
||||||
|
|||||||
12
dbd/qq/SYS_SAIMOD_SECURITY_USER.php
Normal file
12
dbd/qq/SYS_SAIMOD_SECURITY_USER.php
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
namespace SYSTEM\DBD;
|
||||||
|
|
||||||
|
class SYS_SAIMOD_SECURITY_USER extends \SYSTEM\DB\QP {
|
||||||
|
protected static function query(){
|
||||||
|
return new \SYSTEM\DB\QQuery(get_class(),
|
||||||
|
//pg
|
||||||
|
'SELECT id,username,email,joindate,locale, EXTRACT(EPOCH FROM last_active) as last_active ,account_flag FROM system.user WHERE username = $1 LIMIT 1;',
|
||||||
|
//mys
|
||||||
|
'SELECT id,username,email,joindate,locale,last_active,account_flag FROM system_user WHERE username = ? LIMIT 1;'
|
||||||
|
);}}
|
||||||
|
|
||||||
22
dbd/qq/SYS_SAIMOD_SECURITY_USER_LOG.php
Normal file
22
dbd/qq/SYS_SAIMOD_SECURITY_USER_LOG.php
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
namespace SYSTEM\DBD;
|
||||||
|
|
||||||
|
class SYS_SAIMOD_SECURITY_USER_LOG extends \SYSTEM\DB\QP {
|
||||||
|
protected static function query(){
|
||||||
|
return new \SYSTEM\DB\QQuery(get_class(),
|
||||||
|
//pg
|
||||||
|
'SELECT * FROM '.\SYSTEM\DBD\system_log::NAME_PG.
|
||||||
|
' LEFT JOIN '.\SYSTEM\DBD\system_user::NAME_PG.
|
||||||
|
' ON '.\SYSTEM\DBD\system_log::NAME_PG.'.'.\SYSTEM\DBD\system_log::FIELD_USER.
|
||||||
|
' = '.\SYSTEM\DBD\system_user::NAME_PG.'.'.\SYSTEM\DBD\system_user::FIELD_ID.
|
||||||
|
' WHERE '.\SYSTEM\DBD\system_log::FIELD_USER.' = $1'.
|
||||||
|
' ORDER BY '.\SYSTEM\DBD\system_log::FIELD_TIME.' DESC LIMIT 100;',
|
||||||
|
//mys
|
||||||
|
'SELECT * FROM '.\SYSTEM\DBD\system_log::NAME_MYS.
|
||||||
|
' LEFT JOIN '.\SYSTEM\DBD\system_user::NAME_MYS.
|
||||||
|
' ON '.\SYSTEM\DBD\system_log::NAME_MYS.'.'.\SYSTEM\DBD\system_log::FIELD_USER.
|
||||||
|
' = '.\SYSTEM\DBD\system_user::NAME_MYS.'.'.\SYSTEM\DBD\system_user::FIELD_ID.
|
||||||
|
' WHERE '.\SYSTEM\DBD\system_log::FIELD_USER.' = ?'.
|
||||||
|
' ORDER BY '.\SYSTEM\DBD\system_log::FIELD_TIME.' DESC LIMIT 100;'
|
||||||
|
);}}
|
||||||
|
|
||||||
17
dbd/qq/SYS_SAIMOD_SECURITY_USER_LOG_COUNT.php
Normal file
17
dbd/qq/SYS_SAIMOD_SECURITY_USER_LOG_COUNT.php
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
namespace SYSTEM\DBD;
|
||||||
|
|
||||||
|
class SYS_SAIMOD_SECURITY_USER_LOG_COUNT extends \SYSTEM\DB\QP {
|
||||||
|
protected static function query(){
|
||||||
|
return new \SYSTEM\DB\QQuery(get_class(),
|
||||||
|
//pg
|
||||||
|
'SELECT COUNT(*) as count FROM '.\SYSTEM\DBD\system_log::NAME_PG.
|
||||||
|
' WHERE '.\SYSTEM\DBD\system_log::FIELD_USER.
|
||||||
|
' = $1;',
|
||||||
|
//mys
|
||||||
|
'SELECT COUNT(*) as count'.
|
||||||
|
' FROM '.\SYSTEM\DBD\system_log::NAME_MYS.
|
||||||
|
' WHERE '.\SYSTEM\DBD\system_log::FIELD_USER.
|
||||||
|
' = ?;'
|
||||||
|
);}}
|
||||||
|
|
||||||
@ -63,7 +63,6 @@ class saimod_sys_log extends \SYSTEM\SAI\SaiModule {
|
|||||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_filter($filter = "%"){
|
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_filter($filter = "%"){
|
||||||
$count = \SYSTEM\DBD\SYS_SAIMOD_LOG_FILTER_COUNT::Q1(array(mysql_escape_string($filter)));
|
$count = \SYSTEM\DBD\SYS_SAIMOD_LOG_FILTER_COUNT::Q1(array(mysql_escape_string($filter)));
|
||||||
$res = \SYSTEM\DBD\SYS_SAIMOD_LOG_FILTER::QQ(array(mysql_escape_string($filter)));
|
$res = \SYSTEM\DBD\SYS_SAIMOD_LOG_FILTER::QQ(array(mysql_escape_string($filter)));
|
||||||
$now = microtime(true);
|
|
||||||
$table='';
|
$table='';
|
||||||
while($r = $res->next()){
|
while($r = $res->next()){
|
||||||
//print_r($r);
|
//print_r($r);
|
||||||
@ -119,7 +118,7 @@ class saimod_sys_log extends \SYSTEM\SAI\SaiModule {
|
|||||||
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/saimod_sys_log.tpl'), $vars);
|
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/saimod_sys_log.tpl'), $vars);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function tablerow_class($class){
|
public static function tablerow_class($class){
|
||||||
switch($class){
|
switch($class){
|
||||||
case 'SYSTEM\LOG\INFO': case 'INFO': case 'SYSTEM\LOG\COUNTER':
|
case 'SYSTEM\LOG\INFO': case 'INFO': case 'SYSTEM\LOG\COUNTER':
|
||||||
return 'success';
|
return 'success';
|
||||||
|
|||||||
@ -3,11 +3,20 @@
|
|||||||
<li><a href="#" filter="2592000">30d</a></li>
|
<li><a href="#" filter="2592000">30d</a></li>
|
||||||
<li><a href="#" filter="1209600">14d</a></li>
|
<li><a href="#" filter="1209600">14d</a></li>
|
||||||
<li class="active"><a href="#" filter="604800">7d</a></li>
|
<li class="active"><a href="#" filter="604800">7d</a></li>
|
||||||
|
<li><a href="#" filter="172800">2d</a></li>
|
||||||
<li><a href="#" filter="86400">1d</a></li>
|
<li><a href="#" filter="86400">1d</a></li>
|
||||||
<li><a href="#" filter="43200">12h</a></li>
|
<li><a href="#" filter="43200">12h</a></li>
|
||||||
<li><a href="#" filter="21600">6h</a></li>
|
<li><a href="#" filter="21600">6h</a></li>
|
||||||
|
<li><a href="#" filter="14400">4h</a></li>
|
||||||
|
<li><a href="#" filter="7200">2h</a></li>
|
||||||
<li><a href="#" filter="3600">1h</a></li>
|
<li><a href="#" filter="3600">1h</a></li>
|
||||||
|
<li><a href="#" filter="1800">30m</a></li>
|
||||||
|
<li><a href="#" filter="600">10m</a></li>
|
||||||
|
<li><a href="#" filter="300">5m</a></li>
|
||||||
<li><a href="#" filter="60">1m</a></li>
|
<li><a href="#" filter="60">1m</a></li>
|
||||||
|
<li><a href="#" filter="30">30s</a></li>
|
||||||
|
<li><a href="#" filter="10">10s</a></li>
|
||||||
|
<li><a href="#" filter="5">5s</a></li>
|
||||||
<li><a href="#" filter="1">1s</a></li>
|
<li><a href="#" filter="1">1s</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
var user_search = '';
|
||||||
function init__SYSTEM_SAI_saimod_sys_security() {
|
function init__SYSTEM_SAI_saimod_sys_security() {
|
||||||
$('#securitytab a').click(function (e) {
|
$('#securitytab a').click(function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
@ -12,11 +13,13 @@ function load_security_tab(action){
|
|||||||
$('img#loader').show();
|
$('img#loader').show();
|
||||||
switch(action){
|
switch(action){
|
||||||
case 'users':
|
case 'users':
|
||||||
$('#tab_users').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_security&action='+action, function(){
|
$('#tab_users').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_security&action='+action+'&search='+user_search, function(){
|
||||||
|
register_users();
|
||||||
$('img#loader').hide();});
|
$('img#loader').hide();});
|
||||||
return;
|
return;
|
||||||
case 'rights':
|
case 'rights':
|
||||||
$('#tab_rights').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_security&action='+action, function(){
|
$('#tab_rights').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_security&action='+action, function(){
|
||||||
|
register_rights();
|
||||||
$('img#loader').hide();});
|
$('img#loader').hide();});
|
||||||
return;
|
return;
|
||||||
case 'groups':
|
case 'groups':
|
||||||
@ -27,3 +30,19 @@ function load_security_tab(action){
|
|||||||
$('img#loader').hide();
|
$('img#loader').hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function register_rights(){
|
||||||
|
$('#new_right').click(function(){
|
||||||
|
$('#tab_rights').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_security&action=newright');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function register_users(){
|
||||||
|
$('#user_go').click(function(){
|
||||||
|
user_search = $('#user_search').val();
|
||||||
|
load_security_tab('users');
|
||||||
|
});
|
||||||
|
$('#user_search').val(user_search);
|
||||||
|
$('.user_entry').click(function(){
|
||||||
|
$('#tab_users').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_security&action=user&username='+$(this).attr('username'));
|
||||||
|
});
|
||||||
|
}
|
||||||
@ -6,6 +6,9 @@ class saimod_sys_security extends \SYSTEM\SAI\SaiModule {
|
|||||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_security_action_groups(){
|
public static function sai_mod__SYSTEM_SAI_saimod_sys_security_action_groups(){
|
||||||
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security_groups.tpl'),array());}
|
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security_groups.tpl'),array());}
|
||||||
|
|
||||||
|
public static function sai_mod__SYSTEM_SAI_saimod_sys_security_action_newright(){
|
||||||
|
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security_newright.tpl'),array());}
|
||||||
|
|
||||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_security_action_rights(){
|
public static function sai_mod__SYSTEM_SAI_saimod_sys_security_action_rights(){
|
||||||
$rows = '';
|
$rows = '';
|
||||||
$res = \SYSTEM\DBD\SYS_SAIMOD_SECURITY_RIGHTS::QQ();
|
$res = \SYSTEM\DBD\SYS_SAIMOD_SECURITY_RIGHTS::QQ();
|
||||||
@ -14,6 +17,30 @@ class saimod_sys_security extends \SYSTEM\SAI\SaiModule {
|
|||||||
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security_rights.tpl'),array('rows' => $rows));
|
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security_rights.tpl'),array('rows' => $rows));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static function user_actions($userid){
|
||||||
|
$count = \SYSTEM\DBD\SYS_SAIMOD_SECURITY_USER_LOG_COUNT::Q1(array($userid));
|
||||||
|
$res = \SYSTEM\DBD\SYS_SAIMOD_SECURITY_USER_LOG::QQ(array($userid));
|
||||||
|
$table='';
|
||||||
|
while($r = $res->next()){
|
||||||
|
//print_r($r);
|
||||||
|
$r['class_row'] = \SYSTEM\SAI\saimod_sys_log::tablerow_class($r['class']);
|
||||||
|
$r['time'] = self::time_elapsed_string(strtotime($r['time']));
|
||||||
|
$r['message'] = substr($r['message'],0,255);
|
||||||
|
$table .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/saimod_sys_log_table_row.tpl'),$r);
|
||||||
|
}
|
||||||
|
$vars = array();
|
||||||
|
$vars['count'] = $count['count'];
|
||||||
|
$vars['table'] = $table;
|
||||||
|
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/saimod_sys_log_table.tpl'), $vars);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function sai_mod__SYSTEM_SAI_saimod_sys_security_action_user($username){
|
||||||
|
$vars = \SYSTEM\DBD\SYS_SAIMOD_SECURITY_USER::Q1(array($username));
|
||||||
|
$vars['time_elapsed'] = self::time_elapsed_string($vars['last_active']);
|
||||||
|
$vars['user_actions'] = self::user_actions($vars['id']);
|
||||||
|
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security_user_view.tpl'),$vars);
|
||||||
|
}
|
||||||
|
|
||||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_security_action_users($search = null){
|
public static function sai_mod__SYSTEM_SAI_saimod_sys_security_action_users($search = null){
|
||||||
$search = '%'.$search.'%';
|
$search = '%'.$search.'%';
|
||||||
$count = \SYSTEM\DBD\SYS_SAIMOD_SECURITY_USER_COUNT::Q1(array($search),array($search,$search));
|
$count = \SYSTEM\DBD\SYS_SAIMOD_SECURITY_USER_COUNT::Q1(array($search),array($search,$search));
|
||||||
@ -28,7 +55,9 @@ class saimod_sys_security extends \SYSTEM\SAI\SaiModule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_security(){
|
public static function sai_mod__SYSTEM_SAI_saimod_sys_security(){
|
||||||
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security.tpl'), array());}
|
$vars = array();
|
||||||
|
$vars['PICPATH'] = \SYSTEM\WEBPATH(new \SYSTEM\PSAI(), 'modules/saimod_sys_log/img/');
|
||||||
|
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security.tpl'), $vars);}
|
||||||
|
|
||||||
private static function tablerow_class($last_active){
|
private static function tablerow_class($last_active){
|
||||||
$time = time() - $last_active;
|
$time = time() - $last_active;
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
<li class="active"><a href="#tab_users" action="users">Users</a></li>
|
<li class="active"><a href="#tab_users" action="users">Users</a></li>
|
||||||
<li><a href="#tab_rights" action="rights">Rights</a></li>
|
<li><a href="#tab_rights" action="rights">Rights</a></li>
|
||||||
<li><a href="#tab_groups" action="groups">Groups</a></li>
|
<li><a href="#tab_groups" action="groups">Groups</a></li>
|
||||||
|
<img id="loader" src="${PICPATH}ajax-loader.gif" style="margin-left: 10px; margin-top: 10px; display: none; float: left"/>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="tab-content">
|
<div class="tab-content">
|
||||||
<div class="tab-pane active" id="tab_users"></div>
|
<div class="tab-pane active" id="tab_users"></div>
|
||||||
|
|||||||
@ -0,0 +1 @@
|
|||||||
|
new right
|
||||||
@ -1,4 +1,4 @@
|
|||||||
<input type="submit" class="btn" value="New Right" newright="1">
|
<input type="submit" class="btn" id="new_right" value="New Right">
|
||||||
</br></br>
|
</br></br>
|
||||||
<table class="table table-hover table-condensed" style="overflow: auto;">
|
<table class="table table-hover table-condensed" style="overflow: auto;">
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
<tr class="${class}">
|
<tr class="user_entry ${class}" username="${username}">
|
||||||
<td>${id}</td>
|
<td>${id}</td>
|
||||||
<td>${username}</td>
|
<td>${username}</td>
|
||||||
<td>${email}</td>
|
<td>${email}</td>
|
||||||
|
|||||||
@ -0,0 +1,36 @@
|
|||||||
|
<div class="masthead">
|
||||||
|
<h2 class="muted">Userinfo for User: ${username}</h2>
|
||||||
|
<h4 class="text-info">Basics</h4>
|
||||||
|
</div>
|
||||||
|
<table class="table">
|
||||||
|
<tr>
|
||||||
|
<th>ID</th>
|
||||||
|
<td>${id}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Username</th>
|
||||||
|
<td>${username}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>EMail</th>
|
||||||
|
<td>${email}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Joindate</th>
|
||||||
|
<td>${joindate}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Locale</th>
|
||||||
|
<td>${locale}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Last active</th>
|
||||||
|
<td>${time_elapsed}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Flag(remove)</th>
|
||||||
|
<td>${account_flag}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<h4 class="text-info">Users Last Actions</h4>
|
||||||
|
${user_actions}
|
||||||
@ -1,7 +1,8 @@
|
|||||||
Users: ${count}
|
<input class="input-medium search-query" id="user_search" type="text" placeholder="EMail or Username" size="30"/>
|
||||||
|
<input class="btn" id="user_go" type="submit" value="Search"/>
|
||||||
</br>
|
</br>
|
||||||
<input type="text" value="Search email or username" size="30"/>
|
</br>
|
||||||
|
Users: ${count}
|
||||||
<table class="table table-hover table-condensed" style="overflow: auto;">
|
<table class="table table-hover table-condensed" style="overflow: auto;">
|
||||||
<tr>
|
<tr>
|
||||||
<th>ID</th>
|
<th>ID</th>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user