mod: 继续补充登录风控分支(尚未完成)

This commit is contained in:
orz12
2024-08-17 09:15:22 +08:00
parent dc19a4776b
commit 394f642d5c
3 changed files with 112 additions and 23 deletions

View File

@@ -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_keydata->captcha_key
static const String safeCenterSmsVerify =
'${HttpString.passBaseUrl}/x/safecenter/login/tel/verify';
/// 密码加密密钥 /// 密码加密密钥
/// disable_rcmd /// disable_rcmd
/// local_id /// local_id

View File

@@ -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']
};
}
}
} }

View File

@@ -316,14 +316,27 @@ 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: "请输入短信验证码"),
),]),
actions: <Widget>[
TextButton(
child: const Text("发送验证码 "),
onPressed: () async {
var preCaptureRes = await LoginHttp.preCapture(); var preCaptureRes = await LoginHttp.preCapture();
if (!preCaptureRes['status']) { if (!preCaptureRes['status']) {
SmartDialog.showToast("获取验证码失败,请尝试其它登录方式\n" SmartDialog.showToast("获取验证码失败,请尝试其它登录方式\n"
@@ -334,14 +347,54 @@ class LoginPageController extends GetxController
String geeChallenge = preCaptureRes['data']['gee_challenge']; String geeChallenge = preCaptureRes['data']['gee_challenge'];
captchaData.token = preCaptureRes['data']['recaptcha_token']!; captchaData.token = preCaptureRes['data']['recaptcha_token']!;
getCaptcha(geeGt, geeChallenge, () { getCaptcha(geeGt, geeChallenge, () async {
LoginHttp.safeCenterSmsCode( var safeCenterSendSmsCodeRes = await LoginHttp.safeCenterSmsCode(
tmpCode: currentUri.queryParameters['tmp_token']!, tmpCode: currentUri.queryParameters['tmp_token']!,
geeChallenge: geeChallenge, geeChallenge: geeChallenge,
geeSeccode: captchaData.seccode!, geeSeccode: captchaData.seccode!,
geeValidate: captchaData.validate!, geeValidate: captchaData.validate!,
recaptchaToken: captchaData.token!); 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("确认"),
),
],
));
return; return;
} }