sai security rightmanagement working, rights for security, im and locale

This commit is contained in:
Ulf Gebhardt 2014-01-28 17:07:54 +01:00
parent abb11f5277
commit ec341d594a
18 changed files with 180 additions and 17 deletions

View File

@ -0,0 +1,12 @@
<?php
namespace SYSTEM\DBD;
class SYS_SAIMOD_SECURITY_USER_RIGHTS extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'',
//mys
'SELECT * FROM system_rights LEFT JOIN system_user_to_rights ON system_rights.id = system_user_to_rights.rightID WHERE system_user_to_rights.userID = ? ORDER BY system_rights.id ASC;'
);}}

View File

@ -0,0 +1,12 @@
<?php
namespace SYSTEM\DBD;
class SYS_SAIMOD_SECURITY_USER_RIGHT_CHECK extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'',
//mys
'SELECT COUNT(*) as count FROM system_user_to_rights WHERE rightID = ? AND userID = ? LIMIT 1;'
);}}

View File

@ -0,0 +1,12 @@
<?php
namespace SYSTEM\DBD;
class SYS_SAIMOD_SECURITY_USER_RIGHT_DELETE extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'',
//mys
'DELETE FROM system_user_to_rights WHERE rightID = ? and userID = ?;'
);}}

View File

@ -0,0 +1,12 @@
<?php
namespace SYSTEM\DBD;
class SYS_SAIMOD_SECURITY_USER_RIGHT_INSERT extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'',
//mys
'INSERT INTO system_user_to_rights (rightID, userID) VALUES(?, ?);'
);}}

View File

@ -48,7 +48,7 @@ class saimod_sys_img extends \SYSTEM\SAI\SaiModule {
public static function html_li_menu(){return '<li><a href="#" saimenu=".SYSTEM.SAI.saimod_sys_img">Img</a></li>';}
public static function right_public(){return false;}
public static function right_right(){return \SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI);}
public static function right_right(){return \SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI) && \SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI_IMG);}
public static function sai_mod__SYSTEM_SAI_saimod_sys_img_flag_css(){}
public static function sai_mod__SYSTEM_SAI_saimod_sys_img_flag_js(){return \SYSTEM\LOG\JsonResult::toString(

View File

@ -132,7 +132,7 @@ class saimod_sys_locale extends \SYSTEM\SAI\SaiModule {
public static function html_li_menu(){return '<li><a href="#" saimenu=".SYSTEM.SAI.saimod_sys_locale">DB Text</a></li>';}
public static function right_public(){return false;}
public static function right_right(){return \SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI);}
public static function right_right(){return \SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI) && \SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI_LOCALE);}
public static function sai_mod__SYSTEM_SAI_saimod_sys_locale_flag_css(){}
public static function sai_mod__SYSTEM_SAI_saimod_sys_locale_flag_js(){

View File

@ -92,6 +92,29 @@ function register_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='+encodeURIComponent($(this).attr('username')));
$('#tab_users').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_security&action=user&username='+encodeURIComponent($(this).attr('username')),function(){
$('.deleteuserright').click(function(){
$.get( SAI_ENDPOINT+
'sai_mod=.SYSTEM.SAI.saimod_sys_security&action=deleterightuser&rightid='+$(this).attr('right_id')+
'&userid='+$(this).attr('user_id'),function(data){
if(data==1){
alert('sucess');
} else {
alert('fail');
}
});
})
$('#adduserright_add').click(function(){
$.get( SAI_ENDPOINT+
'sai_mod=.SYSTEM.SAI.saimod_sys_security&action=addrightuser&rightid='+$('#adduserright_rightid').val()+
'&userid='+$(this).attr('user_id'),function(data){
if(data==1){
alert('sucess');
} else {
alert('fail');
}
});
});
});
});
}

View File

@ -10,23 +10,51 @@ 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_newright.tpl'),array());}
public static function sai_mod__SYSTEM_SAI_saimod_sys_security_action_rights(){
$vars = array();
$rows = '';
$res = \SYSTEM\DBD\SYS_SAIMOD_SECURITY_RIGHTS::QQ();
while($r = $res->next()){
$r['right_edit_btn'] = \SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI_SECURITY_RIGHTS_EDIT) ?
'<input type="submit" class="btn-danger right_delete" value="delete" right_id="${ID}">
<input type="submit" class="btn right_edit" value="edit" right_id="${ID}">' :
'<font color="red">Missing rights.</font>';
$rows .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security_right.tpl'),$r);}
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security_rights.tpl'),array('rows' => $rows));
$vars['rows'] = $rows;
$vars['addright_btn'] = \SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI_SECURITY_RIGHTS_EDIT) ?
'<input type="submit" class="btn" id="new_right" value="New Right">' :
'<font color="red">You are missing the required rights for adding or removing rights.</font>';
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security_rights.tpl'),$vars);
}
public static function sai_mod__SYSTEM_SAI_saimod_sys_security_action_deleterightuser($rightid,$userid){
if(!\SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI_SECURITY_RIGHTS_EDIT)){
return false;}
$res = \SYSTEM\DBD\SYS_SAIMOD_SECURITY_USER_RIGHT_CHECK::Q1(array($rightid,$userid));
if(!$res || $res['count'] == 0){
return false;}
return \SYSTEM\DBD\SYS_SAIMOD_SECURITY_USER_RIGHT_DELETE::QI(array($rightid,$userid));}
public static function sai_mod__SYSTEM_SAI_saimod_sys_security_action_addrightuser($rightid,$userid){
if(!\SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI_SECURITY_RIGHTS_EDIT)){
return false;}
$res = \SYSTEM\DBD\SYS_SAIMOD_SECURITY_USER_RIGHT_CHECK::Q1(array($rightid,$userid));
if(!$res || $res['count'] != 0){
return false;}
return \SYSTEM\DBD\SYS_SAIMOD_SECURITY_USER_RIGHT_INSERT::QI(array($rightid,$userid));}
public static function sai_mod__SYSTEM_SAI_saimod_sys_security_action_addright($id,$name,$description){
//TODO rightcheck
if(!\SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI_SECURITY_RIGHTS_EDIT)){
return false;}
return \SYSTEM\DBD\SYS_SAIMOD_SECURITY_RIGHT_INSERT::QI(array($id,$name,$description));}
public static function sai_mod__SYSTEM_SAI_saimod_sys_security_action_deleterightconfirm($id){
//TODO rightcheck
if(!\SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI_SECURITY_RIGHTS_EDIT)){
return false;}
$vars = \SYSTEM\DBD\SYS_SAIMOD_SECURITY_RIGHT_CHECK::Q1(array($id));
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security_deleteright.tpl'),$vars);}
public static function sai_mod__SYSTEM_SAI_saimod_sys_security_action_deleteright($id){
//TODO rightcheck
if(!\SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI_SECURITY_RIGHTS_EDIT)){
return false;}
return \SYSTEM\DBD\SYS_SAIMOD_SECURITY_RIGHT_DELETE::QI(array($id));}
private static function user_actions($userid){
@ -45,6 +73,36 @@ class saimod_sys_security extends \SYSTEM\SAI\SaiModule {
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/saimod_sys_log_table.tpl'), $vars);
}
private static function user_rights($userid){
$vars = array();
$vars['user_rights_table'] = '';
$res = \SYSTEM\DBD\SYS_SAIMOD_SECURITY_USER_RIGHTS::QQ(array($userid));
while($r = $res->next()){
$r['user_id'] = $userid;
$r['remove_btn'] = \SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI_SECURITY_RIGHTS_EDIT) ?
'<input type="submit" class="btn btn-danger deleteuserright" value="delete" right_id="${ID}" user_id="${user_id}"/>' :
'<font color="red">Missing Rights</font>';
$vars['user_rights_table'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security_user_right.tpl'), $r);}
$vars['user_rights_add'] = '<font color="red">You are missing the required rights for adding or removing the rights of an user.</font>';
if(\SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI_SECURITY_RIGHTS_EDIT)){
$opts = '';
$res = \SYSTEM\DBD\SYS_SAIMOD_SECURITY_RIGHTS::QQ();
$b = true;
while($r = $res->next()){
$r['selected'] = $b ? 'selected="selected"' : '';
$b = false;
$opts .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security_user_right_add.tpl'), $r);}
$v = array();
$v['user_id'] = $userid;
$v['right_options'] = $opts;
$vars['user_rights_add'] = \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security_user_rights_add.tpl'), $v);
}
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security_user_rights.tpl'), $vars);}
public static function sai_mod__SYSTEM_SAI_saimod_sys_security_action_stats(){
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security_stats.tpl'),array());
}
@ -52,6 +110,7 @@ class saimod_sys_security extends \SYSTEM\SAI\SaiModule {
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_rights'] = array_key_exists('id', $vars) ? self::user_rights($vars['id']) : '';
$vars['user_actions'] = array_key_exists('id', $vars) ? 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);
}
@ -117,7 +176,7 @@ class saimod_sys_security extends \SYSTEM\SAI\SaiModule {
public static function html_li_menu(){return '<li><a href="#" saimenu=".SYSTEM.SAI.saimod_sys_security">Security</a></li>';}
public static function right_public(){return false;}
public static function right_right(){return \SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI);}
public static function right_right(){return \SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI) && \SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI_SECURITY);}
public static function sai_mod__SYSTEM_SAI_saimod_sys_security_flag_css(){return \SYSTEM\LOG\JsonResult::toString(
array(\SYSTEM\WEBPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_security/saimod_sys_security.css')));}

View File

@ -3,7 +3,6 @@
<td>${name}</td>
<td>${description}</td>
<td>
<input type="submit" class="btn-danger right_delete" value="delete" right_id="${ID}">
<input type="submit" class="btn right_edit" value="edit" right_id="${ID}">
${right_edit_btn}
</td>
</tr>

View File

@ -1,4 +1,4 @@
<input type="submit" class="btn" id="new_right" value="New Right">
${addright_btn}
</br></br>
<table class="table table-hover table-condensed" style="overflow: auto;">
<tr>

View File

@ -6,10 +6,10 @@
<td>${locale}</td>
<td>${time_elapsed}</td>
<td>${account_flag}</td>
<td>
<!--<td>
<input type="submit" class="btn" value="edit" user="${id}" action="edit">
<input type="submit" class="btn-danger" value="delete" user="${id}" action="delete">
</td>
</td>-->
<td>
<button type="submit" class="btn" value="reset_password" user="${id}" email="${email}">send EMail</button>
</td>

View File

@ -0,0 +1,7 @@
<tr>
<td>${ID}</td>
<td>${name}</td>
<td>${description}</td>
<td><span class="badge badge-success">true</span></td>
<td>${remove_btn}</td>
</tr>

View File

@ -0,0 +1 @@
<option ${selected} value="${ID}">${ID}: ${name} - ${description}</option>

View File

@ -0,0 +1,11 @@
<table class="table">
<tr>
<th>ID</td>
<th>Name</th>
<th>Description</th>
<th>Access</th>
<th>Remove</th>
</tr>
${user_rights_table}
${user_rights_add}
</table>

View File

@ -0,0 +1,4 @@
<tr>
<td colspan="4"><select id="adduserright_rightid">${right_options}</select></td>
<td><input type="submit" id="adduserright_add" class="btn" value="Add Right" user_id="${user_id}"/></td>
</tr>

View File

@ -32,5 +32,9 @@
<td>${account_flag}</td>
</tr>
</table>
</br>
<h4 class="text-info">Users Rights</h4>
${user_rights}
</br>
<h4 class="text-info">Users Last Actions</h4>
${user_actions}

View File

@ -12,7 +12,7 @@ Users: ${count}
<th>Locale</th>
<th>Last Active</th>
<th>Flag</th>
<th style="width: 110px;">Rights</th>
<!--<th style="width: 110px;">Rights</th>-->
<th>reset password</th>
</tr>
${rows}

View File

@ -4,10 +4,17 @@ namespace SYSTEM\SECURITY;
class RIGHTS {
//Never use anything with 0 in php
const SYS_DONOTUSE = 0;
const SYS_DONOTUSE = 0;
//System Administrator Interface
const SYS_SAI = 1;
const SYS_SAI = 1;
//Security Module
const SYS_SAI_SECURITY = 5; //access
const SYS_SAI_SECURITY_RIGHTS_EDIT = 6; //edit rights
//Database Text Module
const SYS_SAI_LOCALE = 10;
//Image Module
const SYS_SAI_IMG = 15;
//Reserve first 1000 ids.
const RESERVED_SYS_0_999 = 999;
}