Refactored SubscriberInterface

This commit is contained in:
2024-03-14 00:45:26 +01:00
parent 17c683d9e8
commit e61d0abb5d
5 changed files with 41 additions and 28 deletions

View File

@ -25,7 +25,7 @@ class SseSubscriber implements SubscriberInterface
$this->stream->write($message->toString());
}
public function isAuthorized(): bool
public function isAuthenticated(): bool
{
return $this->request->getAttribute('authorized');
}

View File

@ -6,11 +6,32 @@ use NoccyLabs\Mercureact\Broker\Message;
interface SubscriberInterface
{
/**
* Deliver a message to the subscriber.
*
* @param Message $message
* @return void
*/
public function deliver(Message $message): void;
public function isAuthorized(): bool;
/**
* Returns true if the subscriber has athenticated.
*
* @return bool true if the subscriber has provided valid credentials
*/
public function isAuthenticated(): bool;
/**
* Returns the content of the JWT mercure.payload claim if present.
*
* @return array|null
*/
public function getPayload(): ?array;
/**
* Get the unique subscriber ID, in the form 'urn:uuid:...'
*
* @return string
*/
public function getId(): string;
}

View File

@ -68,7 +68,7 @@ class WsSubscriber implements SubscriberInterface, EventEmitterInterface
], JSON_UNESCAPED_SLASHES));
}
public function isAuthorized(): bool
public function isAuthenticated(): bool
{
return $this->token && $this->token->isValid();
}

View File

@ -39,7 +39,7 @@ class Topic
foreach ($this->subscribers as $subscriber) {
// Skip sending private messages to unauthorized subscribers
if ($message->private && !$subscriber->isAuthorized()) {
if ($message->private && !$subscriber->isAuthenticated()) {
continue;
}
// Deliver to the subscriber