mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
mod: 继续补充登录风控分支(尚未完成)
This commit is contained in:
@@ -522,6 +522,14 @@ class Api {
|
|||||||
static const String safeCenterSmsCode =
|
static const String safeCenterSmsCode =
|
||||||
'${HttpString.passBaseUrl}/x/safecenter/common/sms/send';
|
'${HttpString.passBaseUrl}/x/safecenter/common/sms/send';
|
||||||
|
|
||||||
|
/// type str loginTelCheck
|
||||||
|
/// code int 验证码内容
|
||||||
|
/// tmp_code str 验证标记代码 来自数据处理中的解析出的参数tmp_token
|
||||||
|
/// request_id str 验证请求标记 来自数据处理中的解析出的参数requestId
|
||||||
|
/// captcha_key str 验证秘钥 来自申请验证码的captcha_key(data->captcha_key)
|
||||||
|
static const String safeCenterSmsVerify =
|
||||||
|
'${HttpString.passBaseUrl}/x/safecenter/login/tel/verify';
|
||||||
|
|
||||||
/// 密码加密密钥
|
/// 密码加密密钥
|
||||||
/// disable_rcmd
|
/// disable_rcmd
|
||||||
/// local_id
|
/// local_id
|
||||||
|
|||||||
@@ -415,4 +415,32 @@ class LoginHttp {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Future safeCenterSmsVerify(
|
||||||
|
{String? type,
|
||||||
|
required String code,
|
||||||
|
required String tmpCode,
|
||||||
|
required String requestId,
|
||||||
|
required String source,
|
||||||
|
required String captchaKey}) async {
|
||||||
|
var res = await Request().post(Api.safeCenterSmsVerify, data: {
|
||||||
|
'type': type ?? 'loginTelCheck',
|
||||||
|
'code': code,
|
||||||
|
'tmp_code': tmpCode,
|
||||||
|
'request_id': requestId,
|
||||||
|
'source': source,
|
||||||
|
'captcha_key': captchaKey,
|
||||||
|
});
|
||||||
|
print(res);
|
||||||
|
if (res.data['code'] == 0) {
|
||||||
|
return {'status': true, 'data': res.data['data']};
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
'status': false,
|
||||||
|
'code': res.data['code'],
|
||||||
|
'msg': res.data['message'],
|
||||||
|
'data': res.data['data']
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -316,32 +316,85 @@ class LoginPageController extends GetxController
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, String> accountInfo = {
|
Map<String, String> accountInfo = {
|
||||||
"telVerify": safeCenterRes['data']['account_info']!['tel_verify']!,
|
"telVerify": safeCenterRes['data']['account_info']!['tel_verify'],
|
||||||
"hide_tel": safeCenterRes['data']['account_info']!["hide_tel"]!,
|
"bindTel": safeCenterRes['data']['account_info']!["bind_tel"],
|
||||||
|
"mailVerify": safeCenterRes['data']['account_info']!['mailVerify'],
|
||||||
|
"bindMail": safeCenterRes['data']['account_info']!["bind_mail"],
|
||||||
};
|
};
|
||||||
SmartDialog.showNotify(
|
TextEditingController _textFieldController = TextEditingController();
|
||||||
msg: "将给你的手机号:${accountInfo['hide_tel']}发送短信验证码",
|
String captchaKey = '';
|
||||||
notifyType: NotifyType.alert,
|
Get.dialog(AlertDialog(
|
||||||
alignment: Alignment.topCenter);
|
title: const Text("本次登录需要验证您的手机号"),
|
||||||
|
content: Column(
|
||||||
|
children:[
|
||||||
|
Text(accountInfo['bindTel'] ?? '未能获取手机号'),
|
||||||
|
TextField(
|
||||||
|
controller: _textFieldController,
|
||||||
|
decoration: const InputDecoration(hintText: "请输入短信验证码"),
|
||||||
|
),]),
|
||||||
|
|
||||||
var preCaptureRes = await LoginHttp.preCapture();
|
actions: <Widget>[
|
||||||
if (!preCaptureRes['status']) {
|
TextButton(
|
||||||
SmartDialog.showToast("获取验证码失败,请尝试其它登录方式\n"
|
child: const Text("发送验证码 "),
|
||||||
"(${preCaptureRes['code']}) ${preCaptureRes['msg']}");
|
onPressed: () async {
|
||||||
return;
|
var preCaptureRes = await LoginHttp.preCapture();
|
||||||
}
|
if (!preCaptureRes['status']) {
|
||||||
String geeGt = preCaptureRes['data']['gee_gt']!;
|
SmartDialog.showToast("获取验证码失败,请尝试其它登录方式\n"
|
||||||
String geeChallenge = preCaptureRes['data']['gee_challenge'];
|
"(${preCaptureRes['code']}) ${preCaptureRes['msg']}");
|
||||||
captchaData.token = preCaptureRes['data']['recaptcha_token']!;
|
return;
|
||||||
|
}
|
||||||
|
String geeGt = preCaptureRes['data']['gee_gt']!;
|
||||||
|
String geeChallenge = preCaptureRes['data']['gee_challenge'];
|
||||||
|
captchaData.token = preCaptureRes['data']['recaptcha_token']!;
|
||||||
|
|
||||||
|
getCaptcha(geeGt, geeChallenge, () async {
|
||||||
|
var safeCenterSendSmsCodeRes = await LoginHttp.safeCenterSmsCode(
|
||||||
|
tmpCode: currentUri.queryParameters['tmp_token']!,
|
||||||
|
geeChallenge: geeChallenge,
|
||||||
|
geeSeccode: captchaData.seccode!,
|
||||||
|
geeValidate: captchaData.validate!,
|
||||||
|
recaptchaToken: captchaData.token!);
|
||||||
|
if (!safeCenterSendSmsCodeRes['status']) {
|
||||||
|
SmartDialog.showToast("发送短信验证码失败,请尝试其它登录方式\n"
|
||||||
|
"(${safeCenterSendSmsCodeRes['code']}) ${safeCenterSendSmsCodeRes['msg']}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
SmartDialog.showToast("短信验证码已发送,请查收");
|
||||||
|
captchaKey = safeCenterSendSmsCodeRes['data']['captcha_key'];
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
TextButton(
|
||||||
|
onPressed: Get.back,
|
||||||
|
child: const Text(" 取消"),
|
||||||
|
),
|
||||||
|
TextButton(
|
||||||
|
onPressed: () async {
|
||||||
|
String? code = _textFieldController.text;
|
||||||
|
if (code.isEmpty) {
|
||||||
|
SmartDialog.showToast("请输入短信验证码");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var safeCenterSmsVerifyRes = await LoginHttp.safeCenterSmsVerify(
|
||||||
|
code: code,
|
||||||
|
tmpCode: currentUri.queryParameters['tmp_token']!,
|
||||||
|
requestId: currentUri.queryParameters['request_id']!,
|
||||||
|
source: currentUri.queryParameters['source']!,
|
||||||
|
captchaKey: captchaKey,
|
||||||
|
);
|
||||||
|
if (!safeCenterSmsVerifyRes['status']) {
|
||||||
|
SmartDialog.showToast("验证短信验证码失败,请尝试其它登录方式\n"
|
||||||
|
"(${safeCenterSmsVerifyRes['code']}) ${safeCenterSmsVerifyRes['msg']}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
SmartDialog.showToast("验证成功,正在登录");
|
||||||
|
// loginByPassword();
|
||||||
|
},
|
||||||
|
child: const Text("确认"),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
));
|
||||||
|
|
||||||
getCaptcha(geeGt, geeChallenge, () {
|
|
||||||
LoginHttp.safeCenterSmsCode(
|
|
||||||
tmpCode: currentUri.queryParameters['tmp_token']!,
|
|
||||||
geeChallenge: geeChallenge,
|
|
||||||
geeSeccode: captchaData.seccode!,
|
|
||||||
geeValidate: captchaData.validate!,
|
|
||||||
recaptchaToken: captchaData.token!);
|
|
||||||
});
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user