增加 通过 Token 获取用户

This commit is contained in:
iVampireSP.com 2023-01-18 23:38:31 +08:00
parent 4200f5f4aa
commit 5a91506904
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132
3 changed files with 30 additions and 3 deletions

View File

@ -4,9 +4,11 @@
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Host; use App\Models\Host;
use App\Models\PersonalAccessToken;
use App\Models\User; use App\Models\User;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Arr;
class UserController extends Controller class UserController extends Controller
{ {
@ -91,4 +93,21 @@ public function update(Request $request, User $user): JsonResponse
return $this->updated(); return $this->updated();
} }
public function auth($token): JsonResponse
{
$token = PersonalAccessToken::findToken($token);
// 画饼: 验证 Token 能力,比如是否可以访问这个模块
return $token ? $this->success(Arr::only(
$token->tokenable
->makeVisible('real_name')
->toArray()
,
[
'id', 'name', 'email', 'real_name'
]
)) : $this->notFound();
}
} }

View File

@ -41,6 +41,7 @@ class User extends Authenticatable
protected $hidden = [ protected $hidden = [
'password', 'password',
'remember_token', 'remember_token',
'real_name',
'id_card', 'id_card',
]; ];
@ -59,7 +60,13 @@ class User extends Authenticatable
'birthday_at', 'birthday_at',
]; ];
// id card 必须加密 public array $publics = [
'id',
'name',
'email',
'real_name',
'balance',
];
protected static function boot() protected static function boot()
{ {
@ -145,8 +152,8 @@ public function scopeBirthday()
public function selectPublic(): User public function selectPublic(): User
{ {
// 过滤掉私有字段 // 仅需选择公开的
return $this->select(['id', 'name', 'email_md5', 'created_at']); return $this->select($this->publics);
} }
public function startTransfer(User $to, string $amount, string|null $description) public function startTransfer(User $to, string $amount, string|null $description)

View File

@ -22,6 +22,7 @@
// 用户信息 // 用户信息
Route::resource('users', UserController::class)->only(['index', 'show', 'update']); Route::resource('users', UserController::class)->only(['index', 'show', 'update']);
Route::get('token/{token}', [UserController::class, 'auth']);
Route::get('users/{user}/hosts', [UserController::class, 'hosts']); Route::get('users/{user}/hosts', [UserController::class, 'hosts']);
Route::post('broadcast/users/{user}', [BroadcastController::class, 'broadcast_to_user']); Route::post('broadcast/users/{user}', [BroadcastController::class, 'broadcast_to_user']);