createAccount static method

Future<void> createAccount(
  1. Map<String, dynamic> userData
)

Implementation

static Future<void> createAccount(Map<String, dynamic> userData) async {
  await initialize();
  logger.finest('createAccount start');
  // accountSignUpType
  var accountSignUpType = AccountSignUpType.hycop;
  if (userData['accountSignUpType'] == null) {
    userData['accountSignUpType'] = accountSignUpType.index;
  } else {
    accountSignUpType =
        AccountSignUpType.fromInt(int.parse(userData['accountSignUpType'].toString()));
    if (accountSignUpType == AccountSignUpType.none) {
      logger.severe('invalid sign-up type !!!');
      throw HycopUtils.getHycopException(defaultMessage: 'invalid sign-up type !!!');
    }
  }
  logger.info('accountSignUpType($accountSignUpType)');
  // password
  String password = userData['password'] ?? '';
  if (password.isEmpty && accountSignUpType == AccountSignUpType.hycop) {
    // hycop-service need password !!!
    logger.severe('password is empty !!!');
    throw HycopUtils.getHycopException(defaultMessage: 'password is empty !!!');
  }
  String passwordSha1 = '';
  if (accountSignUpType == AccountSignUpType.hycop) {
    // hycop-service's password = sha1-hash of password
    passwordSha1 = HycopUtils.stringToSha1(password);
  } else {
    // not hycop-service's password = sha1-hash of email
    String email = userData['email'] ?? '';
    if (email.isEmpty) {
      logger.severe('email is empty !!!');
      throw HycopUtils.getHycopException(defaultMessage: 'email is empty !!!');
    }
    passwordSha1 = HycopUtils.stringToSha1(email);
    password = passwordSha1;
  }
  userData['password'] = passwordSha1;
  logger.finest('password resetting to [$password] (${accountSignUpType.name}');
  // createAccount
  await HycopFactory.account!.createAccount(userData).catchError((error, stackTrace) =>
      throw HycopUtils.getHycopException(
          error: error, defaultMessage: 'AccountManager.createAccount Failed !!!'));
  logger.finest('createAccount end');
  _currentLoginUser = UserModel(userData: userData);
  await createSession();
  logger.finest('createAccount set');
}