muhammadsaeedparacha / multi-tenant-laravel-acl
Laravel的多数据库多租户ACL
v1.1.3
2017-08-22 23:44 UTC
Requires
- php: >=5.6.4
- illuminate/database: ~5.3
- illuminate/support: ~5.3
Requires (Dev)
- phpunit/phpunit: 4.*
- scrutinizer/ocular: ~1.1
- squizlabs/php_codesniffer: ~2.3
README
Laravel多租户ACL是一个简单的多数据库多租户 - 用户、公司用户、角色、权限ACL,适用于Laravel框架中的SaaS应用程序。此包基于优秀的包yajra\laravel-acl,但专为多数据库多租户SaaS应用程序而设计。
1) 安装
通过Composer
$ composer require muhammadsaeedparacha/multi-tenant-laravel-acl
2) 配置
[i] 注册服务提供者
Paracha\Acl\AclServiceProvider::class
[ii] 注册中间件:在App\Http\Kernel.php中
'canAtLeast' => \Paracha\Acl\Middleware\CanAtLeastMiddleware::class, 'permission' => \Paracha\Acl\Middleware\PermissionMiddleware::class, 'role' => \Paracha\Acl\Middleware\RoleMiddleware::class, 'tenantConnection' => \Paracha\Acl\Middleware\TenantConnectionMiddleware::class, 'checkPermission' => \Paracha\Acl\Middleware\CheckPermissionsMiddleware::class, 'checkModularPermission' => \Paracha\Acl\Middleware\CheckModularPermissionsMiddleware::class,
[iii] 租户连接:在Config\Database中,根据租户动态填写
注意:当前仅支持MySQL
'tenant' => [ 'driver' => 'mysql', 'host' => '', 'port' => env('DB_PORT', '3306'), 'database' => '', 'username' => '', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ],
[iv] 发布资源
$ php artisan vendor:publish --tag=multi-tenant-laravel-acl
[v: 可选] 配置租户迁移位置:在Config\Acl中。数组定义了Database\Migrations中的文件夹
'tenantMigrations' => ['/tenants']
[vi] 运行迁移
php artisan migrate
[vii] 将用户特性放在App\User模型中
use Paracha\Acl\Traits\AclUser; class Company extends Model { use AclUser }
3) 使用
[i] 路由权限中间件。目前仅适用于routes\api.php中的Ajax/XHR请求
Route::group(['middleware' => ['auth:api','tenantConnection']], function(){ Route::group(['middleware' => ['checkPermission']], function(){ // Regular Permissions like users.create, users.update, users.read, users.delete, users.report Route::resource('/users', 'UsersController'); }); // Customer Permissions like users.custom, users.xyz Route::post('/users/invite', 'UsersController@invite')->middleware('checkPermission:users.custom'); });
[ii] 从在config('acl.tenantMigrations')中设置的文件夹迁移租户迁移
$company = Company::find(1); $company->createTenantDatabase(); $company->migrateTenant();
这将创建一个名为db_1的数据库,用于公司ID为1,用户名为1,密码为'password'(这是不安全的,需要加密)
4) 文档
文档尚未编写,在此期间可以使用yajra\laravel-acl的文档,因为该项目基于它。
变更日志
请查看CHANGELOG以获取最近更改的更多信息。
贡献
请查看CONTRIBUTING和CONDUCT以获取详细信息。
安全
如果您发现任何安全相关的问题,请通过电子邮件saeedparacha13@gmail.com报告,而不是使用问题跟踪器。
致谢
许可
Apache-2.0许可。请参阅许可文件以获取更多信息。