This commit is contained in:
Your Name
2026-04-07 18:13:03 +08:00
parent a780356908
commit fdf714f833
397 changed files with 15086 additions and 1043 deletions
@@ -16,6 +16,7 @@ declare (strict_types=1);
namespace app\adminapi\http\middleware;
use app\adminapi\logic\LoginLogic;
use app\common\cache\AdminTokenCache;
use app\adminapi\service\AdminTokenService;
use app\common\service\JsonService;
@@ -72,7 +73,34 @@ class LoginMiddleware
$request->adminInfo = $adminInfo;
$request->adminId = $adminInfo['admin_id'] ?? 0;
// 非 root 须绑定企微:免登录接口不拦截(如 getConfig),避免 init 死循环
if (!empty($adminInfo) && LoginLogic::adminMustBindWorkWechat($adminInfo) && !$isNotNeedLogin) {
if (!self::isWorkWechatBindExemptAction($request)) {
return JsonService::fail(
'请先绑定企业微信后再使用系统',
[],
LoginLogic::CODE_NEED_BIND_WORK_WECHAT,
0
);
}
}
return $next($request);
}
private static function isWorkWechatBindExemptAction($request): bool
{
if (LoginLogic::isWorkWechatBindExemptActionName((string) $request->action())) {
return true;
}
// 与 AuthMiddleware 一致:未绑企微时仍允许打开面诊进度所需只读列表
if ((int) $request->param('progress_board', 0) === 1 && strtolower((string) $request->action()) === 'lists') {
$c = strtolower((string) $request->controller());
return in_array($c, ['auth.admin', 'doctor.appointment'], true);
}
return false;
}
}