validate([ 'username' => 'required|string', 'password' => 'required|string', ]); $user = User::withoutGlobalScope('store') ->where('username', $request->username) ->first(); if (!$user || !Hash::check($request->password, $user->password)) { return $this->error('用户名或密码错误', 40100, 401); } if ($user->status->value !== 1) { return $this->error('账号已被禁用或待审核', 40101, 403); } // 清除旧 token $user->tokens()->delete(); $token = $user->createToken('admin')->plainTextToken; $user->update(['last_login_at' => now()]); return $this->success([ 'token' => $token, 'user' => [ 'id' => $user->id, 'username' => $user->username, 'name' => $user->name, 'avatar' => $user->avatar, 'store_id' => $user->store_id, 'is_super' => $user->is_super, ], ]); } /** * 退出登录 */ public function logout(Request $request): JsonResponse { $request->user()->currentAccessToken()->delete(); return $this->success(null, '退出成功'); } /** * 获取当前用户信息 */ public function me(Request $request): JsonResponse { $user = $request->user(); $user->load(['department', 'position', 'roles']); return $this->success([ 'id' => $user->id, 'username' => $user->username, 'name' => $user->name, 'phone' => $user->phone, 'email' => $user->email, 'avatar' => $user->avatar, 'store_id' => $user->store_id, 'is_super' => $user->is_super, 'department' => $user->department?->name, 'position' => $user->position?->name, 'roles' => $user->roles->pluck('name'), 'permissions' => $user->getAllPermissionCodes(), 'menus' => $user->getMenuTree(), ]); } }