定制 m00nk/yii2-rbac 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

m00nk/yii2-rbac

最新稳定版本:2.1.1

Composer 安装命令:

composer require m00nk/yii2-rbac

包简介

Silmple RBAC (like in Yii)

README 文档

README

Мне не понравилась стандартная реализация RBAC в Yii2, слишком уж они все усложнили. В частности, для не очень больших проектов, где прав доступа не очень много и они в процессе жизни приложения практически не меняются, этот подход на мой взгляд слишком громоздок. Поэтому я решил запилить реализацию RBAC на основе файлов, похожую на ту, что была в первом Yii.

Этот код служит только для проверки прав доступа. Здесь нет возможности программно создавать иерархию прав и сохранять ее. Иерархия описывается вручную в файле настроек.

Инсталляция

Устанавливается с посощью composer.

Для установки выполняем команду

php composer.phar require --prefer-dist m00nk/yii2-rbac  "*"

или добавляем

"m00nk/yii2-rbac": "*"

в разделе require вашего composer.json файла.

Настройка

'components' => [
    ...
    'authManager' => [
		  'class' => 'm00nk\rbac\AuthManager',
		  'authFile' => '@app/config/auth.php' // путь к файлу с описанием иерархии прав доступа
		],
		...
],

Пример файла прав доступа (@app/config/auth.php)

return [

	// PERMISSIONS
    //-------------------------

	'permCreatePost' => [
		'type' => 0, // permission
		'description' => 'право на создание поста в блоге'
	],

	'permUpdatePost' => [
		'type' => 0,
		'description' => 'право на редактирование поста в блоге'
	],

	// TASKS
    //-------------------------

	'permUpdateOwnPost' => [
		'type' => 1, // task
		'description' => 'право на редактирование СЫВОЕГО поста в блоге'
		'rule' => 'return app\\models\\Post::mayEditPost($params["id"]);',
		'children' => [
			'permUpdatePost'
		]
	],

	// ROLES
    //-------------------------

	'author' => [
		'type' => 2, // role
		'description' => 'автор - может только создавать посты и редактировать только свои'
		'children' => [
			'permCreatePost',
			'permUpdateOwnPost'
		]
	],

	'moderator' => [
		'type' => 2, // role
		'description' => 'модератор - может только редактировать посты, зато чьи угодно'
		'children' => [
			'permUpdatePost'
		]
	],

];

Начиная с версии 2.1.0 можно в качестве правил использовать инлайн-функции:

'rule' => function($params){ return app\models\Post::mayEditPost($params["id"]); },

Проверка прав в коде

Проверка осуществлается стандартным способом:

// проверяем, может ли юзер создавать посты
if(\Yii::$app->user->can('permCreatePost')) ...

// проверяем, может ли юзер редактировать текущий пост
// обратите внимание, что проверяется именно permUpdatePost, а не permUpdateOwnPost
if(\Yii::$app->user->can('permUpdatePost', ['id' => $post->id])) ...

统计信息

  • 总下载量: 48
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2015-05-06