删除所有角色或访问管理控制面板的权限时,最好的方法是什么?
What is the best way when delete all roles or permission to access admin control panel?
我为我的项目构建包并创建 table 角色和权限以及中间件。
我为角色和权限启用 CRUD,link 中间件的一些角色和权限。
问题:
当用户(管理员)删除所有角色和权限时
之后任何用户都无法访问管理控制面板。
避免这种情况的最佳方法是什么?
将适当的外键添加到您的数据库并使它们受限制。这意味着如果用户绑定到某个权限,则您无法删除该权限。 (或角色,如果绑定了权限)。
编辑添加的代码:
例如两个表 - 角色和权限 - 附加的迁移:
Schema::create('roles', function($table)
{
$table->increments('id');
$table->string('name');
});
Schema::create('persmissions', function($table)
{
$table->increments('id');
$table->usingnedInteger('role_id');
$table->string('name');
$table->foreign('role_id')
->references('id')->on('roles')
->onDelete('restrict');
});
如果存在 ID 为 1 的角色 'admin' 和权限 'delete_user' role_id = 1,则无法删除 ID 为 1 的角色 - mysql 不允许你这样做。所以你把问题抽象到数据库层。
只有先删除权限才能删除角色。
您可以对用户执行相同的操作。因此,如果用户的 role_id 为 1,则您无法删除 ID 为 1 的角色,直到不存在 role_id 为 1 的用户。
我为我的项目构建包并创建 table 角色和权限以及中间件。
我为角色和权限启用 CRUD,link 中间件的一些角色和权限。
问题:
当用户(管理员)删除所有角色和权限时
之后任何用户都无法访问管理控制面板。
避免这种情况的最佳方法是什么?
将适当的外键添加到您的数据库并使它们受限制。这意味着如果用户绑定到某个权限,则您无法删除该权限。 (或角色,如果绑定了权限)。
编辑添加的代码: 例如两个表 - 角色和权限 - 附加的迁移:
Schema::create('roles', function($table)
{
$table->increments('id');
$table->string('name');
});
Schema::create('persmissions', function($table)
{
$table->increments('id');
$table->usingnedInteger('role_id');
$table->string('name');
$table->foreign('role_id')
->references('id')->on('roles')
->onDelete('restrict');
});
如果存在 ID 为 1 的角色 'admin' 和权限 'delete_user' role_id = 1,则无法删除 ID 为 1 的角色 - mysql 不允许你这样做。所以你把问题抽象到数据库层。 只有先删除权限才能删除角色。
您可以对用户执行相同的操作。因此,如果用户的 role_id 为 1,则您无法删除 ID 为 1 的角色,直到不存在 role_id 为 1 的用户。