saritasa / roles-simple
此包已废弃,不再维护。未建议替代包。
用户具有 field role_id 和对应的查找表
1.2.1
2020-05-12 21:49 UTC
Requires
- php: >=7.0
- illuminate/database: ^5.4 || ^6.0
- illuminate/http: ^5.4 || ^6.0
- illuminate/support: ^5.4 || ^6.0
- saritasa/php-common: ^1.0
Requires (Dev)
- phpunit/phpunit: ^6.0
- squizlabs/php_codesniffer: ^3.5
Conflicts
- bican/roles: ^2.0
README
Laravel 应用程序的简化用户角色实现:用户具有 role_id 字段,存在对应的角色查找表。
用法
安装 saritasa/roles-simple
包
$ composer require saritasa/roles-simple
如果使用 Laravel 5.4 或更低版本,或者 5.5+ 且已禁用 包发现,则在 config/app.php
中添加 RolesServiceProvider 服务提供者
'providers' => array( // ... Saritasa\Roles\RolesServiceProvider::class, )
然后发布数据库迁移
php artisan vendor:publish --provider=Saritasa\\Roles\\RolesServiceProvider
可用类
HasRoles
提供 hasRole 方法;
示例:
class User extends Model implements IHasRoles { uses HasRoles }
然后在代码的某个地方
if ($user->hasRole(Roles::ADMIN)) { ... }} $user->role->name;
hasRole($role) 方法可以接受角色 ID(整数)或角色 slug(字符串)。使用角色 ID 会更快一些,因为它不需要从查找表中读取角色记录。
角色(模型)
您可以使用内置类 Saritasa\Roles\Models\Role 在迁移中列出模型或创建新的角色,或在代码中。
角色模型包含 3 个字段
- id(整数)- 主键
- name(字符串)- 应对用户可见并可更改,根据需要。可以包含任何字符(包括空格),大小写不敏感。不要使用角色名称作为标识符(例如,用于搜索)。
- slug(字符串)- 可读的角色标识符,应保持不变,而名称可以更改。您可以在代码中通过 slug 引用角色(例如,在 hasRole() 方法中)。建议将 slugs 保持小写,使用下划线或破折号代替空格。
class AddRoles extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Role::firstOrCreate(['name' => 'User', 'slug' => 'user']);
Role::firstOrCreate(['name' => 'Admin', 'slug' => 'admin']);
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Role::whereSlug('user')->delete();
Role::whereSlug('admin')->delete();
}
}
角色(枚举)
包包含枚举 Saritasa\Roles\Enums\Roles,其中包含 2 个预定义角色:用户和管理员,这适用于许多应用程序。
但您不仅限于这些角色,您可以定义自己的枚举(扩展此枚举或从头开始创建)并使用它。
class Roles extends Enum
{
const USER = 1;
const SUPER_ADMIN = 2;
const SCHOOL_ADMIN = 3;
}
中间件
您可以在路由中使用中间件来限制对某些页面的访问
Router::get('/admin', [
'as' => 'admin.dashboard',
'middlware' => 'role:admin'
]
使用别名注册的中间件由服务提供者注册,无需手动注册。
格式为 role:role_slug1,role_slug2,role_slug3。
如果用户没有所需的任何角色,将抛出 AccessDeniedHttpException 异常
贡献
- 创建分支,检出它
- 像往常一样本地开发。 代码必须遵循 PSR-1, PSR-2 - 运行 PHP_CodeSniffer 以确保代码遵循样式指南
- 使用单元测试覆盖添加的功能 并运行 PHPUnit 以确保所有测试通过
- 更新 README.md 以描述新的或更改的功能
- 在 CHANGES.md 文件中添加更改描述。使用 语义化版本控制 约定来确定下一个版本号。
- 准备好后,创建 pull request
创建快捷方式
如果您已安装GNU Make,则可以使用以下快捷方式
make cs
(代替php vendor/bin/phpcs
)- 使用PHP_CodeSniffer执行静态代码分析,以检查代码风格make csfix
(代替php vendor/bin/phpcbf
)- 使用PHP_CodeSniffer自动修复代码风格违规(例如,PSR-2代码格式化违规),在可能的情况下make test
(代替php vendor/bin/phpunit
)- 使用PHPUnit运行测试make install
- 代替composer install
make all
或不带参数的make
- 依次调用上述的install
、cs
、test
任务 - 项目将被组装,通过linter进行检查,并通过单个命令进行测试