【问题标题】:Backend access rights for news records新闻记录的后端访问权限
【发布时间】:2019-07-08 09:03:08
【问题描述】:

是否可以在同一存储页面上存储新闻扩展 (ext:news) 的所有记录,但只显示由登录的后端用户创建的记录?

所以当前后端用户只能查看和编辑他自己的记录?管理员当然应该查看所有记录。

【问题讨论】:

    标签: typo3 tx-news


    【解决方案1】:

    不,这是不可能的,因为 TYPO3 中没有实现记录级别的后端用户权限。

    因此,您要么必须将用户的新闻记录分隔在单独的 sysfolders 中,要么可以尝试使用挂钩(例如 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/class.db_list_extra.inc']['getTable'])或 XClass 来自定义 TYPO3 后端以满足您的需求。我不推荐后者,因为 TYPO3 后端权限系统很复杂,您需要确保在 TYPO3 的几个部分(例如记录列表、元素浏览器、相关新闻字段......)中限制记录访问。

    【讨论】:

    • 谢谢,效果很好!找到一个工作示例here
    【解决方案2】:

    有两种存档方式:

    1. 如果后端用户不是太多。你可以只创建一个页面(类型 是文件夹)以后端用户名命名。而在后端用户 模块,您可以设置权限(不是针对组用户,而是针对 仅限单个后端用户)。
    2. 如果后端用户太多。并且您只想为组设置权限,并且所有后端用户都共享相同的规则。可以参考Hook:https://docs.typo3.org/p/georgringer/news/main/en-us/Tutorials/ExtendNews/Hooks/Index.html,这样基本逻辑是这样的: 2.1 获取当前登录用户组。 2.2 如果group是Reporter,我们可以使用listing页面的hook:
      $constraints[] = $query->equals('cruser_id', $be_id);
      

    编辑(2022 年 3 月 3 日):

    嗨,克里斯,是的,你是对的。 今天,我有机会深入研究新闻扩展。我认为我们仍然可以成功

    1. 在您的 ext_localconf.php 中
    $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][\TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList::class]['modifyQuery'][$_EXTKEY]
     = \T3docs\SitePackage\Hooks\DatabaseRecordListHook::class;
    

    (请确保命名空间正确)

    1. 在文件中:T3docs\SitePackage\Hooks\DatabaseRecordListHook。创建一个名为 modifyQuery 的函数:
    
    public function modifyQuery($parameters,
                                 $table,
                                 $pageId,
                                 $additionalConstraints,
                                 $fields,
                                 $queryBuilder)
     {
         if ($table === 'tx_news_domain_model_news') {
             $tsconfig = $GLOBALS['BE_USER']->getTSConfig();
             if (!empty($tsconfig['options.']['be_users'])) {
                 $be_users = $tsconfig['options.']['be_users'];
                 $queryBuilder->andWhere('cruser_id IN (' . $be_users . ')');
             }
         }
         return $queryBuilder;
     }
    
    
    1. 在用户选项选项卡中设置 Tsconfg:options.be_users = 3,100 (3100是be_user id,2个后台用户的消息会出现)

    因此,它对我有用。

    【讨论】:

    • 我认为第二种解决方案适用于前端列表,但不适用于 TYPO3 后端。
    猜你喜欢
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    相关资源
    最近更新 更多