save
This commit is contained in:
parent
776099e197
commit
37926d7bad
@ -3,10 +3,13 @@
|
|||||||
* Here is your custom functions.
|
* Here is your custom functions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use app\model\User;
|
||||||
|
use plugin\admin\app\model\Admin;
|
||||||
|
use support\exception\BusinessException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 当前登录管理员id
|
* 当前管理员id
|
||||||
*
|
* @return integer|null
|
||||||
* @return mixed|null
|
|
||||||
*/
|
*/
|
||||||
function admin_id()
|
function admin_id()
|
||||||
{
|
{
|
||||||
@ -15,12 +18,13 @@ function admin_id()
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 当前管理员
|
* 当前管理员
|
||||||
*
|
|
||||||
* @param null|array|string $fields
|
* @param null|array|string $fields
|
||||||
* @return array|mixed|null
|
* @return array|mixed|null
|
||||||
|
* @throws BusinessException
|
||||||
*/
|
*/
|
||||||
function admin($fields = null)
|
function admin($fields = null)
|
||||||
{
|
{
|
||||||
|
refresh_admin_session();
|
||||||
if (!$admin = session('admin')) {
|
if (!$admin = session('admin')) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -39,8 +43,7 @@ function admin($fields = null)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 当前登录用户id
|
* 当前登录用户id
|
||||||
*
|
* @return integer|null
|
||||||
* @return mixed|null
|
|
||||||
*/
|
*/
|
||||||
function user_id()
|
function user_id()
|
||||||
{
|
{
|
||||||
@ -49,12 +52,13 @@ function user_id()
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 当前登录用户
|
* 当前登录用户
|
||||||
*
|
|
||||||
* @param null|array|string $fields
|
* @param null|array|string $fields
|
||||||
* @return array|mixed|null
|
* @return array|mixed|null
|
||||||
|
* @throws BusinessException
|
||||||
*/
|
*/
|
||||||
function user($fields = null)
|
function user($fields = null)
|
||||||
{
|
{
|
||||||
|
refresh_user_session();
|
||||||
if (!$user = session('user')) {
|
if (!$user = session('user')) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -70,3 +74,59 @@ function user($fields = null)
|
|||||||
}
|
}
|
||||||
return $user[$fields] ?? null;
|
return $user[$fields] ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 刷新当前管理员session
|
||||||
|
* @param bool $force
|
||||||
|
* @return void
|
||||||
|
* @throws BusinessException
|
||||||
|
*/
|
||||||
|
function refresh_admin_session(bool $force = false)
|
||||||
|
{
|
||||||
|
if (!$admin_id = admin_id()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
$time_now = time();
|
||||||
|
// session在2秒内不刷新
|
||||||
|
$session_ttl = 2;
|
||||||
|
$session_last_update_time = session('admin.session_last_update_time', 0);
|
||||||
|
if (!$force && $time_now - $session_last_update_time < $session_ttl) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
$admin = Admin::find($admin_id)->toArray();
|
||||||
|
if (!$admin) {
|
||||||
|
throw new BusinessException('当前账户不存在或已被禁用');
|
||||||
|
}
|
||||||
|
unset($admin['password']);
|
||||||
|
$admin['roles'] = $admin['roles'] ? explode(',', $admin['roles']) : [];
|
||||||
|
$admin['session_last_update_time'] = $time_now;
|
||||||
|
request()->session()->set('admin', $admin);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 刷新当前用户session
|
||||||
|
* @param bool $force
|
||||||
|
* @return void
|
||||||
|
* @throws BusinessException
|
||||||
|
*/
|
||||||
|
function refresh_user_session(bool $force = false)
|
||||||
|
{
|
||||||
|
if (!$user_id = user_id()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
$time_now = time();
|
||||||
|
// session在2秒内不刷新
|
||||||
|
$session_ttl = 2;
|
||||||
|
$session_last_update_time = session('user.session_last_update_time', 0);
|
||||||
|
if (!$force && $time_now - $session_last_update_time < $session_ttl) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
$user = User::find($user_id)->toArray();
|
||||||
|
if (!$user) {
|
||||||
|
throw new BusinessException('当前账户不存在或已被禁用');
|
||||||
|
}
|
||||||
|
unset($user['password']);
|
||||||
|
$user['session_last_update_time'] = $time_now;
|
||||||
|
request()->session()->set('user', $user);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user