sendAuthenticationRequest method
Implementation
Future<RemoteDto> sendAuthenticationRequest(
int version, String? serverDatabase, String? testPassword) async {
if (initialized == false) throw ArgumentError(AbstractDao.C_MUST_INIT);
String url = "";
UserDto? cuDto = await userTools.getCurrentUserDto(smd, transaction);
int? cuId = await userTools.getCurrentUserId(smd, transaction);
UserStoreDto? cuStoreDto;
String email = "";
try {
cuStoreDto = await userTools.getCurrentUserStoreDto(smd, transaction);
email = cuStoreDto!.email!;
} on SqlException catch (e) {
if (e.sqlExceptionEnum != SqlExceptionEnum.ENTRY_NOT_FOUND) rethrow;
}
if (cuDto!.pass_key == null || cuDto.pass_key!.length == 0) {
// User has missing pass_key
url += "email=" + email;
if (serverDatabase != null) url += "&database=" + serverDatabase;
if (testPassword != null) url += "&test_pass=" + testPassword;
url += "&ts=" + TimeUtils.getNowCustomTs().toString();
url += "&version=" + version.toString();
url += "&user_id=" + cuId.toString();
} else {
Map<String, String> params = Map();
if (serverDatabase != null) params["database"] = serverDatabase;
if (testPassword != null) params["test_pass"] = testPassword;
params["water_line"] = (await clientWarden.getLatestTs()).toString();
params["ts"] = TimeUtils.getNowCustomTs().toString();
params["version"] = version.toString();
params["user_id"] = cuId.toString();
SignedRequestHelper2 signedRequestHelper =
SignedRequestHelper2(email, cuDto.pass_key!);
url += signedRequestHelper.sign(params);
if (cuId == 1) url += "&email=" + email;
url +=
"&crc=" + CrcUtils.getCrcFromString(cuDto.getCrcString()).toString();
}
late String response;
try {
response = await writeClient.getBaseURI(UrlTools.C_AUTHENTICATE_URL, url);
} on TransmitStatusException catch (e) {
print("WS $e");
throw TransmitStatusException(e.transmitStatus,
cause: "Send Authentication");
}
// Process response
RemoteDto remoteDto;
try {
remoteDto = JsonRemoteDtoTools.getRemoteDtoFromJsonString(
response, smdSys, defaults);
} on RemoteStatusException catch (e) {
print("WS $e");
throw TransmitStatusException(TransmitStatus.REMOTE_STATE_ERROR,
cause: "Send Authentication");
}
return remoteDto;
}