121 lines
3.5 KiB
PHP
121 lines
3.5 KiB
PHP
<?php
|
||
|
||
namespace app\api\controller\backend;
|
||
|
||
use app\common\controller\Api;
|
||
use app\api\model\Admin as AdminModel;
|
||
use think\Db;
|
||
|
||
/**
|
||
* 登录接口
|
||
*/
|
||
class Login extends Api
|
||
{
|
||
protected $noNeedLogin = ['*'];
|
||
protected $noNeedRight = ['*'];
|
||
|
||
/**
|
||
* 首页
|
||
*
|
||
*/
|
||
public function login()
|
||
{
|
||
$username = $this->request->param('username');
|
||
$password = $this->request->param('password');
|
||
|
||
// 检查用户名和密码是否为空
|
||
if (!$username || !$password) {
|
||
$this->error('格式错误1');
|
||
}
|
||
|
||
// 查询用户信息
|
||
$where = [];
|
||
$where['username'] = $username;
|
||
$where['password'] = md5($password);
|
||
// var_dump($where);
|
||
$user = Db::name('user')->field('id,nickname,auth_group_id,group_id')->where($where)->find();
|
||
|
||
// 验证用户是否存在
|
||
if ($user) {
|
||
// 生成新的token
|
||
$timestamp = time();
|
||
$newToken = md5($password . md5($timestamp));
|
||
|
||
// 更新数据库中的token
|
||
Db::name('user')->where('id', $user['id'])->update(['token' => $newToken]);
|
||
$level = Db::name('auth_group')->where('id', $user['auth_group_id'])->value('level');
|
||
$user['level'] = $level;
|
||
// 返回成功信息和用户数据(包括新token)
|
||
$this->success('登录成功', ['user' => $user, 'token' => $newToken]);
|
||
} else {
|
||
// 用户不存在或密码错误
|
||
$this->error('账户密码错误');
|
||
}
|
||
}
|
||
|
||
|
||
public function getAuth()
|
||
{
|
||
$token = $this->request->header('Token');
|
||
if (!$token) {
|
||
$this->error('参数错误');
|
||
}
|
||
$user = Db::name('user')->field('auth_group_id')->where('token',$token)->find();
|
||
if (!$user) {
|
||
$this->error('请求失败');
|
||
}
|
||
$auth = Db::name('auth_group')->field('id,name,rules')->where('id',$user['auth_group_id'])->find();
|
||
if(!$auth){
|
||
$this->success('该用户无权限');
|
||
}
|
||
$reles = $auth['rules'];
|
||
if($reles == '*'){
|
||
$date = Db::name('auth_rule')->field('id,pid,title,url,icon')->select();
|
||
$tree = $this->buildTree($date);
|
||
$this->success('请求成功',$tree);
|
||
}
|
||
$ids = explode(',',$reles);
|
||
$data = Db::name('auth_rule')
|
||
->field('id, pid, title, url,icon')
|
||
->whereIn('id', $ids)
|
||
->select();
|
||
// var_dump($data);die();
|
||
$tree = $this->buildTree($data);
|
||
|
||
$this->success('请求成功',$tree);
|
||
}
|
||
|
||
|
||
/**
|
||
* 构建树结构
|
||
*
|
||
* @param array $data 数据库查询结果数组
|
||
* @param int $parentId 父ID
|
||
* @return array
|
||
*/
|
||
private function buildTree(array $data, $parentId = 0)
|
||
{
|
||
$tree = [];
|
||
foreach ($data as $item) {
|
||
if ($item['pid'] == $parentId) {
|
||
// 创建一个新的节点数组
|
||
$node = [
|
||
'id' => $item['url'], // 将 URL 替换为 ID
|
||
'pid' => $item['pid'],
|
||
'title' => $item['title'],
|
||
'url' => $item['url'],
|
||
'icon'=>$item['icon'],
|
||
];
|
||
|
||
// 递归构建子树
|
||
$children = $this->buildTree($data, $item['id']); // 使用原始的 ID 作为父 ID
|
||
if ($children) {
|
||
$node['children'] = $children;
|
||
}
|
||
$tree[] = $node;
|
||
}
|
||
}
|
||
return $tree;
|
||
}
|
||
}
|