codexshaper/laravel-permission

Laravel 多重身份验证


README

Laravel 多身份验证

安装视频:点击这里或点击下方的图片

IMAGE ALT TEXT HERE

注意:在安装和使用此包之前,请运行以下命令

在 Laravel 6.0 版本之前

php artisan make:auth

从 Laravel 6.0 版本开始

1. composer require laravel/ui
2. php artisan ui vue --auth
3. npm install
4. npm run dev

安装包

composer require codexshaper/laravel-permission
通过单个命令发布资源、配置、迁移和数据库种子
php artisan permission:install
或者手动发布资源、配置、迁移和数据库种子
  1. 发布配置
php artisan vendor:publish --tag=permission.config
  1. 发布种子
php artisan vendor:publish --tag=permission.seeds
  1. 迁移数据库
php artisan migrate
  1. 运行 composer dump autoload
composer dump-autoload
  1. 种子数据库
php artisan db:seed --class=PermissionDatabaseSeeder
  1. 添加路由
Route::group(['prefix' => config('permission.prefix'),'middleware'=>['role:admin']], function () {
    Permission::routes();
});
use CodexShaper\Permission\Traits\HasRoles 或简单地使用 use HasRoles 特性导入到你的 App\User 模型中
namespace App;

use CodexShaper\Permission\Traits\HasRoles;

class User extends Authenticatable
{
    use HasRoles;
}
检查权限,请访问 /admin/laravel-permission
安装演示
php artisan permission:install:demo
演示网址 /admin/permissions
发布 视图
php artisan permission:publish:views
发布 资源
php artisan permission:publish:resources

要覆盖视图和资源,请更改你的配置文件 /config/permission.php

'resources_path' => 'resources/views/vendor/permissions/assets',
'views' => 'resources/views/vendor/permissions/views',

权限

use CodexShaper\Permission\Models\Permission;

$permission = Permission::create([
	'name' 	=> 'Browse',
	'slug' 	=> slug('browse'),
	'created_at' => now(),
	'updated_at' => now(),
]);

给角色赋予权限

// Create Role before set permission
// $roles = [role_slug_or_id] ex: ['admin',1,2,'author']
$permission->givePermissionToRoles( $roles );

更新权限角色

$role_ids = [1,3,5]
$permission->syncPermissionToRoles( $role_ids );

删除权限角色

// Delete specific Roles
$role_ids = [1,3,5];
$permission->revokePermissionsFromRoles( $role_ids );
// Delete all roles for current permission
$permission->revokePermissionsFromRoles();

角色

use CodexShaper\Permission\Models\Role;

$admin = Role::create([
	'name' 	=> 'Super Admin',
	'slug' 	=> 'admin',
	'created_at' => now(),
	'updated_at' => now(),
]);

分配权限

$admin->assignPermissions([
    'browse',
    'read',
    'edit',
    'add',
    'delete'
]);

更新权限

$permission_ids = [1,3,5]
$admin->syncPermissions( $permission_ids );

删除权限

// Delete specific Permissions
$permission_ids = [1,3,5];
$admin->revokePermissions( $permission_ids );
// Delete all roles for current roles
$admin->revokePermissions();

检查权限

$admin->hasPermission( $permission_slug );

用户

use App\User;

$user = new User;
$user->name = 'John Doe';
$user->email = 'john@gmail.com';
$user->password = Hash::make('password');
$user->save();
$user->assignRoles('admin');

将角色分配给现有用户

$user = User::find(1);
$user->assignRoles('admin');

分配多个角色

$user = User::find(1);
// Use pipe(|)
$user->assignRoles('admin|client|customer');
// Or use comma(,)
$user->assignRoles('admin,client,customer');
// Or use space
$user->assignRoles('admin client customer');
// Or Mixed
$user->assignRoles('admin client,customer|write');
// Pass custom separators
$separators =  ',.| ';
$user->assignRoles('admin client,customer|write', $separators);

更新角色

$role_ids = [1,2,3];
$user->syncRoles( $role_ids );

删除角色

// Delete specific Roles for current User
$role_ids = [1,3,5];
$user->revokeRoles( $role_ids );
// Delete all roles for current user
$user->revokeRoles();

检查角色

$user->hasRole( $role_slug );

在路由上添加中间件

Route::group(['middleware'=>['role:admin']],function(){
	// Routes
});

查看目录

@can('browse')
<p>You Can Browse</p>
@endcan

@role('admin')
<p>You are admin</p>
@endrole

@hasrole('admin')
<p>You have admin Permission</p>
@endhasrole

@haspermission('edit')
<p>You have admin Permission</p>
@endhaspermission

作者

  • Md Abu Ahsan Basir - 主要开发人员及维护者 - github
  • Mahabubul Alam - 主要设计师 - github

查看参与此项目的贡献者列表

许可证

License