protected function voteOnAttribute($attribute, $subject, TokenInterface $token)
    {
        if ($this->isSuperAdmin($token)) {
            return true;
        }

        if (ContributionActionInterface::READ == $attribute) {
            return true;
        }

        $actionMapping = array(
            ContributionActionInterface::TRASH_RESTORE => ContributionRoleInterface::TRASH_RESTORER,
            ContributionActionInterface::TRASH_PURGE   => ContributionRoleInterface::TRASH_SUPRESSOR
        );

        return $this->hasRole($token, $actionMapping[$attribute]);
    }