save
This commit is contained in:
parent
776099e197
commit
37926d7bad
@ -2,11 +2,14 @@
|
||||
/**
|
||||
* Here is your custom functions.
|
||||
*/
|
||||
|
||||
|
||||
use app\model\User;
|
||||
use plugin\admin\app\model\Admin;
|
||||
use support\exception\BusinessException;
|
||||
|
||||
/**
|
||||
* 当前登录管理员id
|
||||
*
|
||||
* @return mixed|null
|
||||
* 当前管理员id
|
||||
* @return integer|null
|
||||
*/
|
||||
function admin_id()
|
||||
{
|
||||
@ -15,12 +18,13 @@ function admin_id()
|
||||
|
||||
/**
|
||||
* 当前管理员
|
||||
*
|
||||
* @param null|array|string $fields
|
||||
* @return array|mixed|null
|
||||
* @throws BusinessException
|
||||
*/
|
||||
function admin($fields = null)
|
||||
{
|
||||
refresh_admin_session();
|
||||
if (!$admin = session('admin')) {
|
||||
return null;
|
||||
}
|
||||
@ -39,8 +43,7 @@ function admin($fields = null)
|
||||
|
||||
/**
|
||||
* 当前登录用户id
|
||||
*
|
||||
* @return mixed|null
|
||||
* @return integer|null
|
||||
*/
|
||||
function user_id()
|
||||
{
|
||||
@ -49,12 +52,13 @@ function user_id()
|
||||
|
||||
/**
|
||||
* 当前登录用户
|
||||
*
|
||||
* @param null|array|string $fields
|
||||
* @return array|mixed|null
|
||||
* @throws BusinessException
|
||||
*/
|
||||
function user($fields = null)
|
||||
{
|
||||
refresh_user_session();
|
||||
if (!$user = session('user')) {
|
||||
return null;
|
||||
}
|
||||
@ -70,3 +74,59 @@ function 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