| | |
| | | $this->cache = Cache::for('login'); |
| | | $this->cache->flush(); |
| | | // Initialize magic link support if enabled |
| | | if (Site::has('magicLink')) { |
| | | if (Site::has('magic_link')) { |
| | | $this->initMagicLinkSupport(); |
| | | } |
| | | |
| | |
| | | add_filter( 'logout_url', [$this, 'logoutUrl'], 10, 2 ); |
| | | // Allow other features to register handlers |
| | | do_action('jvbLoginManagerInit', $this); |
| | | add_action('user_register', array($this, 'saveRegistrationFields'), 999, 2); |
| | | add_action('user_register', [$this, 'saveRegistrationFields'], 50, 2); |
| | | add_filter('the_seo_framework_sitemap_exclude_ids', [$this, 'excludeLoginSitemap'], 8, 1); |
| | | } |
| | | public static function getInstance():self |
| | |
| | | 'hint' => 'Have a referral code? Paste it here!' |
| | | ]; |
| | | } |
| | | $canRegister = Registrar::getFeatured('can_register', 'user'); |
| | | $canRegister = Registrar::withFeature('can_register', 'user'); |
| | | if (!empty($canRegister)) { |
| | | foreach ($canRegister as $role) { |
| | | $registrar = Registrar::getInstance($role); |
| | |
| | | 'subtype' => 'password', |
| | | 'label' => __('New Password', 'jvb'), |
| | | 'required' => true, |
| | | 'autocomplete'=> 'new-password' |
| | | ], |
| | | 'pass2' => [ |
| | | 'type' => 'text', |
| | | 'subtype' => 'password', |
| | | 'label' => __('Confirm Password', 'jvb'), |
| | | 'required' => true, |
| | | 'autocomplete'=> 'new-password' |
| | | ], |
| | | ]; |
| | | break; |
| | |
| | | |
| | | protected function initMagicLinkSupport(): void |
| | | { |
| | | if (!Site::has('magicLink')) { |
| | | if (!Site::has('magic_link')) { |
| | | return; |
| | | } |
| | | } |
| | |
| | | protected function customStyles():void |
| | | { |
| | | $logo = get_theme_mod('custom_logo'); |
| | | $small = $large = ''; |
| | | if ($logo) { |
| | | $small = wp_get_attachment_image_src($logo, 'medium')[0]??''; |
| | | $large = wp_get_attachment_image_src($logo, 'large')[0]??''; |
| | |
| | | $redirect = !empty($redirect) ? $redirect : esc_attr($_GET['redirect_to'] ?? ''); |
| | | |
| | | return sprintf( |
| | | '<form name="%sform" method="post" data-action="jvb_%s"> |
| | | '<form name="%sform" method="post" data-action="jvb_%s" data-save="auth/login"> |
| | | %s%s%s |
| | | <input type="hidden" name="action" value="jvb_%s"> |
| | | <input type="hidden" name="redirect_to" value="%s"> |
| | |
| | | $additionalInputs, |
| | | $fields, |
| | | $turnstile, |
| | | $this->labels['submit'], |
| | | $this->labels['submit']??$this->determineSubmit($action), |
| | | $magicLink |
| | | ); |
| | | } |
| | | protected function determineSubmit(string $action):string |
| | | { |
| | | return match($action) { |
| | | 'rp','resetpass' => 'Reset Password', |
| | | 'register' => 'Register', |
| | | 'lostpassword' => 'Send me a reset link', |
| | | default => 'Login', |
| | | }; |
| | | } |
| | | protected function renderHeader():void |
| | | { |
| | | ?> |
| | |
| | | |
| | | $this->maybeTurnstileScripts(); |
| | | wp_enqueue_script('jvb-form'); |
| | | wp_enqueue_script('jvb-login'); |
| | | $action = $this->getAction(); |
| | | |
| | | $redirect_to = isset($_GET['redirect_to']) ? esc_url_raw($_GET['redirect_to']) : ''; |