|
|
@@ -49,12 +49,9 @@ class User extends BaseController
|
|
|
// 查询用户
|
|
|
$user = UserModel::where('user_name', $userName)->find();
|
|
|
if ($user && password_verify($password, $user->password)) {
|
|
|
-
|
|
|
// 检查IP白名单
|
|
|
- $clientIp = IpWhiteListService::getRealIp();
|
|
|
+ $clientIp = getClientIp();
|
|
|
if (!IpWhiteListService::checkIpWhiteList($clientIp, $user->white_list_ip)) {
|
|
|
- // 记录IP限制登录日志
|
|
|
- trace("用户 {$userName} 尝试从IP {$clientIp} 登录,但不在白名单 {$user->white_list_ip} 中", 'info');
|
|
|
return json_error([
|
|
|
'client_ip' => $clientIp,
|
|
|
'white_list_ip' => $user->white_list_ip
|
|
|
@@ -71,9 +68,6 @@ class User extends BaseController
|
|
|
$user->login_time = time();
|
|
|
$user->save();
|
|
|
|
|
|
- // 记录成功登录日志
|
|
|
- trace("用户 {$userName} 从IP {$clientIp} 登录成功", 'info');
|
|
|
-
|
|
|
return json_success([
|
|
|
'user_name' => $user->user_name,
|
|
|
'nick_name' => $user->nick_name,
|
|
|
@@ -358,99 +352,6 @@ class User extends BaseController
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 验证IP白名单格式
|
|
|
- */
|
|
|
- public function validateIpWhiteList()
|
|
|
- {
|
|
|
- $loginInfo = checkUserLogin();
|
|
|
- if (!$loginInfo) {
|
|
|
- return json_error([], '请先登录');
|
|
|
- }
|
|
|
-
|
|
|
- $whiteListIp = Request::post('white_list_ip', '', 'trim');
|
|
|
-
|
|
|
- try {
|
|
|
- list($isValid, $message, $parsedList) = IpWhiteListService::validateWhiteListFormat($whiteListIp);
|
|
|
-
|
|
|
- return json_success([
|
|
|
- 'valid' => $isValid,
|
|
|
- 'message' => $message,
|
|
|
- 'parsed_list' => $parsedList,
|
|
|
- 'current_ip' => IpWhiteListService::getRealIp()
|
|
|
- ], '验证完成');
|
|
|
- } catch (\Exception $e) {
|
|
|
- return json_error([], '验证失败:' . $e->getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 获取当前访问IP信息
|
|
|
- */
|
|
|
- public function getCurrentIp()
|
|
|
- {
|
|
|
- $loginInfo = checkUserLogin();
|
|
|
- if (!$loginInfo) {
|
|
|
- return json_error([], '请先登录');
|
|
|
- }
|
|
|
-
|
|
|
- try {
|
|
|
- $currentIp = IpWhiteListService::getRealIp();
|
|
|
- $ipInfo = IpWhiteListService::getIpInfo($currentIp);
|
|
|
-
|
|
|
- return json_success([
|
|
|
- 'current_ip' => $currentIp,
|
|
|
- 'ip_info' => $ipInfo,
|
|
|
- 'timestamp' => time(),
|
|
|
- 'datetime' => date('Y-m-d H:i:s')
|
|
|
- ], '获取当前IP成功');
|
|
|
- } catch (\Exception $e) {
|
|
|
- return json_error([], '获取IP信息失败:' . $e->getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 检查IP是否在用户白名单中
|
|
|
- */
|
|
|
- public function checkIpWhiteList()
|
|
|
- {
|
|
|
- $loginInfo = checkUserLogin();
|
|
|
- if (!$loginInfo) {
|
|
|
- return json_error([], '请先登录');
|
|
|
- }
|
|
|
-
|
|
|
- $userId = Request::get('user_id', $loginInfo['user_id'], 'intval');
|
|
|
- $testIp = Request::get('test_ip', '', 'trim');
|
|
|
-
|
|
|
- // 获取用户信息
|
|
|
- $user = UserModel::where('user_id', $userId)
|
|
|
- ->where('merchant_id', $loginInfo['merchant_id'])
|
|
|
- ->find();
|
|
|
-
|
|
|
- if (!$user) {
|
|
|
- return json_error([], '用户不存在');
|
|
|
- }
|
|
|
-
|
|
|
- $currentIp = IpWhiteListService::getRealIp();
|
|
|
- $checkIp = !empty($testIp) ? $testIp : $currentIp;
|
|
|
-
|
|
|
- try {
|
|
|
- $isAllowed = IpWhiteListService::checkIpWhiteList($checkIp, $user->white_list_ip);
|
|
|
-
|
|
|
- return json_success([
|
|
|
- 'user_id' => $userId,
|
|
|
- 'user_name' => $user->user_name,
|
|
|
- 'check_ip' => $checkIp,
|
|
|
- 'white_list_ip' => $user->white_list_ip,
|
|
|
- 'is_allowed' => $isAllowed,
|
|
|
- 'current_ip' => $currentIp,
|
|
|
- 'is_current_ip' => $checkIp === $currentIp
|
|
|
- ], $isAllowed ? 'IP在白名单中' : 'IP不在白名单中');
|
|
|
- } catch (\Exception $e) {
|
|
|
- return json_error([], '检查IP白名单失败:' . $e->getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 验证输入数据
|
|
|
*/
|