更改角色权限

时间:2016-02-08 12:12:54

标签: laravel authentication user-controls laravel-5.2 user-roles

我试图让它成为一些管理员可以决定哪个角色可以做什么,从前端轻松,但我有点卡住了。我尝试过几种不同的东西,但到目前为止都没有。

到目前为止我已尝试过这个:

@foreach($role as $role) 
    {!! Form::model($permission, [
        'method' => 'PATCH',
        'url'    => 'settings/permissionsUpdate',
    ]) !!}

    <br />
    {{$role->name}}
    <br />

    <input type="hidden" name="role_id" value="{{ $role->id }}" />

    @foreach($permission as $perm)
        <select name="permissions[ {{ $perm->id }} ]">
            <option value="1">Allowed</option>
            <option value="0">Not Allowed</option>
        </select>
        <br />
        {{$perm->name}}
        <br />
    @endforeach

    {!! Form::submit('Save Settings', ['class' => 'btn btn-primary']) !!}
    {!! Form::close() !!}

@endforeach

这是我的数据库

Permission_role
    * id
    * Role_id
    * Permmission_id

Permission
    * id
    * Name
    * Slug
    * Description

Roles
    * id
    * Name
    * Slug
    * Description

Role_user
    * id
    * role_id
    * user_id

和控制器

public function permissionsUpdate(Request $request)
{
    $allowed_permissions = [];

    foreach($request->input('permissions') as $permission) {
        if ($permission == 1) {
            $allowed_permissions[] = $permission;
        }

        $role = Role::find($request->input('role_id'));
        $role->permissions()->sync($allowed_permissions); //Currently gives error
        $role->save();
    }
}

我得到了错误 调用未定义的方法Illuminate \ Database \ Query \ Builder :: syncPermission()。

模型 作用:

public function permissions()
{
    return $this->hasMany('permissions');
}

权限

public function PermissionsRole()
{
    return $this->hasMany('App\PermissionRole', 'role_id', 'id');
}

但我必须承认我在失地的情况下升职。我需要附加和取消对角色的权限,并且无法弄清楚如何执行此操作

我似乎仍然无法弄明白这一点,我不确定我是如何附加或取消用户的权限。

更新:

到目前为止,我已经尝试了这个,但我已经接近但仍有一些问题。

我遇到了我的模型出错的问题,它尝试查找表role_role,所以我将其更改为

public function permissions()
{ 
    return $this->belongsToMany('App\permission'); (Had to make a new model called permisson, because when i used permissions it looked for role_permissions and it is called role_permission, but the table alone is called permissions, bit confsuing there)
}

这几乎使它工作,但它只改变第一个值(1)即使所有都被允许它只附加等于1的permissons_id然后角色id等于正确的role_id,如果我请求它似乎使用permission_id = 1,2,3,4等获取所有正确的数据,但在此之后它出错了。此外,视图仍然显示从开始时是否允许。 Coulndt让它发挥作用,我尝试了类似的东西:

<option value="1" {{ @ifUserCan($perm->slug)  ? 'selected="selected"' : null }} >Allowed</option>
<option value="0" {{ @ifUserCan($perm->slug) ? null : 'selected="selected"' @endif }}>Not Allowed</option>

但是,你不能这样做。

0 个答案:

没有答案