anroots/db-acl

该包已被废弃且不再维护。没有建议的替代包。

基于数据库的ACL模块,适用于Kohana 3.3。

安装量: 1,088

依赖项: 0

建议者: 0

安全: 0

星标: 18

关注者: 6

分支: 4

开放问题: 0

类型:kohana-module

1.0.1 2013-03-27 12:25 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:22:20 UTC


README

基于数据库的ACL模块,适用于Kohana 3.3 / PHP 5.4。用户通过其角色获得执行某些操作的权利。每个角色可以有多个权限。您可以根据需要,在数据库中定义新的角色和权限。

实际上,我并不推荐使用此模块,除非您确实希望角色/权限管理在数据库中发生(某些项目需要通过GUI由管理员用户管理权限)。对于替代方案(以及更好的实现),请参阅https://github.com/vendo/acl

依赖项

  1. PHP >= 5.4
  2. Kohana >= 3.3
  3. 默认数据库、认证和ORM模块

用法

// ...
public function save_customer() {
	$current_user = Auth::instance()->get_user();

	if (!$current_user->can(Permission::EDIT_CUSTOMERS)) {
		throw new Authorization_Exception();
	}

	// Save the Customer ORM model
	$this->save();
}
// ...

定义权限

在开发应用程序时,在permissions表中创建新条目。在代码中,将权限与角色关联并检查用户是否有权执行某些操作。

权限常量

在您的APPPATH中覆盖Permission以定义权限常量。常量值对应于permissions表的id列。

<?php
class Model_Permission extends ACL_Model_Permission {
	const EDIT_USERS = 1;
	const ADD_NEW_POST = 2;
}

$user->can(Model_Permission::EDIT_USERS);

检查权限

  • $user->can($permission); // 拥有该权限
  • $user->has_permissions(array $permissions); // 拥有所有指定的权限
  • $user->has_any_permission(array $permission); // 拥有指定的任一权限

安装

  • 将文件添加到您的模块文件夹

作为Git子模块

git clone git://github.com/anroots/kohana-db-acl.git modules/db-acl

作为Composer依赖项

{
	"require": {
		"php": ">=5.4.0",
		"composer/installers": "*",
		"anroots/db-acl":"1.*"
	}
}
  • 在bootstrap.php中启用(在auth/orm模块之上/之前)
  • 运行create-tables.sql(如果您尚未运行,请运行orm/auth-schema-*.sql)
  • 确保您的Model_User(如果已覆盖)使用ACL_Trait_User特性
  • 创建一些权限,并在Model_User上调用其中一个权限方法