rlgroup/laravel-abilities-controllers

控制器的能力

0.2.1 2021-09-14 08:42 UTC

This package is not auto-updated.

Last update: 2024-09-23 20:02:34 UTC


README

Laravel Abilities 控制器中的包

安装

在 Laravel 5 应用程序的根目录下使用 composer 安装

composer require rlgroup/laravel-abilities-controllers

迁移

$ php artisan migrate

运行

$ php artisan db:seed --class="Rlgroup\\Abilities\\AbilitiesTableSeeder"

将到 Http/Kernel.php 中的数组 $routeMiddleware

'abilities' => \Rlgroup\Abilities\AbilitiesMiddleware::class,

任何需要读取以检查权限的地方都可以使用 routeMiddleware 能力

添加到 user.php

use Rlgroup\Abilities\UserTrait;  use UserTrait;

添加到 app.js 页面

---------------------------------
import collect from 'collect.js'

Vue.prototype.actionController = (controller, method = null) => {
  if (app && app.abilitiesUser) {
    if (method) {
      return app.abilitiesUser.indexOf(`${controller}@${method}`) > -1 || app.abilitiesUser.indexOf(`*`) > -1
    } else {
      // console.log(app.abilitiesUser, app.abilitiesUser.indexOf(`${controller}`))
      return app.abilitiesUser.filter(r => {
	return r.indexOf(`${controller}`) > -1
      }).length || app.abilitiesUser.indexOf(`*`) > -1
    }
  }

  return false
}

Vue.prototype.actionControllerLeastOne = (controllers, method = null) => {
  if (app && app.abilitiesUser) {
    let isCan = collect(controllers).map((controller) => {
      return app.abilitiesUser.filter(r => {
	return r.indexOf(`${controller}`) > -1
      }).length > 0 || app.abilitiesUser.indexOf(`*`) > -1
    }).contains(true);

    return isCan;
  }

  return false;
}
-----------------------------
const app = new Vue({
  data() {
    return {
	loading: false,
	 user: {},
	 abilities: []
     }
 },
computed: {
      abilitiesUser() {
	return Object.keys(this.abilities)
      },
      allAbilitiesUser() {
	return this.abilities
      }
    },

    created () {
	this.$vuetify.rtl = true

	axios.get(`/abilities/user`)
	  .then(response => {
	      if (response.data.status == 'ok') {
		this.user = response.data.user
		this.abilities = response.data.abilities
	      }

	      this.loading = true;
	  }).catch(error => {});
      },
});
------------------------------------------------

以及需要客户端测试(VUE)的地方

actionController (action,method)

------------------------------------------------

如果项目必须使用 GUARD 连接,则必须将 GUARD 值添加到 ENV 文件中

AUTH_GUARD=