icr() ) { delete_site_option( 'password_mismatch' ); update_site_option( 'mo_lms_new_registration', 'true' ); update_site_option( 'mo_2factor_user_registration_status', 'REGISTRATION_STARTED' ); include $molms_dirName . 'views' . DIRECTORY_SEPARATOR . 'account' . DIRECTORY_SEPARATOR . 'register.php'; } else { $email = get_site_option( 'mo2f_email' ); $key = get_site_option( 'mo2f_customerKey' ); $api = get_site_option( 'mo2f_api_key' ); $token = get_site_option( 'mo2f_customer_token' ); $EmailTransactions = molms_Utility::get_mo2f_db_option( 'molms_email_transactions', 'site_option' ); $EmailTransactions = $EmailTransactions ? $EmailTransactions : 0; $SMSTransactions = get_site_option( 'molms_sms_transactions' ) ? get_site_option( 'molms_sms_transactions' ) : 0; include $molms_dirName . 'views' . DIRECTORY_SEPARATOR . 'account' . DIRECTORY_SEPARATOR . 'profile.php'; } /* REGISTRATION RELATED FUNCTIONS */ //Function to register new customer function molms_register_customer() { //validate and sanitize $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( $_POST['nonce'] ) : ''; if ( ! wp_verify_nonce( $nonce, 'mo2f-account-nonce' ) ) { do_action( 'molms_show_message', 'ERROR', 'ERROR' ); return; } global $molms_utility, $molms_db_queries; $user = wp_get_current_user(); $email = sanitize_email( $_POST['email'] ); $company = sanitize_text_field( $_SERVER["SERVER_NAME"] ); $password = sanitize_text_field( $_POST['password'] ); $confirmPassword = sanitize_text_field( $_POST['confirmPassword'] ); if ( strlen( $password ) < 6 || strlen( $confirmPassword ) < 6 ) { do_action( 'molms_show_message', molms_Messages::showMessage( 'PASS_LENGTH' ), 'ERROR' ); return; } if ( $password != $confirmPassword ) { do_action( 'molms_show_message', molms_Messages::showMessage( 'PASS_MISMATCH' ), 'ERROR' ); return; } if ( molms_Utility::check_empty_or_null( $email ) || molms_Utility::check_empty_or_null( $password ) || molms_Utility::check_empty_or_null( $confirmPassword ) ) { do_action( 'molms_show_message', molms_Messages::showMessage( 'REQUIRED_FIELDS' ), 'ERROR' ); return; } update_site_option( 'mo2f_email', $email ); update_site_option( 'mo_lms_company', $company ); update_site_option( 'mo_lms_password', $password ); $customer = new molms_cURL(); $content = json_decode( $customer->check_customer( $email ), true ); $molms_db_queries->insert_user( $user->ID ); switch ( $content['status'] ) { case 'CUSTOMER_NOT_FOUND': $customer_key = json_decode( $customer->create_customer( $email, $company, $password, $phone = '', $first_name = '', $last_name = '' ), true ); if ( strcasecmp( $customer_key['status'], 'SUCCESS' ) == 0 ) { update_site_option( 'totalUsersCloud', get_site_option( 'totalUsersCloud' ) + 1 ); update_site_option( 'mo2f_email', $email ); molms_save_success_customer_config( $email, $customer_key['id'], $customer_key['apiKey'], $customer_key['token'], $customer_key['appSecret'] ); molms_get_current_customer( $email, $password ); } break; default: molms_get_current_customer( $email, $password ); break; } } function molms_goto_sign_in_page() { $nonce = isset( $_POST['molms_verifycustomer_nonce'] ) ? sanitize_text_field( $_POST['molms_verifycustomer_nonce'] ) : ''; if ( ! wp_verify_nonce( $nonce, 'mo2f-goto-verifycustomer-nonce' ) ) { do_action( 'molms_show_message', 'ERROR', 'ERROR' ); return; } global $molms_db_queries; $user = wp_get_current_user(); update_site_option( 'molms_verify_customer', 'true' ); update_site_option( 'mo_2factor_user_registration_status', 'MO_2_FACTOR_VERIFY_CUSTOMER' ); } //Function to go back to the registration page function molms_revert_back_registration() { $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( $_POST['nonce'] ) : ''; if ( ! wp_verify_nonce( $nonce, 'mo2f-account-nonce' ) ) { do_action( 'molms_show_message', 'ERROR', 'ERROR' ); return; } global $molms_db_queries; $user = wp_get_current_user(); delete_site_option( 'mo2f_email' ); delete_site_option( 'mo_lms_registration_status' ); delete_site_option( 'molms_verify_customer' ); update_site_option( 'mo_2factor_user_registration_status', '' ); } //Function to reset customer's password function molms_reset_password() { $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( $_POST['nonce'] ) : ''; if ( ! wp_verify_nonce( $nonce, 'mo2f-account-nonce' ) ) { do_action( 'molms_show_message', 'ERROR', 'ERROR' ); return; } $customer = new molms_cURL(); $forgot_password_response = json_decode( $customer->mo_lms_forgot_password() ); if ( $forgot_password_response->status == 'SUCCESS' ) { do_action( 'molms_show_message', molms_Messages::showMessage( 'RESET_PASS' ), 'SUCCESS' ); } } //Function to verify customer function molms_verify_customer() { $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( $_POST['nonce'] ) : ''; if ( ! wp_verify_nonce( $nonce, 'mo2f-account-nonce' ) ) { do_action( 'molms_show_message', 'ERROR', 'ERROR' ); return; } global $molms_utility; $email = sanitize_email( $_POST['email'] ); $password = sanitize_text_field( $_POST['password'] ); if ( $molms_utility->check_empty_or_null( $email ) || $molms_utility->check_empty_or_null( $password ) ) { do_action( 'molms_show_message', molms_Messages::showMessage( 'REQUIRED_FIELDS' ), 'ERROR' ); return; } molms_get_current_customer( $email, $password ); } //Function to get customer details function molms_get_current_customer( $email, $password ) { global $molms_db_queries; $user = wp_get_current_user(); $customer = new molms_cURL(); $content = $customer->get_customer_key( $email, $password ); $customer_key = json_decode( $content, true ); if ( json_last_error() == JSON_ERROR_NONE ) { if ( isset( $customer_key['phone'] ) ) { update_site_option( 'mo_lms_admin_phone', $customer_key['phone'] ); } update_site_option( 'mo2f_email', $email ); molms_save_success_customer_config( $email, $customer_key['id'], $customer_key['apiKey'], $customer_key['token'], $customer_key['appSecret'] ); do_action( 'molms_show_message', molms_Messages::showMessage( 'REG_SUCCESS' ), 'SUCCESS' ); update_site_option( 'totalUsersCloud', get_site_option( 'totalUsersCloud' ) + 1 ); $customerT = new Molms_Customer_Cloud_Setup(); $content = json_decode( $customerT->get_customer_transactions( get_site_option( 'mo2f_customerKey' ), get_site_option( 'mo2f_api_key' ) ), true ); if ( isset( $content['smsRemaining'] ) ) { update_site_option( 'molms_sms_transactions', $content['smsRemaining'] ); } else { update_site_option( 'molms_sms_transactions', 0 ); } } else { update_site_option( 'mo_2factor_user_registration_status', 'MO_2_FACTOR_VERIFY_CUSTOMER' ); update_site_option( 'molms_verify_customer', 'true' ); delete_site_option( 'mo_lms_new_registration' ); do_action( 'molms_show_message', molms_Messages::showMessage( 'ACCOUNT_EXISTS' ), 'ERROR' ); } } //Save all required fields on customer registration/retrieval complete. function molms_save_success_customer_config( $email, $id, $api_key, $token, $appSecret ) { global $molms_db_queries; $user = wp_get_current_user(); update_site_option( 'mo2f_customerKey', $id ); update_site_option( 'mo2f_api_key', $api_key ); update_site_option( 'mo2f_customer_token', $token ); update_site_option( 'mo2f_app_secret', $appSecret ); update_site_option( 'mo_lms_enable_log_requests', true ); update_site_option( 'mo2f_miniorange_admin', $user->ID ); update_site_option( 'mo_2factor_admin_registration_status', 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS' ); update_site_option( 'mo_2factor_user_registration_status', 'MO_2_FACTOR_PLUGIN_SETTINGS' ); $molms_db_queries->update_user_details( $user->ID, array( 'mo2f_user_email' => $email, 'user_registration_with_miniorange' => 'SUCCESS' ) ); $enduser = new Molms_Two_Factor_Setup(); $userinfo = json_decode( $enduser->mo2f_get_userinfo( $email ), true ); $mo2f_second_factor = 'NONE'; if ( json_last_error() == JSON_ERROR_NONE ) { if ( $userinfo['status'] == 'SUCCESS' ) { $mo2f_second_factor = molms_update_and_sync_user_two_factor( $user->ID, $userinfo ); } } $configured_2FA_method = ''; if ( $mo2f_second_factor == 'EMAIL' ) { $enduser->mo2f_update_userinfo( $email, 'NONE', null, '', true ); $configured_2FA_method = 'NONE'; } elseif ( $mo2f_second_factor != 'NONE' ) { $configured_2FA_method = molms_2f_Utility::molms_decode_2_factor( $mo2f_second_factor, "servertowpdb" ); if ( molms_Utility::get_mo2f_db_option( 'mo2f_is_NC', 'get_site_option' ) == 0 ) { $auth_method_abr = str_replace( ' ', '', $configured_2FA_method ); } else { if ( in_array( $configured_2FA_method, array( 'Email Verification', 'Authy Authenticator', 'OTP over SMS' ) ) ) { $enduser->mo2f_update_userinfo( $email, 'NONE', null, '', true ); } } } $mo2f_message = molms_2fConstants:: langTranslate( "ACCOUNT_RETRIEVED_SUCCESSFULLY" ); if ( $configured_2FA_method != 'NONE' && molms_Utility::get_mo2f_db_option( 'mo2f_is_NC', 'get_site_option' ) == 0 ) { $mo2f_message .= ' ' . $configured_2FA_method . ' ' . molms_2fConstants:: langTranslate( "DEFAULT_2ND_FACTOR" ) . '. '; } $mo2f_message .= '' . molms_2fConstants:: langTranslate( "CLICK_HERE" ) . ' ' . molms_2fConstants:: langTranslate( "CONFIGURE_2FA" ); delete_user_meta( $user->ID, 'register_account' ); $mo2f_customer_selected_plan = get_site_option( 'mo2f_customer_selected_plan' ); if ( ! empty( $mo2f_customer_selected_plan ) ) { delete_site_option( 'mo2f_customer_selected_plan' ); if ( molms_Utility::get_mo2f_db_option( 'mo2f_planname', 'get_site_option' ) == 'addon_plan' ) { ?> ID, 'register_account_popup', true ) ) { update_user_meta( $user->ID, 'configure_2FA', 1 ); } } update_site_option( 'mo2f_message', $mo2f_message ); delete_user_meta( $user->ID, 'register_account_popup' ); delete_site_option( 'molms_verify_customer' ); delete_site_option( 'mo_lms_registration_status' ); delete_site_option( 'mo_lms_password' ); }