muhammadsaeedparacha/multi-tenant-laravel-acl

Laravel的多数据库多租户ACL

v1.1.3 2017-08-22 23:44 UTC

This package is auto-updated.

Last update: 2024-09-16 06:07:42 UTC


README

Latest Version on Packagist Software License

Total Downloads

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以获取最近更改的更多信息。

贡献

请查看CONTRIBUTINGCONDUCT以获取详细信息。

安全

如果您发现任何安全相关的问题,请通过电子邮件saeedparacha13@gmail.com报告,而不是使用问题跟踪器。

致谢

许可

Apache-2.0许可。请参阅许可文件以获取更多信息。