| @@ -4,60 +4,10 @@ | ||
| 4 | 4 | die('HACKING ATTEMPT!'); |
| 5 | 5 | } |
| 6 | 6 | |
| 7 | 7 | include_once(LOGINIZER_DIR.'/lib/IPv6/IPv6.php'); |
| 8 | +include_once(LOGINIZER_DIR .'/common.php'); | |
| 8 | 9 | |
| 9 | -// Get the client IP | |
| 10 | -function _lz_getip(){ | |
| 11 | - if(isset($_SERVER["REMOTE_ADDR"])){ | |
| 12 | - return $_SERVER["REMOTE_ADDR"]; | |
| 13 | - }elseif(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){ | |
| 14 | - return $_SERVER["HTTP_X_FORWARDED_FOR"]; | |
| 15 | - }elseif(isset($_SERVER["HTTP_CLIENT_IP"])){ | |
| 16 | - return $_SERVER["HTTP_CLIENT_IP"]; | |
| 17 | - } | |
| 18 | -} | |
| 19 | - | |
| 20 | -// Get the client IP | |
| 21 | -function lz_getip(){ | |
| 22 | - | |
| 23 | - global $loginizer; | |
| 24 | - | |
| 25 | - // Just so that we have something | |
| 26 | - $ip = _lz_getip(); | |
| 27 | - | |
| 28 | - $loginizer['ip_method'] = (int) @$loginizer['ip_method']; | |
| 29 | - | |
| 30 | - if(isset($_SERVER["REMOTE_ADDR"])){ | |
| 31 | - $ip = $_SERVER["REMOTE_ADDR"]; | |
| 32 | - } | |
| 33 | - | |
| 34 | - if(isset($_SERVER["HTTP_X_FORWARDED_FOR"]) && @$loginizer['ip_method'] == 1){ | |
| 35 | - if(strpos($_SERVER["HTTP_X_FORWARDED_FOR"], ',')){ | |
| 36 | - $temp_ip = explode(',', $_SERVER["HTTP_X_FORWARDED_FOR"]); | |
| 37 | - $ip = trim($temp_ip[0]); | |
| 38 | - }else{ | |
| 39 | - $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; | |
| 40 | - } | |
| 41 | - } | |
| 42 | - | |
| 43 | - if(isset($_SERVER["HTTP_CLIENT_IP"]) && @$loginizer['ip_method'] == 2){ | |
| 44 | - $ip = $_SERVER["HTTP_CLIENT_IP"]; | |
| 45 | - } | |
| 46 | - | |
| 47 | - if(@$loginizer['ip_method'] == 3 && isset($_SERVER[@$loginizer['custom_ip_method']])){ | |
| 48 | - $ip = $_SERVER[@$loginizer['custom_ip_method']]; | |
| 49 | - } | |
| 50 | - | |
| 51 | - // Hacking fix for X-Forwarded-For | |
| 52 | - if(!lz_valid_ip($ip)){ | |
| 53 | - return ''; | |
| 54 | - } | |
| 55 | - | |
| 56 | - return $ip; | |
| 57 | - | |
| 58 | -} | |
| 59 | - | |
| 60 | 10 | // Execute a select query and return an array |
| 61 | 11 | function lz_selectquery($query, $array = 0){ |
| 62 | 12 | global $wpdb; |
| 63 | 13 | |
| @@ -69,58 +19,8 @@ | ||
| 69 | 19 | return $result; |
| 70 | 20 | } |
| 71 | 21 | } |
| 72 | 22 | |
| 73 | -// Check if an IP is valid | |
| 74 | -function lz_valid_ip($ip){ | |
| 75 | - | |
| 76 | - if(empty($ip)){ | |
| 77 | - return false; | |
| 78 | - } | |
| 79 | - | |
| 80 | - // IPv6 | |
| 81 | - if(lz_valid_ipv6($ip)){ | |
| 82 | - return true; | |
| 83 | - } | |
| 84 | - | |
| 85 | - // IPv4 | |
| 86 | - if(!ip2long($ip) || !lz_valid_ipv4($ip)){ | |
| 87 | - return false; | |
| 88 | - } | |
| 89 | - | |
| 90 | - return true; | |
| 91 | -} | |
| 92 | - | |
| 93 | -function lz_valid_ipv4($ip){ | |
| 94 | - if(!preg_match('/^(\d){1,3}\.(\d){1,3}\.(\d){1,3}\.(\d){1,3}$/is', $ip) || substr_count($ip, '.') != 3){ | |
| 95 | - return false; | |
| 96 | - } | |
| 97 | - | |
| 98 | - $r = explode('.', $ip); | |
| 99 | - | |
| 100 | - foreach($r as $v){ | |
| 101 | - $v = (int) $v; | |
| 102 | - if($v > 255 || $v < 0){ | |
| 103 | - return false; | |
| 104 | - } | |
| 105 | - } | |
| 106 | - | |
| 107 | - return true; | |
| 108 | - | |
| 109 | -} | |
| 110 | - | |
| 111 | -function lz_valid_ipv6($ip){ | |
| 112 | - | |
| 113 | - $pattern = '/^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/'; | |
| 114 | - | |
| 115 | - if(!preg_match($pattern, $ip)){ | |
| 116 | - return false; | |
| 117 | - } | |
| 118 | - | |
| 119 | - return true; | |
| 120 | - | |
| 121 | -} | |
| 122 | - | |
| 123 | 23 | // Check if a field is posted via POST else return default value |
| 124 | 24 | function lz_optpost($name, $default = ''){ |
| 125 | 25 | |
| 126 | 26 | if(!empty($_POST[$name])){ |
| @@ -244,9 +144,9 @@ | ||
| 244 | 144 | if(empty($error)){ |
| 245 | 145 | return true; |
| 246 | 146 | } |
| 247 | 147 | |
| 248 | - $error_string = '<b>Please fix the below error(s) :</b> <br />'; | |
| 148 | + $error_string = '<b>'.__('Please fix the below error(s)', 'loginizer').' :</b> <br />'; | |
| 249 | 149 | |
| 250 | 150 | foreach($error as $ek => $ev){ |
| 251 | 151 | $error_string .= '* '.$ev.'<br />'; |
| 252 | 152 | } |
| @@ -251,9 +151,9 @@ | ||
| 251 | 151 | $error_string .= '* '.$ev.'<br />'; |
| 252 | 152 | } |
| 253 | 153 | |
| 254 | 154 | echo '<div id="message" class="error"><p>' |
| 255 | - . __($error_string, 'loginizer') | |
| 155 | + . $error_string | |
| 256 | 156 | . '</p></div>'; |
| 257 | 157 | } |
| 258 | 158 | |
| 259 | 159 | // Report a notice |
| @@ -271,9 +171,9 @@ | ||
| 271 | 171 | }else{ |
| 272 | 172 | $notice_class = 'updated'; |
| 273 | 173 | } |
| 274 | 174 | |
| 275 | - $notice_string = '<b>Please check the below notice(s) :</b> <br />'; | |
| 175 | + $notice_string = '<b>'.__('Please check the below notice(s)', 'loginizer').' :</b> <br />'; | |
| 276 | 176 | |
| 277 | 177 | foreach($notice as $ek => $ev){ |
| 278 | 178 | $notice_string .= '* '.$ev.'<br />'; |
| 279 | 179 | } |
| @@ -278,9 +178,9 @@ | ||
| 278 | 178 | $notice_string .= '* '.$ev.'<br />'; |
| 279 | 179 | } |
| 280 | 180 | |
| 281 | 181 | echo '<div id="message" class="'.$notice_class.'"><p>' |
| 282 | - . __($notice_string, 'loginizer') | |
| 182 | + . $notice_string | |
| 283 | 183 | . '</p></div>'; |
| 284 | 184 | } |
| 285 | 185 | |
| 286 | 186 | // Convert an objext to array |
| @@ -557,14 +457,21 @@ | ||
| 557 | 457 | ]; |
| 558 | 458 | |
| 559 | 459 | $social_buttons = '<div id="lz-social-login-btns" class="'.($style == 'icon' ? 'lz-social-login-btns-icon' : 'lz-social-login-btns-full').' '.($position == 'above' || $position == 'below' ? 'lz-social-'.$padding[$position].'-padding' : '').'" style="justify-self:'.esc_attr($container_alignment).'; justify-content:'.esc_attr($button_alignment).';">'; |
| 560 | 460 | |
| 461 | + /* translators: %s: This OR is used as a separator for Either login through username OR use social login */ | |
| 462 | + $or_translated = __('OR', 'loginizer'); | |
| 463 | + | |
| 561 | 464 | // HTML of the divider in case the buttons are below the login fields |
| 562 | 465 | if(!empty($divider_pos) && $divider_pos == 'above'){ |
| 563 | - $social_buttons .= '<div class="loginizer-social-divider">OR</div><br>'; | |
| 466 | + $social_buttons .= '<div class="loginizer-social-divider">'.esc_html($or_translated).'</div><br>'; | |
| 564 | 467 | } |
| 565 | 468 | |
| 566 | 469 | include_once LOGINIZER_DIR . '/main/login-providers.php'; |
| 470 | + | |
| 471 | + // This is used to decide weather we will use Login with or Register with | |
| 472 | + $current_hook = current_action(); | |
| 473 | + $register_hooks = ['register_form', 'woocommerce_register_form']; | |
| 567 | 474 | |
| 568 | 475 | foreach($providers as $provider => $settings){ |
| 569 | 476 | if(empty($settings['enabled']) || empty($settings['tested'])){ |
| 570 | 477 | continue; |
| @@ -596,12 +503,20 @@ | ||
| 596 | 503 | $social_buttons .= '<div class="loginizer-social-button '.($style == 'icon' ? 'lz-social-button-icon' : 'lz-social-button-btn').' '.($shape == 'circle' ? 'lz-social-button-icon-circle' : 'lz-social-button-icon-square').'" onclick="loginizer_auth_popup(\''.esc_js($provider).'\', '.esc_js(!empty($settings['loginizer_social_key']) ? true : 0).')" style="'.((!empty($loginizer_login_providers[$provider]['styles']) && !empty($loginizer_login_providers[$provider]['styles'][$btn_style])) ? esc_attr($loginizer_login_providers[$provider]['styles'][$btn_style]) : esc_attr('background-color:'. esc_attr($color)). '; color:#FFF;') .'"> |
| 597 | 504 | <div class="loginizer-social-btn-logo"> |
| 598 | 505 | <img src="'.esc_url($img_url).'" height="24" alt="'.esc_attr($name).' Icon"/> |
| 599 | 506 | </div>'; |
| 507 | + | |
| 508 | + if(in_array($current_hook, $register_hooks)){ | |
| 509 | + /* translators: %s: This is for social login so the complete text would be Register With [Brand Name], eg Register With Google */ | |
| 510 | + $button_text = esc_html__('Register With', 'loginizer'); | |
| 511 | + } else { | |
| 512 | + /* translators: %s: This is for social login so the complete text would be Login With [Brand Name], eg Login With Google */ | |
| 513 | + $button_text = esc_html__('Login With', 'loginizer'); | |
| 514 | + } | |
| 600 | 515 | |
| 601 | 516 | // Button text in case of full button |
| 602 | 517 | if(!empty($loginizer['social_settings']) && $style === 'full'){ |
| 603 | - $social_buttons .= '<div class="loginizer-social-btn-text">'.esc_html__('Login With', 'loginizer').' <strong>'.esc_html($name).'</strong> | |
| 518 | + $social_buttons .= '<div class="loginizer-social-btn-text">'.esc_html($button_text).' <strong>'.esc_html($name).'</strong> | |
| 604 | 519 | </div>'; |
| 605 | 520 | } |
| 606 | 521 | |
| 607 | 522 | $social_buttons .= '</div>'; |
| @@ -612,9 +527,9 @@ | ||
| 612 | 527 | } |
| 613 | 528 | |
| 614 | 529 | // HTML of the divider in case the buttons are above the login fields |
| 615 | 530 | if(!empty($divider_pos) && $divider_pos == 'below'){ |
| 616 | - $social_buttons .= '<br><div class="loginizer-social-divider">OR</div>'; | |
| 531 | + $social_buttons .= '<br><div class="loginizer-social-divider">'.esc_html($or_translated).'</div>'; | |
| 617 | 532 | } |
| 618 | 533 | |
| 619 | 534 | $social_buttons .= '</div>'; |
| 620 | 535 | loginizer_add_social_js($page_type); |
| @@ -690,9 +605,15 @@ | ||
| 690 | 605 | if(isAPI){ |
| 691 | 606 | target_url += "&lz_api=1"; |
| 692 | 607 | } |
| 693 | 608 | |
| 694 | - target_url += "&ref='.esc_url($_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']).'" | |
| 609 | + let redirect_to = "'.(!empty($_GET['redirect_to']) ? wp_validate_redirect(esc_url($_GET['redirect_to'])) : '') .'"; | |
| 610 | + | |
| 611 | + if(redirect_to.length){ | |
| 612 | + target_url += "&ref="+redirect_to; | |
| 613 | + } else { | |
| 614 | + target_url += "&ref='.esc_url((is_ssl() ? 'https://' : 'http://').$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']).'" | |
| 615 | + } | |
| 695 | 616 | |
| 696 | 617 | if(lz_target_window == "same"){ |
| 697 | 618 | jQuery("#loginizer-social-loader-wrap").css("display", "flex"); |
| 698 | 619 | |
| @@ -734,9 +655,11 @@ | ||
| 734 | 655 | |
| 735 | 656 | } |
| 736 | 657 | |
| 737 | 658 | function loginizer_social_btn_login($return = false, $id = ''){ |
| 738 | - loginizer_social_btn($return, 'login'); | |
| 659 | + if(!loginizer_is_blacklisted()){ | |
| 660 | + loginizer_social_btn($return, 'login'); | |
| 661 | + } | |
| 739 | 662 | } |
| 740 | 663 | |
| 741 | 664 | function loginizer_get_social_error(){ |
| 742 | 665 | global $loginizer; |
| @@ -763,5 +686,5 @@ | ||
| 763 | 686 | |
| 764 | 687 | // Cleaning the error data |
| 765 | 688 | delete_site_transient($error_identifier); // Deleting the data |
| 766 | 689 | //setcookie('lz_social_error', '', time() - 300, COOKIEPATH, COOKIE_DOMAIN, is_ssl(), true); // have to delete |
| 767 | -} | |
| 690 | +} | |