- added build files for upcoming version 1.1.2
- improved ajax authentication check and "logout" notification | closed #198 - improved logging, added missing log file configuration to pathfinder.ini - added logging for "unauthorized" requests | closed #198 - updated js "jQuery" 1.11.3 -> 3.0.0 | #206 - updated js "datatables" plugin 1.10.7 -> 1.10.12 | #206 - updated js "mCustomScrollbar" 3.1.14 -> 3.1.4 | #206
This commit is contained in:
@@ -19,6 +19,8 @@ class Controller {
|
||||
const COOKIE_NAME_STATE = 'cookie';
|
||||
const COOKIE_PREFIX_CHARACTER = 'char';
|
||||
|
||||
const LOG_UNAUTHORIZED = 'IP: [%-20s] Agent: [%s]';
|
||||
|
||||
const ERROR_SESSION_SUSPECT = 'Suspect id: [%30s], ip: [%40s], new ip: [%40s], User-Agent: %s ';
|
||||
/**
|
||||
* @var \Base
|
||||
@@ -120,18 +122,13 @@ class Controller {
|
||||
$f3 = $this->getF3();
|
||||
if( ($ip = $session->ip() )!= $f3->get('IP') ){
|
||||
// IP address changed -> not critical
|
||||
$sessionSuspectLogFile = 'PATHFINDER.LOGFILES.SESSION_SUSPECT';
|
||||
if( !$f3->devoid($sessionSuspectLogFile) ){
|
||||
$this->getLogger(
|
||||
$f3->get($sessionSuspectLogFile)
|
||||
)->write( sprintf(
|
||||
self::ERROR_SESSION_SUSPECT,
|
||||
$sid,
|
||||
$session->ip(),
|
||||
$f3->get('IP'),
|
||||
$f3->get('AGENT')
|
||||
));
|
||||
}
|
||||
self::getLogger('SESSION_SUSPECT')->write( sprintf(
|
||||
self::ERROR_SESSION_SUSPECT,
|
||||
$sid,
|
||||
$session->ip(),
|
||||
$f3->get('IP'),
|
||||
$f3->get('AGENT')
|
||||
));
|
||||
// no more error handling here
|
||||
return true;
|
||||
}elseif($session->agent() != $f3->get('AGENT') ){
|
||||
@@ -398,24 +395,6 @@ class Controller {
|
||||
|
||||
// destroy session login data -------------------------------
|
||||
$f3->clear('SESSION');
|
||||
|
||||
if( $f3->get('AJAX') ){
|
||||
$return = (object) [];
|
||||
if(
|
||||
isset($params['reroute']) &&
|
||||
(bool)$params['reroute']
|
||||
){
|
||||
$return->reroute = rtrim(self::getEnvironmentData('URL'), '/') . $f3->alias('login');
|
||||
}else{
|
||||
// no reroute -> errors can be shown
|
||||
$return->error[] = $this->getLogoutError();
|
||||
}
|
||||
|
||||
echo json_encode($return);
|
||||
}else{
|
||||
// redirect to landing page
|
||||
$f3->reroute('@login');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -556,11 +535,51 @@ class Controller {
|
||||
|
||||
/**
|
||||
* Callback for framework "unload"
|
||||
* check -> config.ini
|
||||
* -> this function is called on each request!
|
||||
* -> configured in config.ini
|
||||
* @param \Base $f3
|
||||
* @return bool
|
||||
*/
|
||||
public function unload(\Base $f3){
|
||||
// track some 4xx Client side errors
|
||||
// 5xx errors are handled in "ONERROR" callback
|
||||
$status = http_response_code();
|
||||
$halt = false;
|
||||
|
||||
switch( $status ){
|
||||
case 403: // Unauthorized
|
||||
self::getLogger('UNAUTHORIZED')->write(sprintf(
|
||||
self::LOG_UNAUTHORIZED,
|
||||
$f3->get('IP'),
|
||||
$f3->get('AGENT')
|
||||
));
|
||||
$halt = true;
|
||||
break;
|
||||
}
|
||||
|
||||
// Ajax
|
||||
if(
|
||||
$halt &&
|
||||
$f3->get('AJAX')
|
||||
){
|
||||
$params = (array)$f3->get('POST');
|
||||
$response = (object) [];
|
||||
$response->type = 'error';
|
||||
$response->code = $status;
|
||||
$response->message = 'Access denied: User not found';
|
||||
|
||||
$return = (object) [];
|
||||
if( (bool)$params['reroute']){
|
||||
$return->reroute = rtrim(self::getEnvironmentData('URL'), '/') . $f3->alias('login');
|
||||
}else{
|
||||
// no reroute -> errors can be shown
|
||||
$return->error[] = $response;
|
||||
}
|
||||
|
||||
echo json_encode($return);
|
||||
die();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -680,12 +699,13 @@ class Controller {
|
||||
}
|
||||
|
||||
/**
|
||||
* get a log controller e.g. "debug"
|
||||
* @param string $loggerType
|
||||
* @return \Log
|
||||
* get a Logger object by Hive key
|
||||
* -> set in pathfinder.ini
|
||||
* @param string $type
|
||||
* @return \Log|null
|
||||
*/
|
||||
static function getLogger($loggerType){
|
||||
return LogController::getLogger($loggerType);
|
||||
static function getLogger($type){
|
||||
return LogController::getLogger($type);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user