| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- <?php
- namespace plugin\admin\api;
- use ReflectionException;
- use Webman\Http\Request;
- use Webman\Http\Response;
- use Webman\MiddlewareInterface;
- use support\exception\BusinessException;
- /**
- * 对外提供的鉴权中间件
- */
- class Middleware implements MiddlewareInterface
- {
- /**
- * 鉴权
- * @param Request $request
- * @param callable $handler
- * @return Response
- * @throws ReflectionException
- * @throws BusinessException
- */
- public function process(Request $request, callable $handler): Response
- {
- $controller = $request->controller;
- $action = $request->action;
- $code = 0;
- $msg = '';
- if (!Auth::canAccess($controller, $action, $code, $msg)) {
- if ($request->expectsJson()) {
- $response = json(['code' => $code, 'msg' => $msg, 'type' => 'error']);
- } else {
- if ($code === 401) {
- $response = response(<<<EOF
- <script>
- if (self !== top) {
- parent.location.reload();
- }
- </script>
- EOF
- );
- } else {
- $request->app = '';
- $request->plugin = 'admin';
- $response = view('common/error/403')->withStatus(403);
- }
- }
- } else {
- $response = $request->method() == 'OPTIONS' ? response('') : $handler($request);
- }
- return $response;
- }
- }
|