private function setUserSession(array $user) {
session()->set('UserID', $user['UserID']);
session()->set('FirstName', $user['FirstName']);
session()->set('LastName', $user['LastName']);
session()->set('Email', $user['Email']);
session()->set('Role', $user['Role']);
session()->set('LoggedIn', TRUE);
$session_model = new SessionModel;
$session_model->where('UserID', $user['UserID'])->delete(); //Clean up old sessions
$session_data = [
'SessionID' => session_id(),
'UserID' => $user['UserID'],
];
$session_model->insert($session_data);
}
public function destroyUserSessions($user_id = -1) {
//Build array of sessions for UserID
$session_model = new SessionModel;
if($sessions = $session_model->where('UserID', $user_id)->findAll()) {
//Check for existing session
if(session_id())
session_write_close(); //Save existing session data and release lock
session_start(); //Start/resume Session
$current_session_id = session_id(); //Backup current Session ID
session_write_close(); //Save session data and release lock
//Destroy sessions matching UserID
foreach($sessions as $session) {
session_id($session['SessionID']); //Specify Session ID
session_start(); //Start specified Session
session_destroy(); //Destroy specified Session
session_write_close(); //Save session data and release lock
}
session_id($current_session_id); //Set original Session ID
session_start(); //Resume original session
session_write_close(); //Save session data and release lock
//Delete all sessions for UserID from the database
$session_model->where('UserID', $user_id)->delete();
}