删除所有角色或访问管理控制面板的权限时,最好的方法是什么?

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 的用户。