ribafs/laravel-acl

Laravel 8 应用中的 ACL 实现

v2.1 2020-10-27 00:13 UTC

README

此 README 的葡萄牙语版本

README-PT

支持 Laravel 9 和 10

Alto 8 版本无 try。

使用用户、角色、权限、特性、中间件、提供者等

如何工作?

用户 'super' 可以访问所有表,并可以在每个表中做任何事情。用户 'admin' 只能访问权限、角色和用户表,并可以对他们做任何事情。用户 'manager' 只能访问客户表,并可以对其进行所有操作。'user' 用户只能访问客户索引视图。

以每个用户的身份登录以尝试使用。

测试环境

  • Windows 7 和 10
  • Linux Mint 20 和 21

2.0 版本的新功能

现在我们有两个区域,公共区域和管理区域。进入应用程序的根目录后,您可以访问客户列表和查看页面。登录后,您将根据用户拥有相应的权限。

在 Laravel 9 中创建一个名为 'acl' 的新应用程序

如果您有 Laravel 安装程序,使用

laravel new acl --jet --teams --stack=livewire
cd acl
npm install && npm run dev

如果没有,对于 Laravel 10

composer create-project --prefer-dist laravel/laravel acl

对于 Laravel 9

composer create-project --prefer-dist laravel/laravel acl "9.5.2"

cd acl
composer require laravel/jetstream
php artisan jetstream:install livewire
npm install && npm run dev

创建和配置数据库

nano .env

安装 laravel-acl

composer require ribafs/laravel-acl

发布

php artisan vendor:publish --provider="Ribafs\LaravelAcl\LaravelAclServiceProvider"

复制一些现有文件

  • DatabaseSeeder.php
  • routes/web.php
  • views/welcome.blade.php
  • views/layouts/app.blade.php

复制文件

php artisan copy:files

现在所有包文件已经存在于您的应用程序中:迁移、种子、模型、中间件、提供者等

调整应用程序标题(可选)

编辑 .env 并将 APP_NAME 行更改为类似以下内容:APP_NAME='ACL to Laravel 9'

尝试

在添加您的 CRUD 后,运行并测试应用程序的访问控制。

php artisan migrate --seed
php artisan serve
localhost:8000/login

如果您收到错误

Target class [Fruitcake\Cors\HandleCors] does not ...

则编辑

app/Http/Kernel.php

并注释掉以下行

    //\Fruitcake\Cors\HandleCors::class,

用于测试

然后测试其他用户:admin、manager 和 user

重要

此包旨在用于新应用程序。请避免将其用于现有应用程序,因为它可能会覆盖一些文件。

更详细的文档

上述信息和更多关于如何充分利用此包的信息(目前只有英文)

https://ribafs.github.io/laravel-acl

如何使用 ribafs/laravel-acl 创建演示应用程序

创建一个没有任何用户拥有的权限(示例)

all-no

php artisan add:perm 'No perms' all-no 

并将其分配给所有不想访问的视图

@can('all-no')

在动作上

    public function create(Request $request)
    {
        if ($request->user()->can('all-no')) {
            return view('admin.clients.create');
        }else{
            print '<a href="#" onClick="window.history.back();">Back to app</a>';
            return '<h3 align="center">Access denied in this demo</h3>';
        }
    }

仅允许具有所有-无权限的用户执行动作,该权限没有任何用户拥有。

因此,您不需要更改视图。

Laravel 8 版本用于现有应用程序

如果您想使用 Laravel 7 版本的包,请点击以下链接

https://github.com/ribafs/laravel-acl-exist

Laravel 7 版本

如果您想使用 Laravel 7 版本的包,请点击以下链接

https://github.com/ribafs/laravel7-acl

Laravel 6 版本

如果您想使用 Laravel 6 版本的包,请点击以下链接

https://github.com/ribafs/laravel6-acl

Laravel 5.8 版本

如果您想使用 Laravel 5.8 版本的包,请点击以下链接

https://github.com/ribafs/laravel58-acl

快速交流想法

https://github.com/ribafs/laravel-acl/discussions/

许可证

MIT