mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-05-10 04:24:14 +09:00
Add session helper class and move remainder of session validation logic to Session class
This commit is contained in:
parent
14d464da22
commit
dfdbc1db85
5 changed files with 130 additions and 72 deletions
|
|
@ -347,24 +347,14 @@ class Context
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
// set authentication information in Context and session
|
// set authentication information in Context and session
|
||||||
if(self::isInstalled())
|
if (self::isInstalled())
|
||||||
{
|
{
|
||||||
$oModuleModel = getModel('module');
|
$oModuleModel = getModel('module');
|
||||||
$oModuleModel->loadModuleExtends();
|
$oModuleModel->loadModuleExtends();
|
||||||
|
|
||||||
$oMemberModel = getModel('member');
|
if (Rhymix\Framework\Session::getMemberSrl())
|
||||||
$oMemberController = getController('member');
|
|
||||||
|
|
||||||
if($oMemberController && $oMemberModel)
|
|
||||||
{
|
{
|
||||||
// if signed in, validate it.
|
getController('member')->setSessionInfo();
|
||||||
if(Rhymix\Framework\Session::getMemberSrl())
|
|
||||||
{
|
|
||||||
$oMemberController->setSessionInfo();
|
|
||||||
}
|
|
||||||
|
|
||||||
self::set('is_logged', $oMemberModel->isLogged());
|
|
||||||
self::set('logged_info', $oMemberModel->getLoggedInfo());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
101
common/framework/helpers/sessionhelper.php
Normal file
101
common/framework/helpers/sessionhelper.php
Normal file
|
|
@ -0,0 +1,101 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Rhymix\Framework\Helpers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Session helper class.
|
||||||
|
*/
|
||||||
|
class SessionHelper
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Instance properties.
|
||||||
|
*/
|
||||||
|
public $member_srl = 0;
|
||||||
|
public $is_admin = 'N';
|
||||||
|
public $group_list = array();
|
||||||
|
public $menu_list = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @param int $member_srl
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct($member_srl)
|
||||||
|
{
|
||||||
|
// Load member information.
|
||||||
|
$member_srl = intval($member_srl);
|
||||||
|
if ($member_srl)
|
||||||
|
{
|
||||||
|
$oMemberModel = getModel('member');
|
||||||
|
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||||
|
if (intval($member_info->member_srl) === $member_srl)
|
||||||
|
{
|
||||||
|
foreach (get_object_vars($member_info) as $key => $value)
|
||||||
|
{
|
||||||
|
$this->{$key} = $value;
|
||||||
|
}
|
||||||
|
$this->member_srl = $member_srl;
|
||||||
|
$this->group_list = $oMemberModel->getMemberGroups($member_srl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if this user is a member.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function isMember()
|
||||||
|
{
|
||||||
|
return $this->member_srl > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if this user is an administrator.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function isAdmin()
|
||||||
|
{
|
||||||
|
return $this->is_admin === 'Y';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if this user is an administrator of a module.
|
||||||
|
*
|
||||||
|
* @param int $module_srl (optional)
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function isModuleAdmin($module_srl = null)
|
||||||
|
{
|
||||||
|
return $this->is_admin === 'Y' || getModel('module')->isModuleAdmin($this, $module_srl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if this user is valid (not denied or limited).
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function isValid()
|
||||||
|
{
|
||||||
|
if ($this->denied === 'N' && (!$this->limit_date || substr($this->limit_date, 0, 8) < date('Ymd')))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the list of groups that this user belongs to.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function getGroups()
|
||||||
|
{
|
||||||
|
return $this->group_list;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -585,7 +585,7 @@ class Session
|
||||||
$member_srl = intval($member_srl) ?: (isset($_SESSION['RHYMIX']['login']) ? $_SESSION['RHYMIX']['login'] : 0);
|
$member_srl = intval($member_srl) ?: (isset($_SESSION['RHYMIX']['login']) ? $_SESSION['RHYMIX']['login'] : 0);
|
||||||
if (!$member_srl)
|
if (!$member_srl)
|
||||||
{
|
{
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the invalidation timestamp.
|
// Get the invalidation timestamp.
|
||||||
|
|
@ -601,10 +601,20 @@ class Session
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
// Check member information to see if denied or limited.
|
||||||
|
$member_info = getModel('member')->getMemberInfoByMemberSrl($member_srl);
|
||||||
|
if ($member_info->denied === 'Y')
|
||||||
{
|
{
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ($member_info->limit_date && substr($member_info->limit_date, 0, 8) >= date('Ymd'))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return true if all checks have passed.
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -638,18 +648,11 @@ class Session
|
||||||
// Create a member info object.
|
// Create a member info object.
|
||||||
if (!self::$_member_info || self::$_member_info->member_srl != $member_srl)
|
if (!self::$_member_info || self::$_member_info->member_srl != $member_srl)
|
||||||
{
|
{
|
||||||
self::$_member_info = getModel('member')->getMemberInfoByMemberSrl($member_srl);
|
self::$_member_info = new Helpers\SessionHelper($member_srl);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return the member info object.
|
// Return the member info object.
|
||||||
if (self::$_member_info == new \stdClass)
|
return self::$_member_info->member_srl ? self::$_member_info : false;
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return self::$_member_info;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1914,22 +1914,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 && $member_srl = Rhymix\Framework\Session::getMemberSrl())
|
if(!$this->memberInfo && Rhymix\Framework\Session::getMemberSrl())
|
||||||
{
|
{
|
||||||
$this->memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
$this->memberInfo = Rhymix\Framework\Session::getMemberInfo();
|
||||||
// If you do not destroy the session Profile
|
|
||||||
if($this->memberInfo->member_srl != $member_srl)
|
|
||||||
{
|
|
||||||
$this->destroySessionInfo();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Stop using the session id is destroyed
|
|
||||||
if($this->memberInfo->denied=='Y')
|
|
||||||
{
|
|
||||||
$this->destroySessionInfo();
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Log in for treatment sessions set
|
// Log in for treatment sessions set
|
||||||
|
|
|
||||||
|
|
@ -241,39 +241,7 @@ class memberModel extends member
|
||||||
*/
|
*/
|
||||||
function getLoggedInfo()
|
function getLoggedInfo()
|
||||||
{
|
{
|
||||||
// Return session info if session info is requested and the user is logged-in
|
return Context::get('logged_info');
|
||||||
if(Rhymix\Framework\Session::getMemberSrl())
|
|
||||||
{
|
|
||||||
$logged_info = Context::get('logged_info');
|
|
||||||
// Admin/Group list defined depending on site_module_info
|
|
||||||
$site_module_info = Context::get('site_module_info');
|
|
||||||
if($site_module_info->site_srl)
|
|
||||||
{
|
|
||||||
$logged_info->group_list = $this->getMemberGroups($logged_info->member_srl, $site_module_info->site_srl);
|
|
||||||
// Add is_site_admin bool variable into logged_info if site_administrator is
|
|
||||||
$oModuleModel = getModel('module');
|
|
||||||
if($oModuleModel->isSiteAdmin($logged_info)) $logged_info->is_site_admin = true;
|
|
||||||
else $logged_info->is_site_admin = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Register a default group if the site doesn't have a member group
|
|
||||||
if(count($logged_info->group_list) === 0)
|
|
||||||
{
|
|
||||||
$default_group = $this->getDefaultGroup(0);
|
|
||||||
$oMemberController = getController('member');
|
|
||||||
$oMemberController->addMemberToGroup($logged_info->member_srl, $default_group->group_srl, 0);
|
|
||||||
$groups[$default_group->group_srl] = $default_group->title;
|
|
||||||
$logged_info->group_list = $groups;
|
|
||||||
}
|
|
||||||
|
|
||||||
$logged_info->is_site_admin = false;
|
|
||||||
}
|
|
||||||
Context::set('logged_info', $logged_info);
|
|
||||||
|
|
||||||
return $logged_info;
|
|
||||||
}
|
|
||||||
return new stdClass;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -371,6 +339,7 @@ class memberModel extends member
|
||||||
}
|
}
|
||||||
$info->signature = $this->getSignature($info->member_srl);
|
$info->signature = $this->getSignature($info->member_srl);
|
||||||
$info->group_list = $this->getMemberGroups($info->member_srl, $site_srl);
|
$info->group_list = $this->getMemberGroups($info->member_srl, $site_srl);
|
||||||
|
$info->is_site_admin = $oModuleModel->isSiteAdmin($info) ? true : false;
|
||||||
|
|
||||||
$extra_vars = unserialize($info->extra_vars);
|
$extra_vars = unserialize($info->extra_vars);
|
||||||
unset($info->extra_vars);
|
unset($info->extra_vars);
|
||||||
|
|
@ -499,6 +468,12 @@ class memberModel extends member
|
||||||
$args->site_srl = $site_srl;
|
$args->site_srl = $site_srl;
|
||||||
$output = executeQueryArray('member.getMemberGroups', $args);
|
$output = executeQueryArray('member.getMemberGroups', $args);
|
||||||
$group_list = $output->data;
|
$group_list = $output->data;
|
||||||
|
if (!count($group_list))
|
||||||
|
{
|
||||||
|
$default_group = $this->getDefaultGroup($site_srl);
|
||||||
|
getController('member')->addMemberToGroup($member_srl, $default_group->group_srl, $site_srl);
|
||||||
|
$group_list[$default_group->group_srl] = $default_group->title;
|
||||||
|
}
|
||||||
//insert in cache
|
//insert in cache
|
||||||
Rhymix\Framework\Cache::set($cache_key, $group_list, 0, true);
|
Rhymix\Framework\Cache::set($cache_key, $group_list, 0, true);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue