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