src/Security/Voter/Message/PinVoter.php line 11

Open in your IDE?
  1. <?php
  2. namespace App\Security\Voter\Message;
  3. use App\Entity\Account\User;
  4. use App\Entity\ChannelUserData\ChannelUserData;
  5. use App\Entity\Chat\Message;
  6. use App\Service\Account\UserService;
  7. use App\Service\Chat\ConversationService;
  8. class PinVoter extends AbstractMessageVoter
  9. {
  10.     public function __construct(
  11.         UserService $userService,
  12.         private ConversationService $conversationService,
  13.     ) {
  14.         parent::__construct($userService);
  15.     }
  16.     protected function supportedAttribute(): string
  17.     {
  18.         return 'NIM_PIN';
  19.     }
  20.     /**
  21.      * @param User $user
  22.      * @param Message $message
  23.      * @param ChannelUserData $channelUserData
  24.      * @return int
  25.      */
  26.     protected function grant(User $user$messageChannelUserData $channelUserData): int
  27.     {
  28.         $conversation $message->getConversation();
  29.         if (
  30.             $this->userService->isAdminForConversation($user$conversation)
  31.             && $message->getMessageParent() === null
  32.             && $this->conversationService->isPublicCanal($conversation)
  33.         ) {
  34.             return self::ACCESS_GRANTED;
  35.         }
  36.         return self::ACCESS_DENIED;
  37.     }
  38. }