roles ) || ( ! isset( $fourlogin_options[FOURLOGIN_OPTION_ALLOW_WP_LOGIN][$user->roles[0]] ) ) || 2 == get_user_meta( $user->ID, 'made_by_fourlogin', true ) || 1 == get_user_meta( $user->ID, 'made_by_fourlogin', true ) ){ ?>
| 4Login' ); echo wp_kses_post($message); ?> |
| 4Login' ); echo wp_kses_post($message); ?> |
ERROR" . esc_html__( ': Cannot register with an empty username.', '4login-for-secure-and-smart-access' ); echo wp_kses_post( $message ); break; case 'too_long' : $message = "ERROR" . esc_html__( ': Username may not be longer than 60 characters.', '4login-for-secure-and-smart-access' ); echo wp_kses_post( $message ); break; case 'exist' : $message = "ERROR" . esc_html__( ': This username is already registered. Please choose another one.', '4login-for-secure-and-smart-access' ); echo wp_kses_post( $message ); break; case 'cannot_email' : $message = "ERROR" . esc_html__( ': Cannot register with an email as a username.', '4login-for-secure-and-smart-access' ); echo wp_kses_post( $message ); break; case 'invalid_characters' : $message = "ERROR" . esc_html__( ': This username is invalid because it uses illegal characters. Please enter a valid username.', '4login-for-secure-and-smart-access' ); echo wp_kses_post( $message ); break; case 'ex' : default: $message = "ERROR" . esc_html__( ': Something is wrong in this site.', '4login-for-secure-and-smart-access' ); echo wp_kses_post( $message ); } ?>
user_email = $_user -> user_email.'_fourlogin_before_register'; $user_login_name = isset( $_POST['user_login'] ) ? sanitize_user(wp_unslash($_POST['user_login']), true) : ''; // user_login validation. if ( isset( $_POST['user_login'] ) && mb_strlen( $user_login_name )!= mb_strlen( sanitize_user(wp_unslash($_POST['user_login'])) )){ wp_safe_redirect( admin_url('profile.php').'?fourlogin_register_failed=invalid_characters'); exit; } elseif ( empty( $user_login_name ) ) { wp_safe_redirect( admin_url('profile.php').'?fourlogin_register_failed=empty'); exit; } elseif ( mb_strlen( $user_login_name ) > 60 ) { wp_safe_redirect( admin_url('profile.php').'?fourlogin_register_failed=too_long'); exit; } elseif( is_email( $user_login_name ) ){ //When log in with email, if the email exists in other users' "user_login" , that can cause the other user's login. //So, we do not let register user_login using email. wp_safe_redirect( admin_url('profile.php').'?fourlogin_register_failed=cannot_email'); exit; } elseif ( username_exists( $user_login_name ) ) { wp_safe_redirect( admin_url('profile.php').'?fourlogin_register_failed=exist'); exit; } $new_user = get_user_to_edit($user_id); $new_user -> user_login = $user_login_name; $new_user -> ID = ''; $new_user -> data -> ID = ''; $new_user -> display_name = $user_login_name; $new_user -> role = fourlogin_options_get( FOURLOGIN_OPTION_DEFAULT_ROLE ); //update user's email to create new user with the same email. $_user_id = wp_insert_user( $_user ); if ( !is_wp_error( $_user_id) ){ clean_user_cache( $_user ); $new_user_id = wp_insert_user( $new_user ); if ( !is_wp_error($new_user_id) ){ if ( is_multisite() ){ fourlogin_delete_user_multi( $_user_id, $new_user_id ); } else { wp_delete_user( $_user_id, $new_user_id ); } //Over write the login_info as it is "register" for the user. global $user_id ; $user_id = $new_user_id; wp_set_current_user( $new_user_id, $user_login_name ); wp_set_auth_cookie( $new_user_id ); //save the information that the user registered its user_login. if ( ! update_user_meta( $new_user_id, 'made_by_fourlogin', 2) ){ //TODO } //back to the usual profile page. wp_safe_redirect( admin_url('profile.php?updated=1')); exit; } else { //failed in create new user. //roleback the email change. if ( !is_wp_error( wp_insert_user( $_user_bk ) ) ){ wp_safe_redirect( admin_url('profile.php').'?fourlogin_register_failed=ex'); exit; } else { //Maybe the old user with the email added "fourloginbeforeregister" remains.But rarely. } } } else { //failed in updating the old user data. Maybe failed in create a new user before. wp_safe_redirect( admin_url('profile.php').'?fourlogin_register_failed=ex'); exit; } } } } } add_action('personal_options_update', 'fourlogin_update_user_login'); /** * To avoid the error cause of disabled email form, add POST['email']. * @param int $user_id */ function fourlogin_edit_user_add_email( $user_id ){ $_user = get_user_to_edit( $user_id ); if (isset($_POST['mail_nonce'])) { $nonce = sanitize_key(wp_unslash($_POST['mail_nonce'])); } if( ! isset( $_POST['email'] ) && ! empty( $_user -> user_email ) && ! wp_verify_nonce($nonce,'mail_action')){ $_POST['email'] = $_user -> user_email; } } add_action( 'personal_options_update', 'fourlogin_edit_user_add_email' ); /** * when a user registered username in multisite, * if user already have posts, the posts will move to the new registered user. * And the sites that already logged in will also take over. * @param int $user_id * @param int $new_id */ function fourlogin_delete_user_multi( $user_id, $new_id ){ $sites = get_sites( array( 'fields' => 'ids', ) ); foreach ( $sites as $site ){ if ( is_user_member_of_blog( $user_id, $site ) ){ switch_to_blog( $site ); $role = get_user_by( 'ID', $user_id )->roles[0]; restore_current_blog(); add_user_to_blog( $site, $new_id, empty($role)? '':$role ); switch_to_blog( $site ); wp_delete_user( $user_id, $new_id ); restore_current_blog(); } } //when multi_site, delete the dummy user. wpmu_delete_user( $user_id ); }