diff --git a/src/Api/ExceptionHandler/PermissionDeniedExceptionHandler.php b/src/Api/ExceptionHandler/PermissionDeniedExceptionHandler.php index a116870b8c05612301af84f70a329a49ff344018..e40c286ba7e7b0b26085639037b47bda1b2c802a 100644 --- a/src/Api/ExceptionHandler/PermissionDeniedExceptionHandler.php +++ b/src/Api/ExceptionHandler/PermissionDeniedExceptionHandler.php @@ -56,26 +56,13 @@ class PermissionDeniedExceptionHandler implements ExceptionHandlerInterface if(isset($siteManage[$reqType])){ $siteOpen = $siteManage[$reqType]['value']; } - if (!$siteOpen) { $error['code'] = 'site_closed'; - $error['detail'][] = $settings->get('site_close_msg')?:''; - } elseif ($e->getMessage() == 'ban_user') { - $error['code'] = 'ban_user'; - } elseif ($e->getMessage() == 'register_validate') { - $error['code'] = 'register_validate'; - } elseif ($e->getMessage() == 'user_deny') { - $error['code'] = 'user_deny'; - } elseif ($e->getMessage() == 'validate_reject') { - $error['code'] = 'validate_reject'; - } elseif ($e->getMessage() == 'validate_ignore') { - $error['code'] = 'validate_ignore'; - } elseif ($e->getMessage() == 'register_close') { - $error['code'] = 'register_close'; - } else { - $error['code'] = 'permission_denied'; + $error['detail'][] = $settings->get('site_close_msg') ?: ''; + }else{ + $error['code'] = $e->getMessage(); } - + return new ResponseBag($status, [$error]); } } diff --git a/src/Http/Middleware/CheckUserStatus.php b/src/Http/Middleware/CheckUserStatus.php index 92b05ab083a06f43bb1c626b4014650de8666931..1663c80c7f75a8aaa393c4d59edb1a129ab86ba4 100644 --- a/src/Http/Middleware/CheckUserStatus.php +++ b/src/Http/Middleware/CheckUserStatus.php @@ -18,6 +18,7 @@ namespace Discuz\Http\Middleware; +use App\Models\User; use Discuz\Auth\Exception\PermissionDeniedException; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -30,6 +31,7 @@ class CheckUserStatus implements MiddlewareInterface '/api/user/signinfields', '/api/attachments' ]; + /** * {@inheritdoc} * @@ -37,27 +39,34 @@ class CheckUserStatus implements MiddlewareInterface */ public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { + $actor = $request->getAttribute('actor'); // 被禁用的用户 - if ($actor->status == 1) { + if ($actor->status == User::STATUS_BAN) { throw new PermissionDeniedException('ban_user'); } // 审核中的用户 - if ($actor->status == 2) { + if ($actor->status == User::STATUS_MOD) { $path = $request->getUri()->getPath(); - if(!in_array($path,$this->noCheckAction)){ + if (!in_array($path, $this->noCheckAction)) { throw new PermissionDeniedException('register_validate'); } } // 审核拒绝 - if ($actor->status == 3) { + if ($actor->status == User::STATUS_REFUSE) { throw new PermissionDeniedException('validate_reject'); } // 审核忽略 - if ($actor->status == 4) { + if ($actor->status == User::STATUS_IGNORE) { throw new PermissionDeniedException('validate_ignore'); } - + // 待填写扩展审核字段的用户 + if ($actor->status == User::STATUS_NEED_FIELDS) { + $path = $request->getUri()->getPath(); + if (!in_array($path, $this->noCheckAction)) { + throw new PermissionDeniedException('need_ext_fields'); + } + } return $handler->handle($request); } } diff --git a/src/Models/DzqModel.php b/src/Models/DzqModel.php index 6ce7bd5b41f8f2017687adaee3228b4284b9222b..df8df69b110a75cb98ca0a73dee143c2103bf562 100644 --- a/src/Models/DzqModel.php +++ b/src/Models/DzqModel.php @@ -23,10 +23,11 @@ class DzqModel extends Model { private static $instance; protected function __clone(){} + public static function instance() { $class = get_called_class(); if (!isset(self::$instance[$class])) { - self::$instance[$class] = new $class(); + self::$instance[$class] = new static(); } return self::$instance[$class]; }