【问题标题】:October CMS Static Pages plugin - hide / show pages in the backend based on user roles?十月 CMS 静态页面插件 - 根据用户角色在后端隐藏/显示页面?
【发布时间】:2018-05-19 19:41:21
【问题描述】:

如何根据用户的角色隐藏一些静态页面?

我定义了名为“blabla”的用户角色。 现在我想隐藏这些用户的所有页面,除了“静态页面”后端中的页面“blabla”。 我该怎么做?

对不起我的英语))

【问题讨论】:

    标签: laravel octobercms octobercms-plugins static-pages


    【解决方案1】:

    当然可以,但是我们需要在这里写一些代码。

    我们可以利用cms.object.listInTheme事件

    在引导方法中的插件中,您可以添加此事件侦听器并过滤静态页面。

    \Event::listen('cms.object.listInTheme', function ($cmsObject, $objectList) {
    
        // lets check if we are really running in static pages
        // you can also add more checks here based on controllers etc ..
        if ($cmsObject instanceof \RainLab\Pages\Classes\Page) {
    
            $user = \BackendAuth::getUser();
            // role code and role name are different things
            // we should use role code as it act as constant
            $hasRoleFromWhichIneedTohidePages = $user->role->code === 'blabla' ? true : false;
    
            // if user has that role then we start filtering
            if($hasRoleFromWhichIneedTohidePages) {
                foreach ($objectList as $index => $page) {
    
                    // we can use different matching you can use one of them
                    // to identify your page which you want to hide. 
                    // forgot method will hide that page
    
                    // match against filename 
                    if ($page->fileName == 'hidethispage.htm') {
                        $objectList->forget($index);
                    }
    
                    // OR match against title
                    if ($page->title == 'hidethispage') {
                        $objectList->forget($index);
                    }
    
                    // OR match against url
                    if ($page->url == '/hidethispage') {
                        $objectList->forget($index);
                    }
                 }
             }
        }
    });
    

    目前此代码将检查 page-url / title / file-name 并静态限制用户在列表中显示页面,但您可以将自己的逻辑放在这里并使事情动态化。

    如果您没有得到它或想要动态解决方案,请发表评论,我会更详细地解释。

    【讨论】:

    • 谢谢。如何找到当前用户角色的代码并检查权限?如果名称为“经理”的权限被“选中”,则开始过滤......需要使事情动态化。这应该适用于选中“经理”权限复选框的所有角色。我将非常感谢您的详细回答:)
    • 我可以为此开发一个小插件,因为它的坏主意是根据许可附加一些页面来显示。相反,我认为制作可以获取用户组并为其分配页面的插件,然后我们可以将该用户组分配给用户,然后只能访问分配的页面。
    • 任何如何显示子页面以及我们无法显示其父页面已从列表中删除的页面,而是当用户单击受限页面时我们可以显示消息 ->“您无权访问此页面页面”(这将失败:它将显示“所有页面”,当用户点击页面进行编辑时,用户可以识别我无权访问它)
    • 是的,也许使用组。我的项目:角色和权限或用户组: - 公司在不同城市有许多分支机构。 - 经理应该只能编辑他们的分支。 - 董事应有权编辑所有分支并创建新分支。他们究竟将编辑什么: - 为每个分支机构发布独特的广告信息。每个广告都必须有自己的页面,以便阅读更多内容。 - 编辑每个分支页面的相册。 - 编辑分支页面上的一些文本。分支页面的子页面也是需要的。
    • 我不知道如何在 10 月 CMS 中进行操作。我尝试在 Wordpress 上执行此操作))结果证明,一切正常,但并不完美。我想在 10 月份做这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2022-11-15
    • 1970-01-01
    相关资源
    最近更新 更多