<?php
/**
 * @package Hafenstudios\Kurato
 */

namespace Hafenstudios\Kurato\Cockpit;

defined( 'ABSPATH' ) || exit;

/**
 * Produktions-Nutzerpruefung (Vertrag Schritt 5). Gueltig ist ein Nutzer, der
 * existiert, aktiv ist und Rolle kurato_agent hat ODER Inhaber ist
 * (Inhaber-Konten duerfen die App ebenfalls nutzen).
 *
 * "Deaktiviert" pruefen wir ueber die Nutzer-Meta `kurato_cockpit_disabled`
 * (agents/sync setzt sie beim Sperren) und ein leeres/gesperrtes Konto.
 */
class WpUserDirectory implements UserDirectory {

	/**
	 * @param int $wp_user_id WP-Nutzer-ID aus dem Ticket.
	 * @return bool
	 */
	public function is_valid_agent( int $wp_user_id ): bool {
		if ( $wp_user_id <= 0 ) {
			return false;
		}

		$user = get_userdata( $wp_user_id );
		if ( ! $user ) {
			return false;
		}

		// Deaktivierte Schattennutzer (agents/sync-Sperre) scheitern sofort.
		if ( '1' === (string) get_user_meta( $wp_user_id, 'kurato_cockpit_disabled', true ) ) {
			return false;
		}

		$roles = (array) ( $user->roles ?? array() );
		if ( in_array( CockpitRole::ROLE, $roles, true ) ) {
			return true;
		}

		// Inhaber (darf Site-Einstellungen verwalten) darf die App auch nutzen.
		return user_can( $user, 'hs_manage_settings' );
	}
}
