mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-05-22 05:15:29 +09:00
Integrate session class with Context class and Member module
This commit is contained in:
parent
12ee156374
commit
d07bd15b80
4 changed files with 66 additions and 64 deletions
|
|
@ -354,7 +354,8 @@ class Context
|
||||||
if($session_id !== NULL || !config('session.delay'))
|
if($session_id !== NULL || !config('session.delay'))
|
||||||
{
|
{
|
||||||
$this->setCacheControl(0, false);
|
$this->setCacheControl(0, false);
|
||||||
session_start();
|
$relax_key_checks = ($this->act === 'procFileUpload' && preg_match('/shockwave\s?flash/i', $_SERVER['HTTP_USER_AGENT']));
|
||||||
|
Rhymix\Framework\Session::start($relax_key_checks);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -376,7 +377,7 @@ class Context
|
||||||
if($oMemberController && $oMemberModel)
|
if($oMemberController && $oMemberModel)
|
||||||
{
|
{
|
||||||
// if signed in, validate it.
|
// if signed in, validate it.
|
||||||
if($oMemberModel->isLogged())
|
if(Rhymix\Framework\Session::getMemberSrl())
|
||||||
{
|
{
|
||||||
$oMemberController->setSessionInfo();
|
$oMemberController->setSessionInfo();
|
||||||
}
|
}
|
||||||
|
|
@ -387,12 +388,9 @@ class Context
|
||||||
}
|
}
|
||||||
|
|
||||||
self::set('is_logged', $oMemberModel->isLogged());
|
self::set('is_logged', $oMemberModel->isLogged());
|
||||||
if($oMemberModel->isLogged())
|
|
||||||
{
|
|
||||||
self::set('logged_info', $oMemberModel->getLoggedInfo());
|
self::set('logged_info', $oMemberModel->getLoggedInfo());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// set locations for javascript use
|
// set locations for javascript use
|
||||||
$current_url = $request_uri = self::getRequestUri();
|
$current_url = $request_uri = self::getRequestUri();
|
||||||
|
|
@ -428,7 +426,7 @@ class Context
|
||||||
*/
|
*/
|
||||||
public static function getSessionStatus()
|
public static function getSessionStatus()
|
||||||
{
|
{
|
||||||
return (session_id() !== '');
|
return Rhymix\Framework\Session::isStarted();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -446,8 +444,14 @@ class Context
|
||||||
{
|
{
|
||||||
$tempSession = $_SESSION;
|
$tempSession = $_SESSION;
|
||||||
unset($_SESSION);
|
unset($_SESSION);
|
||||||
session_start();
|
Rhymix\Framework\Session::start();
|
||||||
$_SESSION = $tempSession;
|
foreach ($tempSession as $key => $val)
|
||||||
|
{
|
||||||
|
if ($key !== 'RHYMIX')
|
||||||
|
{
|
||||||
|
$_SESSION[$key] = $val;
|
||||||
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -469,7 +473,7 @@ class Context
|
||||||
// Check session status and close it if open.
|
// Check session status and close it if open.
|
||||||
if (self::checkSessionStatus())
|
if (self::checkSessionStatus())
|
||||||
{
|
{
|
||||||
session_write_close();
|
Rhymix\Framework\Session::close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ class Session
|
||||||
* Properties for internal use only.
|
* Properties for internal use only.
|
||||||
*/
|
*/
|
||||||
protected static $_started = false;
|
protected static $_started = false;
|
||||||
|
protected static $_member_info = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a session variable.
|
* Get a session variable.
|
||||||
|
|
@ -83,6 +84,9 @@ class Session
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Mark the session as started.
|
||||||
|
self::$_started = true;
|
||||||
|
|
||||||
// Fetch session keys.
|
// Fetch session keys.
|
||||||
list($key1, $key2) = self::_getKeys();
|
list($key1, $key2) = self::_getKeys();
|
||||||
$must_create = $must_refresh = $must_resend_keys = false;
|
$must_create = $must_refresh = $must_resend_keys = false;
|
||||||
|
|
@ -131,12 +135,6 @@ class Session
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check the IP address.
|
|
||||||
if (!$must_create && !Filters\IpFilter::inRange(\RX_CLIENT_IP, $_SESSION['RHYMIX']['ipaddress']))
|
|
||||||
{
|
|
||||||
$must_create = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check the refresh interval.
|
// Check the refresh interval.
|
||||||
if (!$must_create && $_SESSION['RHYMIX']['keys'][$domain]['key1_time'] < time() - $refresh_interval && !$relax_key_checks)
|
if (!$must_create && $_SESSION['RHYMIX']['keys'][$domain]['key1_time'] < time() - $refresh_interval && !$relax_key_checks)
|
||||||
{
|
{
|
||||||
|
|
@ -178,6 +176,7 @@ class Session
|
||||||
// Ensure backward compatibility with XE session.
|
// Ensure backward compatibility with XE session.
|
||||||
$member_srl = $_SESSION['member_srl'] ?: false;
|
$member_srl = $_SESSION['member_srl'] ?: false;
|
||||||
$_SESSION['is_logged'] = (bool)$member_srl;
|
$_SESSION['is_logged'] = (bool)$member_srl;
|
||||||
|
$_SESSION['is_admin'] = '';
|
||||||
|
|
||||||
// Create the data structure for a new Rhymix session.
|
// Create the data structure for a new Rhymix session.
|
||||||
$_SESSION['RHYMIX'] = array();
|
$_SESSION['RHYMIX'] = array();
|
||||||
|
|
@ -300,7 +299,17 @@ class Session
|
||||||
{
|
{
|
||||||
$_SESSION['RHYMIX']['login'] = $_SESSION['member_srl'] = false;
|
$_SESSION['RHYMIX']['login'] = $_SESSION['member_srl'] = false;
|
||||||
$_SESSION['is_logged'] = false;
|
$_SESSION['is_logged'] = false;
|
||||||
self::refresh();
|
self::destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the session has been started.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function isStarted()
|
||||||
|
{
|
||||||
|
return self::$_started;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -324,7 +333,8 @@ class Session
|
||||||
*/
|
*/
|
||||||
public static function isAdmin()
|
public static function isAdmin()
|
||||||
{
|
{
|
||||||
|
$member_info = self::getMemberInfo();
|
||||||
|
return ($member_info && $member_info->is_admin === 'Y');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -373,7 +383,21 @@ class Session
|
||||||
*/
|
*/
|
||||||
public static function getMemberInfo()
|
public static function getMemberInfo()
|
||||||
{
|
{
|
||||||
|
// Return false if the current user is not logged in.
|
||||||
|
$member_srl = self::getMemberSrl();
|
||||||
|
if (!$member_srl)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a member info object.
|
||||||
|
if (!self::$_member_info)
|
||||||
|
{
|
||||||
|
!self::$_member_info = getModel('member')->getMemberInfoByMemberSrl($member_srl);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the member info object.
|
||||||
|
return self::$_member_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,8 @@ class memberController extends member
|
||||||
if(!$trigger_output->toBool()) return $trigger_output;
|
if(!$trigger_output->toBool()) return $trigger_output;
|
||||||
|
|
||||||
// Destroy session information
|
// Destroy session information
|
||||||
$this->destroySessionInfo();
|
Rhymix\Framework\Session::logout();
|
||||||
|
$this->_clearMemberCache($logged_info->member_srl);
|
||||||
|
|
||||||
// Call a trigger after log-out (after)
|
// Call a trigger after log-out (after)
|
||||||
ModuleHandler::triggerCall('member.doLogout', 'after', $logged_info);
|
ModuleHandler::triggerCall('member.doLogout', 'after', $logged_info);
|
||||||
|
|
@ -111,9 +112,9 @@ class memberController extends member
|
||||||
$oModuleModel = getModel('module');
|
$oModuleModel = getModel('module');
|
||||||
$config = $oModuleModel->getModuleConfig('member');
|
$config = $oModuleModel->getModuleConfig('member');
|
||||||
if($config->after_logout_url)
|
if($config->after_logout_url)
|
||||||
|
{
|
||||||
$output->redirect_url = $config->after_logout_url;
|
$output->redirect_url = $config->after_logout_url;
|
||||||
|
}
|
||||||
$this->_clearMemberCache($logged_info->member_srl);
|
|
||||||
|
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
@ -700,7 +701,7 @@ class memberController extends member
|
||||||
$output = $this->deleteMember($member_srl);
|
$output = $this->deleteMember($member_srl);
|
||||||
if(!$output->toBool()) return $output;
|
if(!$output->toBool()) return $output;
|
||||||
// Destroy all session information
|
// Destroy all session information
|
||||||
$this->destroySessionInfo();
|
Rhymix\Framework\Session::logout();
|
||||||
// Return success message
|
// Return success message
|
||||||
$this->setMessage('success_leaved');
|
$this->setMessage('success_leaved');
|
||||||
|
|
||||||
|
|
@ -1844,6 +1845,7 @@ class memberController extends member
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->setSessionInfo();
|
$this->setSessionInfo();
|
||||||
|
Rhymix\Framework\Session::login($this->memberInfo->member_srl);
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1855,11 +1857,11 @@ class memberController extends member
|
||||||
$oMemberModel = getModel('member');
|
$oMemberModel = getModel('member');
|
||||||
$config = $oMemberModel->getMemberConfig();
|
$config = $oMemberModel->getMemberConfig();
|
||||||
// If your information came through the current session information to extract information from the users
|
// If your information came through the current session information to extract information from the users
|
||||||
if(!$this->memberInfo && $_SESSION['member_srl'] && $oMemberModel->isLogged() )
|
if(!$this->memberInfo && $member_srl = Rhymix\Framework\Session::getMemberSrl())
|
||||||
{
|
{
|
||||||
$this->memberInfo = $oMemberModel->getMemberInfoByMemberSrl($_SESSION['member_srl']);
|
$this->memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||||
// If you do not destroy the session Profile
|
// If you do not destroy the session Profile
|
||||||
if($this->memberInfo->member_srl != $_SESSION['member_srl'])
|
if($this->memberInfo->member_srl != $member_srl)
|
||||||
{
|
{
|
||||||
$this->destroySessionInfo();
|
$this->destroySessionInfo();
|
||||||
return;
|
return;
|
||||||
|
|
@ -1872,11 +1874,11 @@ class memberController extends member
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Log in for treatment sessions set
|
// Log in for treatment sessions set
|
||||||
|
/*
|
||||||
$_SESSION['is_logged'] = true;
|
$_SESSION['is_logged'] = true;
|
||||||
$_SESSION['ipaddress'] = $_SERVER['REMOTE_ADDR'];
|
$_SESSION['member_srl'] = $_SESSION['RHYMIX']['login'] = $this->memberInfo->member_srl;
|
||||||
$_SESSION['member_srl'] = $this->memberInfo->member_srl;
|
|
||||||
$_SESSION['is_admin'] = '';
|
$_SESSION['is_admin'] = '';
|
||||||
setcookie('xe_logged', 'true', 0, '/');
|
*/
|
||||||
// Do not save your password in the session jiwojum;;
|
// Do not save your password in the session jiwojum;;
|
||||||
//unset($this->memberInfo->password);
|
//unset($this->memberInfo->password);
|
||||||
// User Group Settings
|
// User Group Settings
|
||||||
|
|
@ -2582,7 +2584,7 @@ class memberController extends member
|
||||||
$_SESSION[$key] = '';
|
$_SESSION[$key] = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
session_destroy();
|
Rhymix\Framework\Session::destroy();
|
||||||
setcookie(session_name(), '', $_SERVER['REQUEST_TIME']-42000, '/');
|
setcookie(session_name(), '', $_SERVER['REQUEST_TIME']-42000, '/');
|
||||||
setcookie('sso','',$_SERVER['REQUEST_TIME']-42000, '/');
|
setcookie('sso','',$_SERVER['REQUEST_TIME']-42000, '/');
|
||||||
setcookie('xeak','',$_SERVER['REQUEST_TIME']-42000, '/');
|
setcookie('xeak','',$_SERVER['REQUEST_TIME']-42000, '/');
|
||||||
|
|
|
||||||
|
|
@ -200,36 +200,9 @@ class memberModel extends member
|
||||||
/**
|
/**
|
||||||
* @brief Check if logged-in
|
* @brief Check if logged-in
|
||||||
*/
|
*/
|
||||||
function isLogged() {
|
function isLogged()
|
||||||
if($_SESSION['is_logged'])
|
|
||||||
{
|
{
|
||||||
if(Mobile::isFromMobilePhone())
|
return Rhymix\Framework\Session::getMemberSrl() ? true : false;
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
elseif(filter_var($_SESSION['ipaddress'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6))
|
|
||||||
{
|
|
||||||
// IPv6: require same /48
|
|
||||||
if(strncmp(inet_pton($_SESSION['ipaddress']), inet_pton($_SERVER['REMOTE_ADDR']), 6) == 0)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// IPv4: require same /24
|
|
||||||
if(ip2long($_SESSION['ipaddress']) >> 8 == ip2long($_SERVER['REMOTE_ADDR']) >> 8)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(Context::getSessionStatus())
|
|
||||||
{
|
|
||||||
$_SESSION['is_logged'] = false;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -238,7 +211,7 @@ class memberModel extends member
|
||||||
function getLoggedInfo()
|
function getLoggedInfo()
|
||||||
{
|
{
|
||||||
// Return session info if session info is requested and the user is logged-in
|
// Return session info if session info is requested and the user is logged-in
|
||||||
if($this->isLogged())
|
if(Rhymix\Framework\Session::getMemberSrl())
|
||||||
{
|
{
|
||||||
$logged_info = Context::get('logged_info');
|
$logged_info = Context::get('logged_info');
|
||||||
// Admin/Group list defined depending on site_module_info
|
// Admin/Group list defined depending on site_module_info
|
||||||
|
|
@ -462,8 +435,7 @@ class memberModel extends member
|
||||||
*/
|
*/
|
||||||
function getLoggedMemberSrl()
|
function getLoggedMemberSrl()
|
||||||
{
|
{
|
||||||
if(!$this->isLogged()) return;
|
return Rhymix\Framework\Session::getMemberSrl();
|
||||||
return $_SESSION['member_srl'];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue