function()

in javascript/widgets/handler/common.js [1082:1192]


    function(
        app,
        container,
        signInMethods,
        email,
        opt_displayName,
        opt_infoBarMessage,
        opt_displayFullTosPpMessage) {
  if (!signInMethods.length && (app.getConfig().isEmailPasswordSignInAllowed()
          || app.getConfig().isEmailLinkSignInAllowed())) {
    if (app.getConfig().isEmailSignUpDisabled()) {
      // FirebaseUI auth instance disable sign up.
      firebaseui.auth.widget.handler.handle(
          firebaseui.auth.widget.HandlerName.UNAUTHORIZED_USER,
          app,
          container,
          email,
          firebase.auth.EmailAuthProvider.PROVIDER_ID);
    } else {
      if (app.getConfig().isEmailPasswordSignInAllowed()) {
        // Account does not exist and password sign-in method is enabled. Go to
        // password sign up and populate available fields.
        firebaseui.auth.widget.handler.handle(
            firebaseui.auth.widget.HandlerName.PASSWORD_SIGN_UP,
            app,
            container,
            email,
            opt_displayName,
            undefined,
            opt_displayFullTosPpMessage);
      } else {
        // Account does not exist and email link sign-in method is enabled. Send
        // email link to sign in.
        firebaseui.auth.widget.handler.handle(
            firebaseui.auth.widget.HandlerName.SEND_EMAIL_LINK_FOR_SIGN_IN,
            app,
            container,
            email,
            function() {
              // Clicking back button goes back to sign in page.
              firebaseui.auth.widget.handler.handle(
                  firebaseui.auth.widget.HandlerName.SIGN_IN,
                  app,
                  container);
            });
      }
    }
  } else if (goog.array.contains(signInMethods,
      firebase.auth.EmailAuthProvider.EMAIL_PASSWORD_SIGN_IN_METHOD)) {
    // Existing Password account.
    firebaseui.auth.widget.handler.handle(
        firebaseui.auth.widget.HandlerName.PASSWORD_SIGN_IN,
        app,
        container,
        email,
        opt_displayFullTosPpMessage);
  } else if ((signInMethods.length == 1) && (signInMethods[0] ===
      firebase.auth.EmailAuthProvider.EMAIL_LINK_SIGN_IN_METHOD)) {
    if (app.getConfig().isEmailLinkSignInAllowed()) {
      // Existing email link account.
      firebaseui.auth.widget.handler.handle(
          firebaseui.auth.widget.HandlerName.SEND_EMAIL_LINK_FOR_SIGN_IN,
          app,
          container,
          email,
          function() {
            // Clicking back button goes back to sign in page.
            firebaseui.auth.widget.handler.handle(
                firebaseui.auth.widget.HandlerName.SIGN_IN,
                app,
                container);
          });
    } else {
      // Email link sign-in is the only option for this user but it is not
      // supported in the current app configuration.
      firebaseui.auth.widget.handler.handle(
          firebaseui.auth.widget.HandlerName.UNSUPPORTED_PROVIDER,
          app,
          container,
          email);
    }
  } else {
    // Federated Account.
    // The account exists, and is a federated identity account.
    // We store the pending email in case the user tries to use an account with
    // a different email.
    var federatedSignInMethod =
        firebaseui.auth.idp.getFirstFederatedSignInMethod(
            signInMethods, app.getConfig().getProviders());
    if (federatedSignInMethod) {
      var pendingEmailCredential =
          new firebaseui.auth.PendingEmailCredential(email);
      firebaseui.auth.storage.setPendingEmailCredential(
          pendingEmailCredential, app.getAppId());
      firebaseui.auth.widget.handler.handle(
          firebaseui.auth.widget.HandlerName.FEDERATED_SIGN_IN,
          app,
          container,
          email,
          federatedSignInMethod,
          opt_infoBarMessage);
    } else {
      firebaseui.auth.widget.handler.handle(
          firebaseui.auth.widget.HandlerName.UNSUPPORTED_PROVIDER,
          app,
          container,
          email);
    }
  }

};