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 ?'.
|
||||
' 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.
|
||||
' = ?;'
|
||||
);}}
|
||||
|
||||
@ -62,8 +62,7 @@ class saimod_sys_log extends \SYSTEM\SAI\SaiModule {
|
||||
|
||||
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)));
|
||||
$res = \SYSTEM\DBD\SYS_SAIMOD_LOG_FILTER::QQ(array(mysql_escape_string($filter)));
|
||||
$now = microtime(true);
|
||||
$res = \SYSTEM\DBD\SYS_SAIMOD_LOG_FILTER::QQ(array(mysql_escape_string($filter)));
|
||||
$table='';
|
||||
while($r = $res->next()){
|
||||
//print_r($r);
|
||||
@ -71,7 +70,7 @@ class saimod_sys_log extends \SYSTEM\SAI\SaiModule {
|
||||
$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;
|
||||
@ -113,13 +112,13 @@ class saimod_sys_log extends \SYSTEM\SAI\SaiModule {
|
||||
return $result;
|
||||
}
|
||||
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_log(){
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_log(){
|
||||
$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_log/saimod_sys_log.tpl'), $vars);
|
||||
}
|
||||
|
||||
private static function tablerow_class($class){
|
||||
public static function tablerow_class($class){
|
||||
switch($class){
|
||||
case 'SYSTEM\LOG\INFO': case 'INFO': case 'SYSTEM\LOG\COUNTER':
|
||||
return 'success';
|
||||
|
||||
@ -3,11 +3,20 @@
|
||||
<li><a href="#" filter="2592000">30d</a></li>
|
||||
<li><a href="#" filter="1209600">14d</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="43200">12h</a></li>
|
||||
<li><a href="#" filter="21600">6h</a></li>
|
||||
<li><a href="#" filter="3600">1h</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="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="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>
|
||||
</ul>
|
||||
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
var user_search = '';
|
||||
function init__SYSTEM_SAI_saimod_sys_security() {
|
||||
$('#securitytab a').click(function (e) {
|
||||
e.preventDefault();
|
||||
@ -12,11 +13,13 @@ function load_security_tab(action){
|
||||
$('img#loader').show();
|
||||
switch(action){
|
||||
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();});
|
||||
return;
|
||||
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();});
|
||||
return;
|
||||
case 'groups':
|
||||
@ -26,4 +29,20 @@ function load_security_tab(action){
|
||||
default:
|
||||
$('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(){
|
||||
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(){
|
||||
$rows = '';
|
||||
$res = \SYSTEM\DBD\SYS_SAIMOD_SECURITY_RIGHTS::QQ();
|
||||
@ -14,8 +17,32 @@ 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));
|
||||
}
|
||||
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_security_action_users($search = null){
|
||||
$search = '%'.$search.'%';
|
||||
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){
|
||||
$search = '%'.$search.'%';
|
||||
$count = \SYSTEM\DBD\SYS_SAIMOD_SECURITY_USER_COUNT::Q1(array($search),array($search,$search));
|
||||
$rows = '';
|
||||
$res = \SYSTEM\DBD\SYS_SAIMOD_SECURITY_USERS::QQ(array($search),array($search,$search));
|
||||
@ -27,8 +54,10 @@ 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_users.tpl'),array('rows' => $rows, 'count' => $count['count']));
|
||||
}
|
||||
|
||||
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());}
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_security(){
|
||||
$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){
|
||||
$time = time() - $last_active;
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
<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_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>
|
||||
<div class="tab-content">
|
||||
<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>
|
||||
<table class="table table-hover table-condensed" style="overflow: auto;">
|
||||
<tr>
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
<tr class="${class}">
|
||||
<tr class="user_entry ${class}" username="${username}">
|
||||
<td>${id}</td>
|
||||
<td>${username}</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>
|
||||
<input type="text" value="Search email or username" size="30"/>
|
||||
|
||||
</br>
|
||||
Users: ${count}
|
||||
<table class="table table-hover table-condensed" style="overflow: auto;">
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user