HEX
Server: nginx
System: Linux pool195-106-36.bur.atomicsites.net 6.12.57+deb12-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.57-1~bpo12+1 (2025-11-17) x86_64
User: (0)
PHP: 8.3.32
Disabled: pcntl_fork
Upload Files
File: /wordpress/plugins/wp-cloud-client/1.1.2/src/Handler/LogoutHandler.php
<?php

declare(strict_types=1);

namespace VPlugins\WPCloudClient\Handler;

final class LogoutHandler extends AbstractHandler {

	/**
	 * Return the action name.
	 *
	 * @return string Action name.
	 */
	public function action(): string {
		return 'logout';
	}

	/**
	 * Destroy user sessions to log them out.
	 *
	 * @param array<string, mixed> $params Action parameters.
	 * @return array<string, mixed> Logout result.
	 *
	 * @throws \InvalidArgumentException If user is not found.
	 */
	public function execute( array $params ): array {
		$this->requireParams( $params, 'user_id' );

		$userId = (int) $params['user_id'];
		$user   = get_userdata( $userId );

		if ( ! $user ) {
			throw new \InvalidArgumentException(
				sprintf( 'User not found: %d', $userId ),
			);
		}

		$manager = \WP_Session_Tokens::get_instance( $userId );

		if ( ! empty( $params['session_token'] ) ) {
			$manager->destroy( (string) $params['session_token'] );
		} else {
			$manager->destroy_all();
		}

		return [
			'logged_out' => true,
			'user_id'    => $userId,
		];
	}
}