validate([ 'phone' => ['bail', 'required', 'string'], 'password' => ['bail', 'required', 'string'], ]); $user = User::where('phone', $validated['phone'])->first(); if (! $user?->verifyPassword($validated['password'])) { throw new BizException(__('Incorrect account or password')); } if ($user->old_password) { $user->password = $validated['password']; $user->old_password = null; } $user->last_login_at = now(); $user->last_login_ip = $request->realIp(); $user->save(); // 获取登录设备 $device = $request->header('client-app', Device::UNIAPP); switch ($device) { case Device::MERCHANT: if ($user->userInfo?->agent_level < UserInfo::AGENT_LEVEL_VIP) { throw new BizException('账户没有权限'); } // 清理此用户的商户端令牌 $user->tokens()->where('name', $device)->delete(); // 颁发新的商户端令牌 $token = $user->createToken($device); break; case Device::DEALER: if (!$user->isDealer()) { throw new BizException('账户没有权限'); } // 清理此用户的商户端令牌 $user->tokens()->where('name', $device)->delete(); // 颁发新的商户端令牌 $token = $user->createToken($device); break; default: $device = Device::UNIAPP; // 清理此用户的商城端令牌 $user->tokens()->where('name', $device)->delete(); // 颁发新的商城端令牌 $token = $user->createToken($device, ['mall']); break; } return response()->json([ 'token' => $token->plainTextToken, ]); } }