Jake Vanderwerf
2026-05-11 ac444cba221832c012c0435fdc8339fe9f37febb
inc/managers/LoginManager.php
@@ -5,7 +5,7 @@
use JVBase\forms\TaxonomySelector;
use JVBase\meta\Form;
use WP_Error;
use JVBase\registrar\Registrar;use WP_Error;
use WP_User;
if (!defined('ABSPATH')) {
@@ -38,7 +38,7 @@
   public function __construct()
   {
      $this->cache = Cache::for('login');
      $this->cache->flush();
      // Initialize magic link support if enabled
      if (Site::has('magicLink')) {
         $this->initMagicLinkSupport();
@@ -133,19 +133,19 @@
               '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;
@@ -289,7 +289,7 @@
         }
      }
   }
   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' );
@@ -354,6 +354,11 @@
      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(),
@@ -470,8 +475,8 @@
         .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;
         }
@@ -501,7 +506,8 @@
            .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;
@@ -622,7 +628,7 @@
            <?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']).
@@ -898,13 +904,13 @@
                           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 => {