1, 'data' => $data, 'message' => $message ?? "" ]); } } /** * 响应失败json */ if(!function_exists('json_error')){ function json_error($data = [], $message = "", $code = 1){ return json([ 'state' => 0, 'code' => $code, 'data' => $data, 'message' => $message ?? "" ]); } } /** * 生成JWT Token * * @param array $data 待加密数据 * @param int $expire 过期时间(秒),0表示使用默认过期时间 * @return string */ if(!function_exists('generateToken')){ function generateToken($data = [], $expire = 0){ $payload = [ 'exp' => time() + ($expire > 0 ? $expire : $GLOBALS['cookieExpire']), // 有效期 'iat' => time(), // 签发时间 ]; $payload = array_merge($payload, $data); $token = JWT::encode($payload, $GLOBALS['token_key_secret'], 'HS256'); return $token; } } /** * 解析JWT Token * * @param string $token JWT Token字符串 * @return array|null 解析成功返回payload数组,失败返回null */ if(!function_exists('parseToken')){ function parseToken($token) { try { if (empty($token)) { return null; } // 使用JWT库解析token $decoded = JWT::decode($token, new Key($GLOBALS['token_key_secret'], 'HS256')); // 转换为数组 $payload = (array) $decoded; // 检查是否过期 if (isset($payload['exp']) && $payload['exp'] < time()) { return null; } return $payload; } catch (\Firebase\JWT\ExpiredException $e) { // Token已过期 return null; } catch (\Firebase\JWT\SignatureInvalidException $e) { // 签名无效 return null; } catch (\Firebase\JWT\BeforeValidException $e) { // Token尚未生效 return null; } catch (\Exception $e) { // 其他异常 return null; } } } /** * 验证Token是否有效 * * @param string $token JWT Token字符串 * @return bool */ if(!function_exists('verifyToken')){ function verifyToken($token) { return parseToken($token) !== null; } } /** * 检查用户登录状态 * * @return array|null 登录成功返回用户信息数组,失败返回null */ if(!function_exists('checkUserLogin')){ function checkUserLogin() { $token = \think\facade\Cookie::get('auth_token'); if (!$token) { return null; } return parseToken($token); } } /** * 检查用户权限 * * @param array $user 用户信息数组 * @param string $controller 控制器名称 * @param string $action 操作名称 * @return bool 有权限返回true,无权限返回false */ if(!function_exists('checkPermission')){ function checkPermission($user, $controller, $action) { // 超级管理员拥有所有权限 $superAdminRoleId = \think\facade\Config::get('permission.super_admin_role_id', 1); if ($user['user_role'] == $superAdminRoleId) { return true; } // 获取用户角色权限 $role = \app\model\UserRoleModel::getRoleById($user['user_role'], $user['merchant_id']); if (!$role) { return false; } $privileges = $role->privileges; // 检查是否有对应权限 return isset($privileges[$controller]) && is_array($privileges[$controller]) && in_array($action, $privileges[$controller]); } }