first(); if (empty($userModel)) { return $this->register($account, $password); } if (!password_verify($password, $userModel->password)) { UtilsService::getInstance()->errorThrow('用户或密码错误!'); } if ($userModel->ip !== get_ip()) { $ipTable = json_decode($userModel->ip_table, true); if (!in_array(get_ip(), $ipTable)) { $ipTable[] = get_ip(); } $update = UserModel::where('id', $userModel->id)->update([ 'ip' => get_ip(), 'ip_table' => json_encode($ipTable), 'updated_at' => get_time() ]); if (!$update) { UtilsService::getInstance()->errorThrow('更新失败!'); } $userModel = UserModel::where('id', $userModel->id)->first(); } $result = [ 'id' => $userModel->id, 'account' => $userModel->account, 'nick_name' => $userModel->nick_name, 'avatar' => $userModel->avatar, 'ip' => $userModel->ip, 'ip_table' => $userModel->ip_table, ]; $token = JWTService::getInstance()->generateToken($result); $result['token'] = $token; return $result; } public function register($account, $password) { $userModel = UserModel::where('account', $account)->first(); if ($userModel) { UtilsService::getInstance()->errorThrow('账号已被占用!'); } $createModel = UserModel::create([ 'account' => $account, 'password' => password_hash($password, PASSWORD_DEFAULT), 'nick_name' => '新用户'. Str::random(), 'avatar' => 'https://pic.rmb.bdstatic.com/bjh/80852bfe7c321988191838517ba64e309354.jpeg@h_1280', 'ip' => get_ip(), 'ip_table' => json_encode([get_ip()]), 'created_at' => get_time() ]); if (!$createModel) { UtilsService::getInstance()->errorThrow('注册失败!'); } $result = [ 'id' => $createModel->id, 'account' => $createModel->account, 'nick_name' => $createModel->nick_name, 'avatar' => $createModel->avatar, 'ip' => $createModel->ip, 'ip_table' => $createModel->ip_table, ]; $token = JWTService::getInstance()->generateToken($result); $result['token'] = $token; return $result; } }