【问题标题】:SilverStripe add custom security GroupSilverStripe 添加自定义安全组
【发布时间】:2018-04-20 14:47:24
【问题描述】:

this guideofficial doc 之后的SS 4.0.3 上,我成功创建了自定义权限角色。

现在我将创建一个自定义组并将默认管理员添加到其中,作为默认执行的操作,以便在删除数据库时维护这些用户/组/角色设置。我用谷歌搜索了很多次,但没有找到任何详细的教程来实现这一点(使用Group 类,实现此逻辑的正确位置等等)。

谁能给我指路?

提前致谢。

【问题讨论】:

    标签: php silverstripe silverstripe-4


    【解决方案1】:

    如果要强制执行数据结构,可以使用DataObject::requireDefaultRecords。有关此示例,请参阅 Group::requireDefaultRecords,它每次都在 dev/build 上运行。

    您需要在创建之前检查您正在创建的数据是否存在,以确保您不会每次都创建该组。

    【讨论】:

    • 谢谢@robbie,就是这样。
    【解决方案2】:

    感谢@robbie 和其他资源,我成功地设置了我的问题中描述的全景图,以实现我的目标(我将在下面列出它们)。我想分享我对那些将来可能面临这种逻辑的方法。

    首先,我在PageController 中使用providePermissions() 创建了一个全新的标准/全局权限(参见balbuss.com 来源)。

    接下来,正如@robbie 建议的那样,我创建了一个Group DataExtension 以建立一个新组并设置我之前创建的权限(请参阅@Barry 的解决方案源)。

    要将默认管理员添加到该组,我必须创建一个新的PermissionDataExtension,在其中我将组分配给适当的成员(请参阅@StefGuev 建议来源):

    // Definizione Namespace
    use SilverStripe\ORM\DataExtension;
    use SilverStripe\Security\DefaultAdminService;
    use SilverStripe\Security\Member;
    use SilverStripe\Security\Group;
    
    class PermessoExtension extends DataExtension
    {
        /**
         * Metodo gestione inizializzazione records di default
         * Setter
         * @return void
         */
        public function requireDefaultRecords()
        {
            parent::requireDefaultRecords();
    
            $userAdmin = DefaultAdminService::getDefaultAdminUsername();
            $admin = Member::get()->filter('Email', $userAdmin)->first();
            $gruppo = Group::get()->filter('Code', 'negozianti')->first();
    
            // Controllo gruppo
            if (!$admin->inGroup($gruppo->ID)) {
                $admin->Groups()->add($gruppo);
                $admin->write();
            }
        }
    }
    

    我之所以做出这个选择是因为在dev/buildPermission 正在构建之后 Member 表期间,所以我可以获得默认管理员而不会出错。

    特别感谢以下来源:

    balbuss.com

    Bereusei's solution

    Barry's solution

    StefGuev suggestion

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多