将基本角色和权限名称设置为类常量是一个好主意吗?

时间:2017-04-03 19:38:51

标签: php security authentication permissions

我希望拥有这两者的基本用户角色和基本权限。 我决定创建单独的类,将它们存储在常量中。 应用程序将只有公司,应用程序(类似于网站),用户(分配给公司),角色和权限作为域模型。表和关系表是相同的。可以在将来添加额外角色,但他们会有这些许可。

超级管理员可以做任何事情,管理员可以做任何与他被分配到的公司有关的事情,用户只需阅读用户的信息。

应用程序很可能仅用作其他网站的Rest API。

我想知道为了检查用户在我的代码中的权限,使用常量这样的类是个好主意吗?像$ user-> hasPermissionTo(PermissionType :: COMPANY_ADD)或$ user-> hasRole(RoleType :: SUPER_ADMIN)。我可以遇到什么问题?

非常感谢!!!

这是具有应用程序基本权限的PermissionType类。

final class PermissionType {
    const USER_READ   = 'user.read';
    const USER_ADD    = 'user.add';
    const USER_UPDATE = 'user.update';
    const USER_DELETE = 'user.delete';

    const APP_READ   = 'app.read';
    const APP_ADD    = 'app.add';
    const APP_UPDATE = 'app.update';
    const APP_DELETE = 'app.delete';

    const COMPANY_READ   = 'company.read';
    const COMPANY_ADD    = 'company.add';
    const COMPANY_UPDATE = 'company.update';
    const COMPANY_DELETE = 'company.delete';

    const ROLE_READ   = 'role.read';
    const ROLE_ADD    = 'role.add';
    const ROLE_UPDATE = 'role.update';
    const ROLE_DELETE = 'role.delete';

}

这是基本的RoleType类,具有默认角色'每个人的姓名和默认权限

final class RoleType {
    const USER        = 'user';
    const ADMIN       = 'admin';
    const SUPER_ADMIN = 'super_admin';

    const DEFAULT_ROLE_PERMISSIONS = [
        self::USER         => [Permission::USER_READ],
        self::ADMIN        => [
            Permission::USER_READ,
            Permission::USER_ADD,
            Permission::USER_UPDATE,
            Permission::USER_DELETE,
            Permission::APP_READ,
            Permission::APP_ADD,
            Permission::APP_UPDATE,
            Permission::APP_DELETE,
            Permission::COMPANY_READ,
            Permission::COMPANY_ADD,
            Permission::COMPANY_UPDATE,
            Permission::COMPANY_DELETE,
            Permission::ROLE_READ,
            Permission::ROLE_ADD,
            Permission::ROLE_UPDATE,
            Permission::ROLE_DELETE,
        ],
        self::SUPER_ADMIN  => [
            Permission::USER_READ,
            Permission::USER_ADD,
            Permission::USER_UPDATE,
            Permission::USER_DELETE,
            Permission::APP_READ,
            Permission::APP_ADD,
            Permission::APP_UPDATE,
            Permission::APP_DELETE,
            Permission::COMPANY_READ,
            Permission::COMPANY_ADD,
            Permission::COMPANY_UPDATE,
            Permission::COMPANY_DELETE,
            Permission::ROLE_READ,
            Permission::ROLE_ADD,
            Permission::ROLE_UPDATE,
            Permission::ROLE_DELETE,
    ]
];

}

0 个答案:

没有答案