<?php
class Kwc_Mail_Editable_ComponentsModel extends Kwf_Model_Data_Abstract
{
    public function __construct(array $config = array())
    {
        $data = array();
        $components = Kwf_Component_Data_Root::getInstance()
            ->getComponentsByClass(array('Kwc_Mail_Editable_Component', 'Kwc_Mail_Editable_Trl_Component'));
        $user = Kwf_Registry::get('userModel')->getAuthedUser();
        foreach ($components as $c) {
            if (Kwf_Registry::get('acl')->getComponentAcl()->isAllowed($user, $c)) {
                $a = Kwc_Admin::getInstance($c->componentClass);
                $data[] = array(
                    'id' => $c->dbId,
                    'name' => Kwf_Trl::getInstance()->trlStaticExecute($c->getComponent()->getNameForEdit()),
                    'settings_controller_url' => $a->getControllerUrl(),
                    'content_component_class' => $c->getChildComponent('-content')->componentClass,
                );
            }
        }
        $this->_data = $data;
        parent::__construct($config);
    }

}

<?php
class Kwc_Mail_Editable_ComponentsModel extends Kwf_Model_Data_Abstract
{
    public function __construct(array $config = array())
    {
        $data = array();
        $components = Kwf_Component_Data_Root::getInstance()
            ->getComponentsByClass(array('Kwc_Mail_Editable_Component', 'Kwc_Mail_Editable_Trl_Component'));
        foreach ($components as $c) {
            $a = Kwc_Admin::getInstance($c->componentClass);
            $data[] = array(
                'id' => $c->dbId,
                'name' => Kwf_Trl::getInstance()->trlStaticExecute($c->getComponent()->getNameForEdit()),
                'settings_controller_url' => $a->getControllerUrl(),
                'content_component_class' => $c->getChildComponent('-content')->componentClass,
            );
        }
        $this->_data = $data;
        parent::__construct($config);
    }

}

--- 
+++ 
@@ -6,14 +6,17 @@
         $data = array();
         $components = Kwf_Component_Data_Root::getInstance()
             ->getComponentsByClass(array('Kwc_Mail_Editable_Component', 'Kwc_Mail_Editable_Trl_Component'));
+        $user = Kwf_Registry::get('userModel')->getAuthedUser();
         foreach ($components as $c) {
-            $a = Kwc_Admin::getInstance($c->componentClass);
-            $data[] = array(
-                'id' => $c->dbId,
-                'name' => Kwf_Trl::getInstance()->trlStaticExecute($c->getComponent()->getNameForEdit()),
-                'settings_controller_url' => $a->getControllerUrl(),
-                'content_component_class' => $c->getChildComponent('-content')->componentClass,
-            );
+            if (Kwf_Registry::get('acl')->getComponentAcl()->isAllowed($user, $c)) {
+                $a = Kwc_Admin::getInstance($c->componentClass);
+                $data[] = array(
+                    'id' => $c->dbId,
+                    'name' => Kwf_Trl::getInstance()->trlStaticExecute($c->getComponent()->getNameForEdit()),
+                    'settings_controller_url' => $a->getControllerUrl(),
+                    'content_component_class' => $c->getChildComponent('-content')->componentClass,
+                );
+            }
         }
         $this->_data = $data;
         parent::__construct($config);
Add filter for mail-editable to show only allowed components

The listing of kwc_mail_components is done this way and not with menuconfig sameclass
because we would get a menu-button for every kwc_mail_component in a web.
