牛骨文教育服务平台(让学习变的简单)
博文笔记

laravel中角色与权限的管理

创建时间:2018-01-10 投稿人: 浏览次数:172

1、页面


代码:

<div class="contain" style="width: 84%;" id="contain">
        <h2 style="padding:0;margin:0;font-size:28px;letter-spacing:4px;">角色列表</h2>
        <table class="table table-hover table-condensed table-responsive" id="table">
            <thead>
            <tr>
                <th>id</th>
                <th>角色名</th>
                <th style="padding-left: 30px;">操作</th>
            </tr>
            </thead>
            <tbody>
            @foreach ($roles as $role)
                <tr>
                    <td>{{ $role->id }}</td>
                    <td>{{ $role->name }}</td>
                    <td>
                        <a style="font-size: 15px;" type="submit" href="{{ url("role/".$role->id."/edit") }}" class="btn">权限</a>
                        <a style="font-size: 15px;" type="submit" class="btn" onclick="delPri({{ $role->id }})">删除</a>
                    </td>
                </tr>
            @endforeach
            </tbody>
            <div style="float:right;margin-top:-30px;margin-right:100px;height:70px;" id="pagination">
                {{ $roles->render() }}
                <div style="float:right;letter-spacing: 2px;margin-left:20px;" class="pagi__count"> 共<b>{{ $count }}</b>条数据</div>
            </div>

        </table>
    </div>

2、权限按钮的控制器

public function edit($role_id)
    {
        $role = Role::find($role_id);
        $my_privileges = Role::find($role_id)->privileges;
        $privileges = Privilege::all();
        return view("role.edit", compact("role", "my_privileges", "privileges"));
    }


3、权限页面


代码:

<form action="{{ url("role/".$role->id) }}" method="post">
        {{ csrf_field() }}
        {{ method_field("put") }}
        @foreach ($privileges as $privilege)
            <div class="form-group">
                <label for=""><input type="checkbox" name="privileges[]" value="{{ $privilege->id }}"
                    @if ($my_privileges->contains($privilege)) checked @endif> {{ $privilege->name }}</label>
            </div>   // 判断若有这个权限就选中
        @endforeach

        <button type="submit" class="btn btn-primary">提交</button>
    </form>

4、提交后的修改实现

public function update(Request $request, $role_id)
    {
        $role = Role::find($role_id);
        $request = $request->except("_token", "put");
        $my_privileges = Role::find($role_id)->privileges;
        $privileges = Privilege::findMany($request["privileges"]);

        // 要增加的
        $addPrivileges = $privileges->diff($my_privileges);
        foreach ($addPrivileges as $addPrivilege) {
            $role->grantPrivileges($addPrivilege);   // 模型中的方法
        }

        // 要删除的
        $delePrivileges = $my_privileges->diff($privileges);
        foreach ($delePrivileges as $delePrivilege) {
            $role->deletePrivileges($delePrivilege);    // 模型中的方法
        }

        return back();
    }
5、模型中的实现

// 给角色赋予权限
    public function grantPrivileges($privilege)
    {
        return $this->privileges()->save($privilege);
    }

    // 取消角色赋予的权限
    public function deletePrivileges($privilege)
    {
        return $this->privileges()->detach($privilege);
    }






声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。