0

在 SS 4.0.3 上遵循本指南官方文档,我成功创建了自定义权限角色。

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

谁能给我指路?

提前致谢。

4

2 回答 2

1

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

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

于 2018-04-22T22:07:03.647 回答
0

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

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

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

要将默认管理员添加到该组,我必须创建一个新管理员,Permission DataExtension在其中将该组分配给适当的成员(请参阅@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的解决方案

巴里的解决方案

StefGuev 建议

于 2018-04-24T14:49:05.187 回答