laravel常用用法(Rbac)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gaokcl/article/details/82315165

laravel常用用法:

参考:https://blog.csdn.net/gaokcl/article/details/82314996

一,权限路由:

//管理员用户列表

Route::get('/admin_user', 'AdminUserController@index');

//添加管理员用户 添加表单页面

Route::get('/admin_user/create', 'AdminUserController@create');

//添加管理员用户 添加页面的提交按钮

Route::get('/admin_user/store/{admin_user_id}', 'AdminUserController@store');

//显示管理员用户详情

Route::get('/admin_user/{admin_user_id}', 'AdminUserController@show');

//修改管理员用户 修改表单页面

Route::get('/admin_user/edit/{admin_user_id}', 'AdminUserController@edit');

//修改管理员用户 修改页面的提交按钮

Route::get('/admin_user/update/{admin_user_id}', 'AdminUserController@update');

//删除管理员用户

Route::get('/admin_user/destroy/{admin_user_id}','AdminUserController@destroy');

2,获取系统权限的值:

<?php 

     //获取域名或主机地址 

     echo $_SERVER['HTTP_HOST']."<br>"; 

     //获取网页地址 

     echo $_SERVER['PHP_SELF']."<br>"; 

     //获取网址参数 

     echo $_SERVER["QUERY_STRING"]."<br>"; 

     //来源网页的详细地址 

     echo $_SERVER['HTTP_REFERER']."<br>"; 

?> 

二,Rbac:

1,新建模型Models

 //创建  权限 的模型,用来 指定 字段名

 php artisan make:model Models\Admin\AdminPermission


 //创建  权限+角色  的中间模型

 php artisan make:model Models\Admin\AdminPermissionRole


 //创建  角色  的模型 

 php artisan make:model Models\Admin\AdminRole


 //创建  角色+用户  的模型

 php artisan make:model Models\Admin\AdminRoleUser

 //创建  用户  的模型

 php artisan make:model Models\Admin\AdminUser

2,创建控制器的方法:

 1,index()    列表

 2, create() 显示增加表单

 3,store(Request $request)   增加  提交  按钮

 4,show($id)   详情

 5,edit($id)   显示修改表单

 6,update(Request $request, $id)    修改表单的修改按钮

 7,destroy($id)  删除的按钮

3,创建中间件:

php artisan make:middleware Rbac

4,注册中间件:

APP/Http/Kernel:

' rbac  = ; '

二,设计 路由 与 控制器

1,权限

//权限列表

Route::get('/admin/permission','Admin\PermissionController@index');

//创建   权限列表  控制器

php artisan make:controller Admin\PermissionController

2,角色

php artisan make:controller Admin\RoleController

1,查询 用户—角色中间表

select * from role_users where user_id =1

2,left join 角色对应的权限取出来

select * from role_users left join where user_id =1

3,用户角色表中的角色权限---查出 userid , roleid , permissionid ,roleid1

select * from role_users left join

permissin_role 

on role_user.role_id = permissin_role.role.id

where role_user.user_id =1

原生的代码

select permissons.* from role_user

left join permission_role on role_user.role_id = permission_role.role.id

left join permission on permission_role.permission_id=permissions.id

where role_user.user_id=1

group by permissions.id

查询当前的路由:

 dd($current = Route::current()->uri());

12,修改的laravel文件:

Providers/AppServiceProvider.php

13,新建

mater.blade.php   或者 permissionRole

14,Route报错解决:

php artisan ide-helper:generate

composer install

15,mater.blade.php的存在的意义:

<!--左侧导航 开始-->
<div class="menu_box">
    <ul>
        @foreach($tree as $key => $value)
            <li>
                <h3><i class="fa fa-fw fa-clipboard"></i>{{$key}}</h3>
                <ul class="sub_menu">
                    @foreach($value as $v)
                        <li><a href="{{url($v->name)}}" ><i class="fa fa-fw fa-plus-square"></i>{{$v->display_name}}</a></li>
                    @endforeach
                </ul>
            </li>
        @endforeach
    </ul>
</div>

===>  作用:显示错误的信息提示,用来提示权限是否可以访问

<!--底部 结束-->

@if(session('mess'))
    <script>
        $(".alert").html('{{session('mess')}}').show().delay(1000).fadeOut(1000);
    </script>
@endif

16,创建用户分配的权限表,permission-role

创建控制器:

  php artisan make:controller Admin\PermissionRoleController


  php artisan make:controller Admin\AdminController

三,artisan 创建命令有关

1,验证码的使用:

composer require mews/captcha

先在composer.json中

 "autoload": {
        "classmap": [
             "database"
         ],
       "psr-4": {
        "App\\": "app/"
     }
   },

改为

"autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        },

"files":[

     "App/Function/function.php"
]

},

作用:

加载引用的封装函数--在APP下加一个文件夹

composer dump-autoload

便可以在laravel框架中调用加载的自定义函数,例如getTree();

1,使用artisan命名创建控制器

在controllers目录中创建一个UserController

php artisan make:controller Admin\UserController

php artisan make:controller Home\CarouselController

php artisan make:controller Admin\TopicController

php artisan make:controller PageController

php artisan make:controller SendSMSController

2,定义中间件app\http

 php artisan make:middleware CheckLogin

3,导出laravel中提供的分页视图

 php artisan vendor:publish --tag=laravel-pagination

 在pagination 中将default.blade.php的视图copy到自定义的视图

4,创建迁移目录

php artisan make:migration create_user_table

5,创建模型

app下

php artisan make:model  Model\User

php artisan make:model  Models\TmpPhone

php artisan make:model  Models\Admin\Topic

或者

php artisan make:model  User

&&, 用户认证 Auth :

1,创建 Auth :

 php artisan make:auth

 在路由web.php中会多,Auth::routes(),可以搜索auth

 Route::get('/home','HomeController@index');

 在resource/views/auth

 在resource/views/Layouts/app.blade.php 中使用asset改变绝对js路径

四,参考后台权限:

1,在app/providers/appserviceprovider中的boot只写:

view()->composer(
             '*', 'App\Http\viewComposer'
              );

2,在App\Http\下建viewComposer.php

 <?php

 namespace App\Http;

 use Illuminate\Contracts\View\View;
 use App\Models\RoleUser;
 use Illuminate\Support\ServiceProvider;

 class viewComposer
 {
    public function compose(View $view)
    {
        // 用户id
        $user=session()->get('user');
        if(!$user){
            return redirect('admin/login');
        }
        $id=$user[0]->id;

        // 查询用户当前登录用户的权限
        $permissions = RoleUser::select('permissions.*')
            ->LeftJoin('permission_role', 'permission_role.role_id', 'role_user.role_id')
            ->LeftJoin('permissions', 'permissions.id', 'permission_role.permission_id')
            ->where('role_user.user_id',$id)
            ->where('permissions.is_menu',0)
            ->groupBy('permissions.id')
            ->get();

    // 得到数组的结构
    // dd($permissions);
    $tree = array();

    foreach ($permissions as $permission)
    {
        if ($permission->parent_id==0)
        {
            // 顶级权限分类作为标识
            foreach ($permissions as $item) {

                // 找到顶级分类下的权限并将其赋给新的对象
                if ($permission->id==$item->parent_id)
                {
                    $tree[$permission->display_name][]=$item;
                }
            }
        }
    }
    //dd($tree);

    $view->with('tree', $tree)->with('adminuser',$user);
  }
}

猜你喜欢

转载自blog.csdn.net/gaokcl/article/details/82315165