Registration_Handler::handle_request( $submission )
Summary
No summary available.Source
File: src/BigCommerce/Forms/Registration_Handler.php
public function handle_request( $submission ) { if ( ! $this->should_handle_request( $submission ) ) { return; } $errors = $this->validate_submission( $submission ); $password = $submission[ 'bc-register' ][ 'new_password' ]; // prevent logging sensitive information in plain text unset( $submission[ 'bc-register' ][ 'new_password' ] ); unset( $submission[ 'bc-register' ][ 'confirm_password' ] ); if ( count( $errors->get_error_codes() ) > 0 ) { /** * Triggered when a form has errors that prevent completion. * * @param \WP_Error $errors The message that will display to the user * @param array $submission The data submitted to the form */ do_action( 'bigcommerce/form/error', $errors, $submission ); return; } $profile = $this->get_profile( $submission[ 'bc-register' ] ); $address = $this->get_address( $submission[ 'bc-register' ] ); // create the user // be sure to trim the email down to 60 characters to meet WP table limits for username $user_id = wp_create_user( mb_substr( $profile[ 'email' ], 0, 60 ), $password, $profile[ 'email' ] ); if ( is_wp_error( $user_id ) ) { switch ( $user_id->get_error_code() ) { case 'existing_user_email': $errors->add( 'email', $user_id->get_error_message() ); break; case 'existing_user_login': $errors->add( 'email', __( 'Sorry, that email address is already used!', 'bigcommerce' ) ); break; case 'empty_user_login': case 'user_login_too_long': case 'invalid_username': $errors->add( 'email', __( 'Please verify that you have submitted a valid email address.', 'bigcommerce' ) ); break; default: $errors->add( $user_id->get_error_code(), $user_id->get_error_message() ); break; } do_action( 'bigcommerce/form/error', $errors, $submission ); return; } /** * Log the user in, automatically connecting the user with BigCommerce * and setting up the profile with the submitted data * * @see \BigCommerce\Accounts\Login::connect_customer_id() */ $profile_filter = function ( $data ) use ( $profile, $password ) { $data = $profile; $data[ '_authentication' ][ 'password' ] = $password; return $data; }; add_filter( 'bigcommerce/customer/create/args', $profile_filter, 10, 1 ); wp_signon( [ 'user_login' => $profile[ 'email' ], 'user_password' => $password, 'remember' => true, ] ); remove_filter( 'bigcommerce/customer/create/args', $profile_filter, 10 ); $user = new \WP_User( $user_id ); /** This filter is documented in src/BigCommerce/Accounts/Login.php */ $role = apply_filters( 'bigcommerce/user/default_role', Customer_Role::NAME ); $user->set_role( $role ); // all future password validation will be against the API for this user update_user_meta( $user_id, User_Profile_Settings::SYNC_PASSWORD, true ); wp_set_current_user( $user_id ); $customer = new Customer( $user_id ); $customer->add_address( $address ); $profile_page = get_option( Account_Page::NAME, 0 ); $url = $profile_page ? get_permalink( $profile_page ) : home_url(); /** * The message to display when an account is created * * @param string $message */ $message = apply_filters( 'bigcommerce/form/registration/success_message', __( 'Account created!', 'bigcommerce' ) ); /** * Triggered when a form is successfully processed. * * @param string $message The message that will display to the user * @param array $submission The data submitted with the form * @param string $url The URL to redirect the user to * @param array $data Optional data about the submission */ do_action( 'bigcommerce/form/success', $message, $submission, $url, [ 'key' => 'account_created' ] ); }