| | |
| | | <?php |
| | | namespace JVBase\rest\routes; |
| | | |
| | | use JVBase\managers\Cache; |
| | | use JVBase\registrar\Registrar; |
| | | use JVBase\rest\Rest; |
| | | use JVBase\rest\Route; |
| | |
| | | } |
| | | |
| | | // 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(); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | } |
| | | |
| | | 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 = [ |