Add session helper class and move remainder of session validation logic to Session class

This commit is contained in:
Kijin Sung 2017-02-10 20:50:38 +09:00
parent 14d464da22
commit dfdbc1db85
5 changed files with 130 additions and 72 deletions

View 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;
}
}

View file

@ -585,7 +585,7 @@ class Session
$member_srl = intval($member_srl) ?: (isset($_SESSION['RHYMIX']['login']) ? $_SESSION['RHYMIX']['login'] : 0);
if (!$member_srl)
{
return true;
return false;
}
// Get the invalidation timestamp.
@ -601,10 +601,20 @@ class Session
{
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.
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.
if (self::$_member_info == new \stdClass)
{
return false;
}
else
{
return self::$_member_info;
}
return self::$_member_info->member_srl ? self::$_member_info : false;
}
/**