diff --git a/sai/autoload.inc.php b/sai/autoload.inc.php index 41ec887..c21c60d 100644 --- a/sai/autoload.inc.php +++ b/sai/autoload.inc.php @@ -6,12 +6,11 @@ $autoload->registerFolder(dirname(__FILE__).'/sai','SYSTEM\SAI'); $autoload->registerFolder(dirname(__FILE__).'/page','SYSTEM\SAI'); $autoload->registerFolder(dirname(__FILE__).'/page/default_page','SYSTEM\SAI'); $autoload->registerFolder(dirname(__FILE__).'/page/default_module','SYSTEM\SAI'); -//$autoload->registerFolder(dirname(__FILE__).'/page/login_page','SYSTEM\SAI'); $autoload->registerFolder(dirname(__FILE__).'/modules','SYSTEM\SAI'); $autoload->registerFolder(dirname(__FILE__).'/modules/saimod_sys_sai','SYSTEM\SAI'); $autoload->registerFolder(dirname(__FILE__).'/modules/saimod_sys_login','SYSTEM\SAI'); $autoload->registerFolder(dirname(__FILE__).'/modules/saimod_sys_error','SYSTEM\SAI'); -//$autoload->registerFolder(dirname(__FILE__).'/modules/badge_creator','SYSTEM\SAI'); +$autoload->registerFolder(dirname(__FILE__).'/modules/saimod_sys_security','SYSTEM\SAI'); require_once dirname(__FILE__).'/modules/register_modules.php'; \ No newline at end of file diff --git a/sai/modules/register_modules.php b/sai/modules/register_modules.php index 8a8f0b0..5369721 100644 --- a/sai/modules/register_modules.php +++ b/sai/modules/register_modules.php @@ -3,8 +3,8 @@ \SYSTEM\SAI\sai::getInstance()->register_sys('\SYSTEM\SAI\saimod_sys_sai'); \SYSTEM\SAI\sai::getInstance()->register_sys('\SYSTEM\SAI\saimod_sys_login'); \SYSTEM\SAI\sai::getInstance()->register_sys('\SYSTEM\SAI\saimod_sys_error'); +\SYSTEM\SAI\sai::getInstance()->register_sys('\SYSTEM\SAI\saimod_sys_security'); //\SYSTEM\SAI\sai::getInstance()->register('\SYSTEM\SAI\saimod_sys_sys'); //\SYSTEM\SAI\sai::getInstance()->register('\SYSTEM\SAI\saimod_sys_api'); //\SYSTEM\SAI\sai::getInstance()->register('\SYSTEM\SAI\saimod_sys_page'); -//\SYSTEM\SAI\sai::getInstance()->register('\SYSTEM\SAI\saimod_sys_security'); //\SYSTEM\SAI\sai::getInstance()->register('\SYSTEM\SAI\saimod_sys_docu'); \ No newline at end of file diff --git a/sai/modules/saimod_sys_security/saimod_sys_security.php b/sai/modules/saimod_sys_security/saimod_sys_security.php new file mode 100644 index 0000000..e3417b3 --- /dev/null +++ b/sai/modules/saimod_sys_security/saimod_sys_security.php @@ -0,0 +1,40 @@ +query('SELECT id,username,email,joindate,locale,last_active,account_flag FROM system.user ORDER BY last_active DESC;'); + + + $now = microtime(true); + + $result = ''. + ''.''.''.''.''.''.''.''.''.''; + while($r = $res->next()){ + $result .= ''.''.''.''.''.''.''.''.''.''; + } + $result .= '
'.'ID'.''.'Username'.''.'EMail'.''.'JoinDate'.''.'Locale'.''.'Last Active'.''.'Flag'.''.'Rights'.'
'.$r['id'].''.$r['username'].''.$r['email'].''.$r['joindate'].''.$r['locale'].''.$r['last_active'].''.$r['account_flag'].''.'BUTTON'.'
'; + return $result; + } + + private static function tablerow_class($last_active){ + $time = time() - strtotime($last_active); + + if($time <= 60*60){ + return 'success';} + if($time <= 60*60*24){ + return 'info';} + if($time <= 60*60*24*7){ + return 'warning';} + + return 'error'; + } + + public static function html_li_menu(){return '
  • SYS Security
  • ';} + public static function right_public(){return false;} + public static function right_right(){return \SYSTEM\SECURITY\Security::check(\SYSTEM\system::getSystemDBInfo(), \SYSTEM\SECURITY\RIGHTS::SYS_SAI);} + + public static function src_css(){} + public static function src_js(){} +} \ No newline at end of file diff --git a/security/Security.php b/security/Security.php index 447496e..9dcd7d0 100644 --- a/security/Security.php +++ b/security/Security.php @@ -61,13 +61,13 @@ class Security { //Database check if(!$result){ - self::trackLogins($dbinfo, NULL, self::LOGIN_FAIL); + new \SYSTEM\LOG\WARNING("Login Failed, Db result was not valid"); $_SESSION['user'] = NULL; return self::LOGIN_FAIL;} $row = $result->next(); if(!$row){ - self::trackLogins($dbinfo, NULL, self::LOGIN_FAIL); + new \SYSTEM\LOG\WARNING("Login Failed, User was not found in db"); $_SESSION['user'] = NULL; return self::LOGIN_FAIL;} @@ -93,16 +93,16 @@ class Security { if(isset($locale)){ \SYSTEM\locale::set($locale);} // track succesful user login - self::trackLogins($dbinfo, $row[\SYSTEM\DBD\UserTable::FIELD_ID], self::LOGIN_OK); + self::trackLogins($dbinfo, $row[\SYSTEM\DBD\UserTable::FIELD_ID]); return ($advancedResult ? $row : self::LOGIN_OK); } - private static function trackLogins(\SYSTEM\DB\DBInfo $dbinfo, $userID, $succ){ + private static function trackLogins(\SYSTEM\DB\DBInfo $dbinfo, $userID){ $con = new \SYSTEM\DB\Connection($dbinfo); $con->prepare( 'trackLoginAccountStmt', - 'INSERT INTO '.\SYSTEM\DBD\UserLoginsTable::NAME.' ("'.\SYSTEM\DBD\UserLoginsTable::FIELD_USERID.'","'. - \SYSTEM\DBD\UserLoginsTable::FIELD_IP.'",'.\SYSTEM\DBD\UserLoginsTable::FIELD_SUCC.') VALUES ($1,$2,$3)', - array(isset($userID) ? $userID : -1, getenv('REMOTE_ADDR'), (int)$succ )); + 'UPDATE '.\SYSTEM\DBD\UserTable::NAME_PG.' SET '.\SYSTEM\DBD\UserTable::FIELD_LAST_ACTIVE.'= to_timestamp($1) '. + 'WHERE '.\SYSTEM\DBD\UserTable::FIELD_ID.' = $2;', + array(microtime(true), $userID)); } public static function getUser(){