---
title: "PollPermission"
manual: "t3oodle"
version: "main"
permalink: "https://docs.typo3.org/permalink/fgtclb/t3oodle:pollpermission@main"
source: "DevNotes/PollPermission.rst"
rendered: "2026-10-08T14:49:08+00:00"
---

# PollPermission {#pollpermission}

t3oodle has got a central class controlling poll permission logic.

**Existing permissions are:**

-   `isViewingInGeneralAllowed($poll)`
-   `isViewingAllowed($poll)`
-   `isShowAllowed($poll)`
-   `isNewAllowed()`
-   `isNewSimplePollAllowed()`
-   `isNewSchedulePollAllowed()`
-   `isEditAllowed($poll)`
-   `isDeleteAllowed($poll)`
-   `isPublishAllowed($poll)`
-   `isFinishAllowed($poll)`
-   `isFinishSuggestionModeAllowed($poll)`
-   `isSuggestNewOptionsAllowed($poll)`
-   `isVotingAllowed($poll)`
-   `isSeeParticipantsDuringVotingAllowed($poll)`
-   `isSeeVotesDuringVotingAllowed($poll)`
-   `isAdministrationAllowed($poll)`
-   `isResetVotesAllowed($poll)`
-   `isDeleteOwnVoteAllowed($vote)` **!!!**

They are used in controller actions, as well as in Fluid templates.

## Permission ViewHelper {#permission-viewhelper}

```php
<f:if condition="{t3oodle:permission(action:'newSimplePoll')}">
    // show new button
</f:if>

```

The action is passed without trailing **is** and **Allowed**.

When a permission requires poll or vote argument, you can call it like this:

```php
<f:if condition="{poll -> t3oodle:permission(action:'delete')}">
    // show delete button, for this poll
</f:if>

```

## Modifying permissions {#modifying-permissions}

Every permission can get changed programmatically, by using [Signal/Slots](https://docs.typo3.org/permalink/fgtclb/t3oodle:signalslots@main).

First register your slot in `ext_localconf.php`:

```php
/** @var \TYPO3\CMS\Extbase\SignalSlot\Dispatcher $signalSlotDispatcher */
$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class);
$signalSlotDispatcher->connect(
    \FGTCLB\T3oodle\Domain\Permission\PollPermission::class,
    'isNewSimplePollAllowed',
    \Vendor\MyExt\Slots\PollPermissionSlots::class,
    'isNewSimplePollAllowed'
);

```

The `PollPermissionSlots` class looks like this:

```php
final class PollPermissionSlots
{
    public function isNewSimplePollAllowed(bool $currentStatus, array $arguments, PollPermission $caller): array
    {
        $newStatus = false; // TODO: implement me
        return [
            'currentStatus' => $newStatus,
            'arguments' => $arguments,
            'caller' => $caller,
        ];
    }
}
```
