Esempio n. 1
0
         //Timeout is over.
         //Reset the counter for next round of attempts after the timeout.
         $_SESSION['_staff']['laststrike'] = null;
         $_SESSION['_staff']['strikes'] = 0;
     }
 }
 if (!$errors && ($user = new StaffSession($_POST['username'])) && $user->getId() && $user->check_passwd($_POST['passwd'])) {
     //update last login.
     db_query('UPDATE ' . STAFF_TABLE . ' SET lastlogin=NOW() WHERE staff_id=' . db_input($user->getId()));
     //Figure out where the user is headed - destination!
     $dest = $_SESSION['_staff']['auth']['dest'];
     //Now set session crap and lets roll baby!
     $_SESSION['_staff'] = array();
     //clear.
     $_SESSION['_staff']['userID'] = $_POST['username'];
     $user->refreshSession();
     //set the hash.
     $_SESSION['TZ_OFFSET'] = $user->getTZoffset();
     $_SESSION['daylight'] = $user->observeDaylight();
     Sys::log(LOG_DEBUG, 'Inicio de sesión de Staff', sprintf("%s Identificado como [%s]", $user->getUserName(), $_SERVER['REMOTE_ADDR']));
     //Debug.
     //Redirect to the original destination. (make sure it is not redirecting to login page.)
     $dest = $dest && (!strstr($dest, 'login.php') && !strstr($dest, 'ajax.php')) ? $dest : 'index.php';
     session_write_close();
     session_regenerate_id();
     @header("Location: {$dest}");
     require_once 'index.php';
     //Just incase header is messed up.
     exit;
 }
 //If we get to this point we know the login failed.
Esempio n. 2
0
         $errors['err']='You\'ve reached maximum failed login attempts allowed.';
     }else{ //Timeout is over.
         //Reset the counter for next round of attempts after the timeout.
         $_SESSION['_staff']['laststrike']=null;
         $_SESSION['_staff']['strikes']=0;
     }
 }
 if(!$errors && ($user=new StaffSession($_POST['username'])) && $user->getId() && $user->check_passwd($_POST['passwd'])){
     //update last login.
     db_query('UPDATE '.STAFF_TABLE.' SET lastlogin=NOW() WHERE staff_id='.db_input($user->getId()));
     //Figure out where the user is headed - destination!
     $dest=$_SESSION['_staff']['auth']['dest'];
     //Now set session crap and lets roll baby!
     $_SESSION['_staff']=array(); //clear.
     $_SESSION['_staff']['userID']=$_POST['username'];
     $user->refreshSession(); //set the hash.
     $_SESSION['TZ_OFFSET']=$user->getTZoffset();
     $_SESSION['daylight']=$user->observeDaylight();
     Sys::log(LOG_DEBUG,'Staff login',sprintf("%s logged in [%s]",$user->getUserName(),$_SERVER['REMOTE_ADDR'])); //Debug.
     //Redirect to the original destination. (make sure it is not redirecting to login page.)
     $dest=($dest && (!strstr($dest,'login.php') && !strstr($dest,'ajax.php')))?$dest:'index.php';
     session_write_close();
     session_regenerate_id();
     @header("Location: $dest");
     require_once('index.php'); //Just incase header is messed up.
     exit;
 }
 //If we get to this point we know the login failed.
 $_SESSION['_staff']['strikes']+=1;
 if(!$errors && $_SESSION['_staff']['strikes']>$cfg->getStaffMaxLogins()) {
     $msg='Access Denied';
Esempio n. 3
0
}
//2) if not super admin..check system status and group status
if (!$thisstaff->isAdmin()) {
    //Check for disabled staff or group!
    if (!$thisstaff->isactive() || !$thisstaff->isGroupActive()) {
        staffLoginPage('Access Denied. Contact Admin');
        exit;
    }
    //Staff are not allowed to login in offline mode!!
    if (!$ost->isSystemOnline() || $ost->isUpgradePending()) {
        staffLoginPage('System Offline');
        exit;
    }
}
//Keep the session activity alive
$thisstaff->refreshSession();
/******* CSRF Protectin *************/
// Enforce CSRF protection for POSTS
if ($_POST && !$ost->checkCSRFToken()) {
    Http::response(400, 'Valid CSRF Token Required');
    exit;
}
//Add token to the header - used on ajax calls [DO NOT CHANGE THE NAME]
$ost->addExtraHeader('<meta name="csrf_token" content="' . $ost->getCSRFToken() . '" />');
/******* SET STAFF DEFAULTS **********/
//Set staff's timezone offset.
$_SESSION['TZ_OFFSET'] = $thisstaff->getTZoffset();
$_SESSION['TZ_DST'] = $thisstaff->observeDaylight();
define('PAGE_LIMIT', $thisstaff->getPageLimit() ? $thisstaff->getPageLimit() : DEFAULT_PAGE_LIMIT);
//Clear some vars. we use in all pages.
$errors = array();
Esempio n. 4
0
 function login($username, $passwd, &$errors, $strike = true)
 {
     global $ost, $cfg;
     if ($_SESSION['_staff']['laststrike']) {
         if (time() - $_SESSION['_staff']['laststrike'] < $cfg->getStaffLoginTimeout()) {
             $errors['err'] = 'You\'ve reached maximum failed login attempts allowed.';
         } else {
             //Timeout is over.
             //Reset the counter for next round of attempts after the timeout.
             $_SESSION['_staff']['laststrike'] = null;
             $_SESSION['_staff']['strikes'] = 0;
         }
     }
     if (!$errors && ($user = new StaffSession($username)) && $user->getId() && $user->check_passwd($passwd)) {
         //update last login && password reset stuff.
         $sql = 'UPDATE ' . STAFF_TABLE . ' SET lastlogin=NOW() ';
         if ($user->isPasswdResetDue() && !$user->isAdmin()) {
             $sql .= ',change_passwd=1';
         }
         $sql .= ' WHERE staff_id=' . db_input($user->getId());
         db_query($sql);
         //Now set session crap and lets roll baby!
         $_SESSION['_staff'] = array();
         //clear.
         $_SESSION['_staff']['userID'] = $username;
         $user->refreshSession();
         //set the hash.
         $_SESSION['TZ_OFFSET'] = $user->getTZoffset();
         $_SESSION['TZ_DST'] = $user->observeDaylight();
         $ost->logDebug('Staff login', sprintf("%s logged in [%s]", $user->getUserName(), $_SERVER['REMOTE_ADDR']));
         //Debug.
         $sid = session_id();
         //Current ID
         session_regenerate_id(TRUE);
         //Destroy old session ID - needed for PHP version < 5.1.0 TODO: remove when we move to php 5.3 as min. requirement.
         if (($session = $ost->getSession()) && is_object($session) && $sid) {
             $session->destroy($sid);
         }
         session_write_close();
         return $user;
     }
     //If we get to this point we know the login failed.
     $_SESSION['_staff']['strikes'] += 1;
     if (!$errors && $_SESSION['_staff']['strikes'] > $cfg->getStaffMaxLogins()) {
         $errors['err'] = 'Forgot your login info? Contact Admin.';
         $_SESSION['_staff']['laststrike'] = time();
         $alert = 'Excessive login attempts by a staff member?' . "\n" . 'Username: '******'username'] . "\n" . 'IP: ' . $_SERVER['REMOTE_ADDR'] . "\n" . 'TIME: ' . date('M j, Y, g:i a T') . "\n\n" . 'Attempts #' . $_SESSION['_staff']['strikes'] . "\n" . 'Timeout: ' . $cfg->getStaffLoginTimeout() / 60 . " minutes \n\n";
         $ost->logWarning('Excessive login attempts (' . $_POST['username'] . ')', $alert, $cfg->alertONLoginError());
     } elseif ($_SESSION['_staff']['strikes'] % 2 == 0) {
         //Log every other failed login attempt as a warning.
         $alert = 'Username: '******'username'] . "\n" . 'IP: ' . $_SERVER['REMOTE_ADDR'] . "\n" . 'TIME: ' . date('M j, Y, g:i a T') . "\n\n" . 'Attempts #' . $_SESSION['_staff']['strikes'];
         $ost->logWarning('Failed staff login attempt (' . $_POST['username'] . ')', $alert, false);
     }
     return false;
 }