login static method
login the user
Implementation
static Future<LoggedInUserOrError> login(String userId, String password,
{UserType userType = UserType.person}) {
Completer<LoggedInUserOrError> completer = Completer();
LocalityAPI.call('api/login', {
'app_token': LocalitySocialCloud.getAppID(),
'user_id': userId,
'password': LocalityAuth.hashPassword(password)
}, (success, answerData) {
String pw1 =
LocalityAuth.hashPassword(password, salt: encryptPrivateKeySalt);
if (success) {
AccessToken token = AccessToken(answerData['token']!);
AuthDataWatcher.instance.whenAccessTokenExpired(
token.token!, DateTime(200), (newToken, expiresAt) {
token.refreshWith(newToken);
});
String publicKey = answerData['public_key']!;
String decryptedPrivateKey = ChaCha20(ChaCha20Key.fromString(pw1))
.decrypt(answerData['private_key']!, Nonce.fromString(publicKey));
LoggedInUser loggedInUser = LoggedInUser(
user: LocalityUser(userId, publicKey),
accessToken: token,
privateKey: decryptedPrivateKey,
);
completer.complete(LoggedInUserOrError.fromUser(loggedInUser));
} else {
completer.complete(
LoggedInUserOrError.fromError(AuthError.serverNotReachable));
}
});
return completer.future;
}