register method

Future<void> register({
  1. required RegisterAuthProvider provider,
})

Register a user by passing a class inheriting from RegisterAuthProvider in provider.

RegisterAuthProviderを継承したクラスをproviderで渡すことにより、ユーザーの登録を行います。

Implementation

Future<void> register({
  required RegisterAuthProvider provider,
}) async {
  await _initialize();
  if (isSignedIn) {
    await signOut();
  }
  if (provider is EmailAndPasswordRegisterAuthProvider) {
    final accounts = _data._getAccounts();
    final account = accounts.firstWhereOrNull(
        (element) => element.get(userEmailKey, "") == provider.email);
    if (account != null) {
      if (!provider.allowMultiProvider) {
        throw Exception(
          "This Email address is already registered. Please register another email address.",
        );
      }
    }
    final userId = _uuid;
    _data._setAccount(
      userId,
      {
        userIdKey: userId,
        userEmailKey: provider.email,
        userPasswordKey: provider.password,
        activeProvidersKey: [
          ...activeProviderIds,
          provider.providerId,
        ].distinct(),
      },
    );
    _data._setCurrent(userId);
    await onSendRegisteredEmail?.call(
      provider.email,
      provider.password,
      provider.locale ?? defaultLocale,
    );
  }
  await onSaved?.call(this);
}