6
0
Fork 0

账号状态检查

release
Jing Li 2022-04-03 14:42:43 +08:00
parent 3605c7c707
commit e06c590496
4 changed files with 45 additions and 1 deletions

View File

@ -38,6 +38,8 @@ class LoginController extends Controller
$user = $this->{$method}($request);
$user->checkStatus();
if ($type === 'password') {
if ($user->old_password) {
$user->password = $request->input('password');

View File

@ -0,0 +1,25 @@
<?php
namespace App\Endpoint\Api\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class CheckUserStatus
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
if ($user = $request->user()) {
$user->checkStatus();
}
return $next($request);
}
}

View File

@ -96,7 +96,10 @@ Route::group([
Route::post('unbind-user/{provider}', [Auth\SocialiteAuthController::class, 'unbindUser']);
});
Route::middleware(['auth:api'])->group(function () {
Route::middleware([
'auth:api',
\App\Endpoint\Api\Http\Middleware\CheckUserStatus::class,
])->group(function () {
// 我的信息
Route::get('me', [UserController::class, 'show']);
Route::put('me', [UserController::class, 'update']);

View File

@ -2,6 +2,7 @@
namespace App\Models;
use App\Exceptions\BizException;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Auth\Authenticatable;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
@ -523,4 +524,17 @@ class User extends Model implements AuthorizableContract, AuthenticatableContrac
return $user;
}
public function checkStatus()
{
if (in_array($this->status, [static::STATUS_ACTIVE, static::STATUS_INACTIVATED])) {
return;
} elseif ($this->status === static::STATUS_FROZEN) {
abort(403, '账号已冻结');
} elseif ($this->status === static::STATUS_DISABLED) {
abort(403, '账号已禁用');
}
abort(403, '账号状态异常');
}
}