【问题标题】:Not able to delete permission(klaravel/ntrust) - Laravel 5.3无法删除权限(klaravel/ntrust) - Laravel 5.3
【发布时间】:2018-01-25 13:11:23
【问题描述】:

我在我的 laravel 5.3 应用程序中使用 klaravel/ntrust 包作为 ACL。 除了删除权限外,一切正常。

config/ntrust.php

'admin' => [

    User table name     
    'table' => 'cushbu_admin',

    User model      
    'model' => 'Modules\Admin\Models\Admin',

    Ntrust Role Model
   'role' => 'Modules\Admin\Models\AdminRole',

    Ntrust Roles Table     
    'roles_table' => 'cushbu_admin_roles',

    Ntrust Permission Model
    'permission' => 'Modules\Admin\Models\AdminPermission',

    Ntrust Permissions Table
   'permissions_table' => 'cushbu_admin_permissions',

    Ntrust permission_role Table
    'permission_role_table' => 'cushbu_admin_permission_role',

    Ntrust role_user Table
   'role_user_table' => 'cushbu_admin_role_user',

    User Foreign key on Ntrust's role_user Table (Pivot)
    'user_foreign_key' => 'user_id',

   Role Foreign key on Ntrust's role_user and permission_role Tables 
   (Pivot)
    'role_foreign_key' => 'role_id',

    Permission Foreign key on Ntrust's permission_role Table (Pivot)
    'permission_foreign_key' => 'permission_id',

],

当我尝试删除时出现此错误

SQLSTATE[42S22]:找不到列:1054 未知列 'admin_role_id' 在“字段列表”中(SQL:选择admin_role_id from admin_permission_role 其中admin_permission_id = 3)

我没有在任何地方指定 admin_role_id、admin_permission_id,而是存在 role_id、permission_id。

权限模型

<?php

namespace Modules\Admin\Models;

use Illuminate\Database\Eloquent\Model;
use Klaravel\Ntrust\Traits\NtrustPermissionTrait;
use Vinkla\Hashids\Facades\Hashids;

class AdminPermission extends Model
{
    use NtrustPermissionTrait;

    /*
     * Role profile to get value from ntrust config file.
     */
    protected static $roleProfile = 'admin';

    protected $table = 'cushbu_admin_permissions' ;

    protected $fillable = ['name','display_name'];

    //Get hashid
    public function getRouteKey() {
        return Hashids::encode($this->getKey());
    }
}

permission_table

id ,name, display_name, 描述

permission_role_table

permission_id ,role_id

【问题讨论】:

  • 能否分享一下您的permission_role_table & .permissions_table 的数据库表结构
  • 尝试将受保护的静态 $roleProfile 的值保留为 '' 而不是 admin。
  • 我在配置“管理员”和“用户”中有 2 个角色配置文件。默认设置为“管理员”
  • 您是否尝试过使用“detachPermission”功能。首先找出角色并分离该权限。您可以分离单个或多个权限,请参阅此处的文档:github.com/klaravel/ntrust/blob/master/src/Ntrust/Traits/…
  • 将表字段重命名为 admin_permission_id、admin_role_id

标签: php laravel laravel-5.3 acl


【解决方案1】:

我在数据库中将permission_id、role_id分别更改为admin_permission_id、admin_role_id。解决了这个问题。

【讨论】:

  • 我认为您在安装此软件包时错过了以下步骤: 用户与角色的关系 现在生成 Ntrust 迁移: php artisan ntrust:migration {name} Profile {name} 您配置的配置文件的名称在文件 config/ntrust.php 部分配置文件中有。它将生成 __ntrust_setup_tables.php 迁移。您现在可以使用 artisan migrate 命令运行它: php artisan migrate
猜你喜欢
  • 2017-03-31
  • 2019-08-19
  • 1970-01-01
  • 2021-05-06
  • 2015-12-16
  • 2014-03-09
  • 2017-02-16
  • 2017-02-27
  • 2014-07-19
相关资源
最近更新 更多