新闻记录后台访问权限

Backend access rights for news records

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

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

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

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

有两种归档方式:

  1. 如果后台用户不是太多。您可以只创建一个页面(类型 是文件夹)以后端用户名命名。并在后端用户中 模块你可以设置权限(不是针对组用户,而是针对 仅限单个后端用户)。
  2. 如果后端用户太多。并且您只想为该组设置权限,所有后端用户都共享相同的规则。可以参考Hook:https://docs.typo3.org/p/georgringer/news/main/en-us/Tutorials/ExtendNews/Hooks/Index.html 这样基本的逻辑是这样的: 2.1 获取当前 logged-in 用户组。 2.2 如果群组是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 (3,100 是 be_user id。并且会显示 2 两个后端用户的消息)

因此,它对我有用。