Jake Vanderwerf
5 days ago a9b3b28d001941921aa70d37fdc87c758a163a44
inc/rest/routes/LoginRoutes.php
@@ -1,6 +1,7 @@
<?php
namespace JVBase\rest\routes;
use JVBase\managers\Cache;
use JVBase\registrar\Registrar;
use JVBase\rest\Rest;
use JVBase\rest\Route;
@@ -631,17 +632,17 @@
      }
      // Check if role is valid and can register
      $role_config = JVB_USER[$user_select] ?? null;
      $registrar = Registrar::getInstance($user_select);
      if (!$role_config) {
      if (!$registrar) {
         return new WP_Error('invalid_role', 'Invalid role selected.');
      }
      if (!($role_config['can_register'] ?? false)) {
      if (!($registrar->hasFeature('can_register') ?? false)) {
         return new WP_Error('role_not_allowed', 'This role cannot be selected during registration.');
      }
      return BASE . $user_select;
      return $registrar->getBased();
   }
   /**
@@ -711,24 +712,30 @@
      }
   }
   public static function auth():array
   {
      return (new self)->buildAuth();
   }
   protected function buildAuth(?int $user = null): array
   {
      if (is_user_logged_in()) {
         $user = ($user) ?: get_current_user_id();
         return [
            'authenticated' => true,
            'user' => $user,
            'nonces' => $this->getUserNonces($user)
         ];
      }
      $userId = $user ?? (is_user_logged_in() ? get_current_user_id() : 0);
      $cacheKey = $userId ?: 'guest';
      return [
         'authenticated' => false,
         'user' => false,
         'nonces' => [
            'wp_rest' => wp_create_nonce('wp_rest')
         ]
      ];
      return Cache::for('auth', 300)->remember($cacheKey, function() use ($userId) {
         if ($userId) {
            return [
               'authenticated' => true,
               'user'          => $userId,
               'nonces'        => $this->getUserNonces($userId),
            ];
         }
         return [
            'authenticated' => false,
            'user'          => false,
            'nonces'        => ['wp_rest' => wp_create_nonce('wp_rest')],
         ];
      });
   }
   protected function getUserNonces(int $userID):array {
      $nonces = [