File: //wordpress/plugins/wp-cloud-client/1.1.9/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,
];
}
}