| | |
| | | use JVBase\forms\TaxonomySelector; |
| | | use JVBase\meta\Form; |
| | | |
| | | use WP_Error; |
| | | use JVBase\registrar\Registrar;use WP_Error; |
| | | use WP_User; |
| | | |
| | | if (!defined('ABSPATH')) { |
| | |
| | | public function __construct() |
| | | { |
| | | $this->cache = Cache::for('login'); |
| | | |
| | | $this->cache->flush(); |
| | | // Initialize magic link support if enabled |
| | | if (Site::has('magicLink')) { |
| | | $this->initMagicLinkSupport(); |
| | |
| | | 'hint' => 'Have a referral code? Paste it here!' |
| | | ]; |
| | | } |
| | | if (count(JVB_USER) > 1) { |
| | | foreach (JVB_USER as $slug => $config) { |
| | | if (!array_key_exists('can_register', $config) || !$config['can_register']) { |
| | | continue; |
| | | } |
| | | $icon = $config['icon'] ?? ''; |
| | | $canRegister = Registrar::getFeatured('can_register', 'user'); |
| | | if (!empty($canRegister)) { |
| | | foreach ($canRegister as $role) { |
| | | $registrar = Registrar::getInstance($role); |
| | | $config = $registrar->getConfig('register'); |
| | | $icon = $registrar->getIcon('user'); |
| | | $icon = ($icon !== '') ? jvbIcon($icon) : ''; |
| | | $select[$slug] = '<span class="label">'.$icon.$config['label'].'</span><span class="text">'.$config['register']['text']??''.'</span>'; |
| | | if (!empty($config['register']['fields']??[])){ |
| | | foreach ($config['register']['fields'] as $field) { |
| | | $select[$role] = '<span class="label">'.$icon.$registrar->getSingular().'</span><span class="text">'.$config['description']??Site::login()->getDescription('register')??''.'</span>'; |
| | | if (!empty($config['fields'])){ |
| | | foreach ($config['fields'] as $field) { |
| | | $field['condition'] = [ |
| | | 'field' => 'user_select', |
| | | 'value' => $slug, |
| | | 'value' => $role, |
| | | 'operator' => '==' |
| | | ]; |
| | | $fields[] = $field; |
| | |
| | | } |
| | | } |
| | | } |
| | | public function loginUrl(string $login_url, string $redirect, bool $force_reauth):string |
| | | public function loginUrl(string $login_url, ?string $redirect, bool $force_reauth):string |
| | | { |
| | | // This will append /custom-login/ to you main site URL as configured in general settings (ie https://domain.com/custom-login/) |
| | | $login_url = site_url( '/login/', 'login' ); |
| | |
| | | if (!$this->isLoginPage()) { |
| | | return $template; |
| | | } |
| | | global $_GET; |
| | | if (is_user_logged_in() && (!array_key_exists('action', $_GET) || $_GET['action']!=='logout')) { |
| | | wp_redirect(get_home_url(null, '/dash')); |
| | | exit; |
| | | } |
| | | $this->setup(); |
| | | $page = $this->cache->remember( |
| | | $this->getAction(), |
| | |
| | | .login main .login-box { |
| | | --gap: .75rem; |
| | | padding: 1rem; |
| | | background-color:rgba(var(--base-rgb),var(--op-6)); |
| | | border-radius: var(--outerRadius); |
| | | background-color: var(--overlay-heavy); |
| | | box-shadow: var(--shadow-right), var(--shadow-down); |
| | | margin: 15vh auto 0!important; |
| | | } |
| | |
| | | .login main .navigation, |
| | | .login main .login-box { |
| | | max-width: 60vw!important; |
| | | margin: 0 2rem 0 auto!important; |
| | | padding-right: 4rem!important; |
| | | margin: 0 0 0 auto!important; |
| | | } |
| | | .login main .login-box { |
| | | padding: 2rem; |
| | |
| | | <?php |
| | | $checked = (is_user_logged_in() && current_user_can('prefers_dark_theme', true)) ? ' checked' : ''; |
| | | $title = ($checked == '') ? 'Toggle Dark Mode' : 'Toggle Light Mode'; |
| | | echo '<label title="'.$title.'" id="theme-switch" class="toggle-switch" for="theme-switcher"> |
| | | echo '<label title="'.$title.'" id="theme-switch" class="switch" for="theme-switcher"> |
| | | <span class="screen-reader-text">Toggle dark mode</span> |
| | | <input class="theme-switch row" id="theme-switcher" name="theme-switcher" type="checkbox"'.$checked.' data-setting="theme" data-theme name="dark-mode" aria-label="Toggle dark mode"><span class="slider">'. |
| | | jvbIcon('sun-dim', ['title'=> 'Light Mode']). |
| | |
| | | if (result.redirect) { |
| | | setTimeout(() => { |
| | | window.location.href = result.redirect; |
| | | }, 100); |
| | | }, 20); |
| | | } |
| | | }); |
| | | } else if (result.redirect) { |
| | | setTimeout(() => { |
| | | window.location.href = result.redirect; |
| | | }, 100); |
| | | }, 20); |
| | | } |
| | | }) |
| | | .catch(error => { |