• laravel8.5与layuiadmin整合(13)


    63.建立上面对应的模板文件
    /resources/views/admin/user/role.blade.php

    @extends('admin.base')
    
    @section('content')
        <style>
            .layui-form-checkbox span{ 100px}
        </style>
        <div class="layui-card">
            <div class="layui-card-header layuiadmin-card-header-auto">
                <h2>用户【{{$user->name}}】分配角色</h2>
            </div>
            <div class="layui-card-body">
                <form class="layui-form" action="{{route('admin.user.assignRole',['id' => $user->id])}}" method="post">
                    {{csrf_field()}}
                    {{method_field('put')}}
                    <div class="layui-form-item">
                        <label for="" class="layui-form-label">角色</label>
                        <div class="layui-input-block" style=" 400px">
                            @forelse($roles as $role)
                                <input type="checkbox" name="roles[]" value="{{$role->id}}" title="{{$role->name}}" {{ $role->own ? 'checked' : ''  }} >
                            @empty
                                <div class="layui-form-mid layui-word-aux">还没有角色</div>
                            @endforelse
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <div class="layui-input-block">
                            <button type="submit" class="layui-btn" lay-submit="" lay-filter="formDemo">确 认</button>
                            <a class="layui-btn" href="{{route('admin.user')}}" >返 回</a>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    @endsection

    赋予用户权限模板
    /resources/views/admin/user/permission.blade.php

    @extends('admin.base')
    
    @section('content')
        <style>
            .cate-box{margin-bottom: 15px;padding-bottom:10px;border-bottom: 1px solid #f0f0f0}
            .cate-box dt{margin-bottom: 10px;}
            .cate-box dt .cate-first{padding:10px 20px}
            .cate-box dd{padding:0 50px}
            .cate-box dd .cate-second{margin-bottom: 10px}
            .cate-box dd .cate-third{padding:0 40px;margin-bottom: 10px}
        </style>
        <div class="layui-card">
            <div class="layui-card-header layuiadmin-card-header-auto">
                <h2>用户 【{{$user->name}}】分配直接权限,直接权限与角色拥有的角色权限不冲突</h2>
            </div>
            <div class="layui-card-body">
                <form action="{{route('admin.user.assignPermission',['id'=>$user->id])}}" method="post" class="layui-form">
                    {{csrf_field()}}
                    {{method_field('put')}}
                    @forelse($permissions as $first)
                        <dl class="cate-box">
                            <dt>
                            <div class="cate-first"><input id="menu{{$first['id']}}" type="checkbox" name="permissions[]" value="{{$first['id']}}" title="{{$first['display_name']}}" lay-skin="primary" {{$first['own']??''}} ></div>
                            </dt>
                            @if(isset($first['_child']))
                                @foreach($first['_child'] as $second)
                                    <dd>
                                        <div class="cate-second"><input id="menu{{$first['id']}}-{{$second['id']}}" type="checkbox" name="permissions[]" value="{{$second['id']}}" title="{{$second['display_name']}}" lay-skin="primary" {{$second['own']??''}}></div>
                                        @if(isset($second['_child']))
                                            <div class="cate-third">
                                                @foreach($second['_child'] as $thild)
                                                    <input type="checkbox" id="menu{{$first['id']}}-{{$second['id']}}-{{$thild['id']}}" name="permissions[]" value="{{$thild['id']}}" title="{{$thild['display_name']}}" lay-skin="primary" {{$thild['own']??''}}>
                                                @endforeach
                                            </div>
                                        @endif
                                    </dd>
                                @endforeach
                            @endif
                        </dl>
                    @empty
                        <div style="text-align: center;padding:20px 0;">
                            无数据
                        </div>
                    @endforelse
                    <div class="layui-form-item">
                        <button type="submit" class="layui-btn" lay-submit="" >确 认</button>
                        <a href="{{route('admin.user')}}"  class="layui-btn" >返 回</a>
                    </div>
    
                </form>
            </div>
        </div>
    @endsection
    
    @section('script')
        <script type="text/javascript">
            layui.use(['form'],function () {
                var form = layui.form;
                form.on('checkbox', function (data) {
                    var check = data.elem.checked;//是否选中
                    var checkId = data.elem.id;//当前操作的选项框
                    if (check) {
                        //选中
                        var ids = checkId.split("-");
                        if (ids.length == 3) {
                            //第三极菜单
                            //第三极菜单选中,则他的上级选中
                            $("#" + (ids[0] + '-' + ids[1])).prop("checked", true);
                            $("#" + (ids[0])).prop("checked", true);
                        } else if (ids.length == 2) {
                            //第二季菜单
                            $("#" + (ids[0])).prop("checked", true);
                            $("input[id*=" + ids[0] + '-' + ids[1] + "]").each(function (i, ele) {
                                $(ele).prop("checked", true);
                            });
                        } else {
                            //第一季菜单不需要做处理
                            $("input[id*=" + ids[0] + "-]").each(function (i, ele) {
                                $(ele).prop("checked", true);
                            });
                        }
                    } else {
                        //取消选中
                        var ids = checkId.split("-");
                        if (ids.length == 2) {
                            //第二极菜单
                            $("input[id*=" + ids[0] + '-' + ids[1] + "]").each(function (i, ele) {
                                $(ele).prop("checked", false);
                            });
                        } else if (ids.length == 1) {
                            $("input[id*=" + ids[0] + "-]").each(function (i, ele) {
                                $(ele).prop("checked", false);
                            });
                        }
                    }
                    form.render();
                });
            })
        </script>
    @endsection

    以上则可以给用户分配角色和权限了

    64.给各个功能,添加对应的权限
    /routes/web.php 修改如下

    // 系统管理
    Route::group(['prefix' => 'admin','middleware' => ['auth','permission:system.manage']],function() {
        // 系统用户列表
        //
        //
        
    });

    65.添加中间件
    /app/Http/Kernel.php

        protected $routeMiddleware = [
            // ....
            'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
            'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
            'role_or_permission' => \Spatie\Permission\Middlewares\RoleOrPermissionMiddleware::class,
        ];

    此时可以设置用户角色,权限,功能了

  • 相关阅读:
    Lucene.Net
    关于数据库优化问题总结
    网页幻灯片效果
    ASP.NET邮件发送
    【收藏】悟透JavaScript(李战)
    JS之显示、隐藏控件方法
    初学自定义验证码
    js之判断浏览器类型及版本号
    js清空上传控件的值
    vs2008学习之路
  • 原文地址:https://www.cnblogs.com/lin3615/p/15803015.html
Copyright © 2020-2023  润新知