81 lines
2.5 KiB
PHP
81 lines
2.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* 登录控制器.
|
|
*/
|
|
|
|
namespace app\admin\controller;
|
|
|
|
use think\Controller;
|
|
use Repository\LogRepository;
|
|
use Repository\IpRepository;
|
|
|
|
class Login extends Controller
|
|
{
|
|
// 登录首页
|
|
public function index()
|
|
{
|
|
// $ipAccess = (new IpRepository)->ipAccess();
|
|
// if(!$ipAccess){
|
|
// throw new \think\exception\HttpException(404, '非法请求!');
|
|
// }
|
|
$this->assign([
|
|
'version' => config('version'),
|
|
]);
|
|
|
|
return $this->fetch();
|
|
}
|
|
|
|
// 处理登录
|
|
public function doLogin()
|
|
{
|
|
if (request()->isPost()) {
|
|
$userName = input('param.user_name');
|
|
$password = input('param.password');
|
|
|
|
if (empty($userName) || empty($password)) {
|
|
return json(['code' => -1, 'data' => '', 'msg' => '用户名或密码不能为空']);
|
|
}
|
|
|
|
$userInfo = db('admins')->where('user_name', $userName)->find();
|
|
// var_dump($userInfo, password_verify($password, $userInfo['password']), $password);return;
|
|
if (empty($userInfo) || !password_verify($password, $userInfo['password']) || 1 != $userInfo['status']) {
|
|
return json(['code' => -4, 'data' => '', 'msg' => '密码错误']);
|
|
}
|
|
|
|
// 记录管理员状态
|
|
session('user_name', $userName);
|
|
session('user_id', $userInfo['id']);
|
|
session('user_last_login', time());
|
|
// 管理员角色
|
|
$role = db('admin_role')
|
|
->alias('a')
|
|
->where('admin_id', $userInfo['id'])
|
|
->join('role r',"r.id=a.role_id")
|
|
->field('name')
|
|
->find();
|
|
$role_name = $role['name'] ? $role['name'] : '暂无角色';
|
|
session('role_name', $role_name);
|
|
|
|
// 更新管理员状态
|
|
$param = [
|
|
'last_login_ip' => request()->ip(),
|
|
'last_login_time' => time(),
|
|
];
|
|
db('admins')->where('id', $userInfo['id'])->update($param);
|
|
LogRepository::write('系统管理', '登录成功');
|
|
return json(['code' => 1, 'data' => url('index/index'), 'msg' => '登录成功']);
|
|
}
|
|
}
|
|
|
|
public function loginOut()
|
|
{
|
|
session('user_name', null);
|
|
session('user_id', null);
|
|
session('user_last_login', null);
|
|
session('role_name', null);
|
|
|
|
$this->redirect(url('login/index'));
|
|
}
|
|
}
|