|
|
@@ -64,13 +64,13 @@ class LidoApi {
|
|
|
}
|
|
|
|
|
|
bool credSaved() {
|
|
|
- return (Hive.box("profile").get("lido_user", defaultValue: "") != "") &&
|
|
|
- (Hive.box("profile").get("lido_pass", defaultValue: "") != "");
|
|
|
+ return (Hive.box("settings").get("lido_user", defaultValue: "") != "") &&
|
|
|
+ (Hive.box("settings").get("lido_pass", defaultValue: "") != "");
|
|
|
}
|
|
|
|
|
|
- Future login({String? user, String? pass}) async {
|
|
|
- username = user ?? Hive.box("profile").get("lido_user", defaultValue: "");
|
|
|
- password = pass ?? Hive.box("profile").get("lido_pass", defaultValue: "");
|
|
|
+ Future login({String? user, String? pass, String? newpass}) async {
|
|
|
+ username = user ?? Hive.box("settings").get("lido_user", defaultValue: "");
|
|
|
+ password = pass ?? Hive.box("settings").get("lido_pass", defaultValue: "");
|
|
|
try {
|
|
|
var response = await http
|
|
|
.get(
|
|
|
@@ -92,7 +92,7 @@ class LidoApi {
|
|
|
"c0-id": "0",
|
|
|
"c0-param0": "string:$username",
|
|
|
"c0-param1": "string:$password",
|
|
|
- "c0-param2": "string:",
|
|
|
+ "c0-param2": "string:${newpass ?? ""}",
|
|
|
"c0-param3": "string:LIDO",
|
|
|
"c0-param4": "string:en",
|
|
|
"batchId": "0",
|
|
|
@@ -116,31 +116,56 @@ class LidoApi {
|
|
|
.firstMatch(response.body)
|
|
|
?.group(0) ??
|
|
|
"xx";
|
|
|
- // print(errorcode);
|
|
|
+
|
|
|
+ final plschangepass =
|
|
|
+ response.body.contains("please change your password");
|
|
|
+
|
|
|
final changepass = RegExp(r'(?<=forcePasswdChange:)(.+)(?=,)')
|
|
|
.firstMatch(response.body)
|
|
|
?.group(0) ==
|
|
|
"true";
|
|
|
|
|
|
+ // print("lidoapi: login: errorcode: $errorcode");
|
|
|
+ // print("lidoapi: login: message: $message");
|
|
|
+ // print("lidoapi: login: changepass: $changepass");
|
|
|
+ // print("lidoapi: login: responsebody: ${response.body}");
|
|
|
+
|
|
|
logged = errorcode == "null";
|
|
|
|
|
|
cookieMap = (!logged) ? {} : cookieMap;
|
|
|
// log("api lido 4d login \nuser:$username\npass:$password\nstatuscode${response.statusCode}\nlogged:$logged\nmsg:$message");
|
|
|
log("api lido 4d login errorcode: $errorcode");
|
|
|
-
|
|
|
-//invalide username or password
|
|
|
- if (errorcode == "LAS_112" && (user == null) && (pass == null)) {
|
|
|
- await Hive.box("profile").delete("lido_user");
|
|
|
- await Hive.box("profile").delete("lido_pass");
|
|
|
- await Hive.box("profile").put("lido_user_old", username);
|
|
|
- await Hive.box("profile").put("lido_pass_old", pass);
|
|
|
+ //invalide username or password
|
|
|
+ if (['"LAS_112"', '"LAS_113"'].contains(errorcode)) {
|
|
|
+ print("lidoapi: login: invalidate user & pass");
|
|
|
+ await Hive.box("settings").delete("lido_user");
|
|
|
+ await Hive.box("settings").delete("lido_pass");
|
|
|
+ if (username != "" && password != "") {
|
|
|
+ await Hive.box("settings").put("lido_user_old", username);
|
|
|
+ await Hive.box("settings").put("lido_pass_old", password);
|
|
|
+ } //username = "";
|
|
|
+ password = "";
|
|
|
+ }
|
|
|
+ final res = extractCallbackData(response.body);
|
|
|
+ final passwordChanged =
|
|
|
+ (newpass != null) && (res["errorMessage1"] != null);
|
|
|
+
|
|
|
+ // log("lidoapi: login: return: ${extractCallbackData(response.body)}");
|
|
|
+ if (newpass != null && passwordChanged) {
|
|
|
+ await Hive.box("settings").put("lido_user", username);
|
|
|
+ await Hive.box("settings").put("lido_pass", newpass);
|
|
|
+ log("lidoapi: login: newpass: $newpass");
|
|
|
}
|
|
|
-
|
|
|
return {
|
|
|
'error': logged ? null : message,
|
|
|
- 'data': {"logged": logged, "message": message},
|
|
|
+ 'data': {
|
|
|
+ "logged": logged,
|
|
|
+ "message": message,
|
|
|
+ "passwordChanged": passwordChanged
|
|
|
+ },
|
|
|
'meta': {
|
|
|
"changepass": changepass,
|
|
|
+ "plschangepass": plschangepass,
|
|
|
"user": username,
|
|
|
"pass": password,
|
|
|
"cookie": cookieMap,
|
|
|
@@ -156,6 +181,88 @@ class LidoApi {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ Future forgotpass({String? user}) async {
|
|
|
+ var response = await http.get(Uri.parse('$url/lido/las/login.jsp'));
|
|
|
+ cookieMap.addAll(_getcookies(response.headers["set-cookie"] ?? ""));
|
|
|
+ response = await http.post(
|
|
|
+ Uri.parse(
|
|
|
+ '$url/lido/las/dwr/call/plaincall/LoginBean.forgotPassword.dwr'),
|
|
|
+ body: {
|
|
|
+ "callCount": "1",
|
|
|
+ "nextReverseAjaxIndex": "0",
|
|
|
+ "c0-scriptName": "LoginBean",
|
|
|
+ "c0-methodName": "forgotPasswordLink",
|
|
|
+ "c0-id": "0",
|
|
|
+ "c0-param0": "string:$user",
|
|
|
+ "c0-param1":
|
|
|
+ "string:$realurl/lido/lsc/application-center-ui/startCenter",
|
|
|
+ "c0-param2": "string:LIDO",
|
|
|
+ "c0-param3": "string:en",
|
|
|
+ "batchId": "0",
|
|
|
+ "instanceId": "0",
|
|
|
+ "page":
|
|
|
+ "/lido/las/forgotPassword.jsp?DESMON_RESULT_PAGE=$realurl/briefing&DESMON_CODE=LAS_002&DESMON_LANG=en",
|
|
|
+ "scriptSessionId":
|
|
|
+ "lSUqDnaTyhevHY6vpNvPdIR~IuUygzP8a2p/kYr1m2p-BgwpWJ4*a"
|
|
|
+ });
|
|
|
+ cookieMap.addAll(_getcookies(response.headers["set-cookie"] ?? ""));
|
|
|
+ //print("lidoapi: forgotpass: header: ${response.headers}");
|
|
|
+ //print("lidoapi: forgotpass: ${response.body}");
|
|
|
+ return {
|
|
|
+ 'error':
|
|
|
+ response.statusCode < 300 ? null : response.statusCode.toString(),
|
|
|
+ 'data': {},
|
|
|
+ 'meta': {
|
|
|
+ "user": username,
|
|
|
+ "pass": password,
|
|
|
+ "cookie": cookieMap,
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ Future changePass(
|
|
|
+ {required String user,
|
|
|
+ required String pass,
|
|
|
+ required String token}) async {
|
|
|
+ var response = await http.get(Uri.parse('$url/lido/las/login.jsp'));
|
|
|
+ cookieMap.addAll(_getcookies(response.headers["set-cookie"] ?? ""));
|
|
|
+ response = await http.post(
|
|
|
+ Uri.parse(
|
|
|
+ '$url/lido/las/dwr/call/plaincall/LoginBean.forgotPassword.dwr'),
|
|
|
+ body: {
|
|
|
+ "callCount": "1",
|
|
|
+ "nextReverseAjaxIndex": "0",
|
|
|
+ "c0-scriptName": "LoginBean",
|
|
|
+ "c0-methodName": "changePassword",
|
|
|
+ "c0-id": "0",
|
|
|
+ "c0-param0": "string:$user",
|
|
|
+ "c0-param1": "string:$pass",
|
|
|
+ "c0-param2": "string:$token",
|
|
|
+ "batchId": "0",
|
|
|
+ "instanceId": "0",
|
|
|
+ "page": "/lido/las/changePassword.jsp?token=$token",
|
|
|
+ "scriptSessionId":
|
|
|
+ "lBgkwVDs5bVASGOoKyVfCkOJjxBwXBJERcp/4WXGUcp-7few1oOHw"
|
|
|
+ });
|
|
|
+ cookieMap.addAll(_getcookies(response.headers["set-cookie"] ?? ""));
|
|
|
+ final decodedMsg = extractCallbackData(response.body);
|
|
|
+ for (var e in decodedMsg.entries) {
|
|
|
+ decodedMsg[e.key] = e.value == "null" ? null : e.value;
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ 'error':
|
|
|
+ response.statusCode < 300 ? null : response.statusCode.toString(),
|
|
|
+ 'data': {
|
|
|
+ "error": decodedMsg["erroeMessage1"] ?? decodedMsg["erroeMessage2"]
|
|
|
+ },
|
|
|
+ 'meta': {
|
|
|
+ "user": username,
|
|
|
+ "pass": password,
|
|
|
+ "cookie": cookieMap,
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
Future getDoc(String link,
|
|
|
{String? mediaType, bool loginfirst = false}) async {
|
|
|
try {
|
|
|
@@ -574,4 +681,31 @@ class LidoApi {
|
|
|
print('Error downloading file: $e');
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ Map<String, String?> extractCallbackData(String inputString) {
|
|
|
+ // log("lidoapi: extractCallbackData: $inputString");
|
|
|
+ final RegExp regex =
|
|
|
+ RegExp(r'dwr\.engine\.remote\.handleCallback\(\"0\",\"0\",([^)]+)\)');
|
|
|
+ final Match? match = regex.firstMatch(inputString);
|
|
|
+ //log("lidoapi: extractCallbackData: match: ${match?[1]}");
|
|
|
+ if (match != null && match[1] != null) {
|
|
|
+ final String callbackData = match[1]!;
|
|
|
+ final Map<String, String?> jsonData = convertStringToMap(callbackData);
|
|
|
+ //log("lidoapi: extractCallbackData: jsonData: $jsonData");
|
|
|
+ return jsonData;
|
|
|
+ }
|
|
|
+ return {};
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, String?> convertStringToMap(String inputString) {
|
|
|
+ final Map<String, String?> result = {};
|
|
|
+ final RegExp regex = RegExp(r'(\w+):("?.*"?)(,|})');
|
|
|
+ final Iterable<RegExpMatch> matches = regex.allMatches(inputString);
|
|
|
+ for (var match in matches) {
|
|
|
+ final String key = match[1]!;
|
|
|
+ final String value = match[2]!;
|
|
|
+ result[key] = value;
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
}
|