Skip to content

Commit e73cb8c

Browse files
committed
First commit
1 parent 5b78894 commit e73cb8c

18 files changed

+1326
-201
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
build
2+
vendor
3+
.idea
4+
.vscode
5+
.phpunit*
6+
composer.lock

.travis.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
language: php
2+
3+
sudo: false
4+
5+
php:
6+
- 7.1
7+
- 7.2
8+
- 7.3
9+
10+
services:
11+
- mysql
12+
13+
before_install:
14+
- travis_retry composer self-update
15+
- mysql -e 'create database if not exists tauthz;'
16+
17+
install:
18+
- travis_retry composer install --prefer-dist --dev --no-suggest --no-interaction
19+
20+
script:
21+
- vendor/bin/phpunit --version
22+
- mkdir -p build/logs
23+
- vendor/bin/phpunit
24+
25+
after_script:
26+
- travis_retry vendor/bin/php-coveralls -v

LICENSE

Lines changed: 201 additions & 201 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
<h1 align="center">
2+
ThinkPHP 6.0 Authorization
3+
</h1>
4+
5+
<p align="center">
6+
<strong>Think-authz 是一个专为ThinkPHP6.0打造的授权(角色和权限控制)工具</strong>
7+
</p>
8+
9+
<p align="center">
10+
<a href="https://travis-ci.org/php-casbin/think-authz">
11+
<img src="https://travis-ci.org/php-casbin/think-authz.svg?branch=master" alt="Build Status">
12+
</a>
13+
<a href="https://coveralls.io/github/php-casbin/think-authz">
14+
<img src="https://coveralls.io/repos/github/php-casbin/think-authz/badge.svg" alt="Coverage Status">
15+
</a>
16+
<a href="https://packagist.org/packages/casbin/think-authz">
17+
<img src="https://poser.pugx.org/casbin/think-authz/v/stable" alt="Latest Stable Version">
18+
</a>
19+
<a href="https://packagist.org/packages/casbin/think-authz">
20+
<img src="https://poser.pugx.org/casbin/think-authz/downloads" alt="Total Downloads">
21+
</a>
22+
<a href="https://packagist.org/packages/casbin/think-authz">
23+
<img src="https://poser.pugx.org/casbin/think-authz/license" alt="License">
24+
</a>
25+
</p>
26+
27+
它基于 [Casbin](https://github.com/php-casbin/php-casbin), 一个强大的、高效的开源访问控制框架,它支持基于各种访问控制模型的权限管理。
28+
29+
在这之前,你需要了解 `Casbin` 的相关知识.
30+
31+
* [安装](#安装)
32+
* [用法](#用法)
33+
* [快速开始](#快速开始)
34+
* [使用 Enforcer Api](#使用-enforcer-api)
35+
* [Using a middleware](#using-a-middleware)
36+
* [basic Enforcer Middleware](#basic-enforcer-middleware)
37+
* [HTTP Request Middleware ( RESTful is also supported )](#http-request-middleware--restful-is-also-supported-)
38+
* [Using commands](#using-commands)
39+
* [Cache](#using-cache)
40+
* [感谢](#thinks)
41+
* [License](#license)
42+
43+
## 安装
44+
45+
使用`composer`安装:
46+
47+
```
48+
composer require casbin/think-authz
49+
```
50+
51+
注册服务,在应用的全局公共文件service.php中加入:
52+
53+
```php
54+
return [
55+
// ...
56+
57+
tauthz\TauthzService::class,
58+
];
59+
```
60+
61+
发布配置文件和数据库迁移文件:
62+
63+
```
64+
php think tauthz:publish
65+
```
66+
67+
这将自动生成 `config/tauthz-rbac-model.conf``config/tauthz.php` 文件。
68+
69+
70+
执行迁移工具(确保数据库配置信息正确):
71+
72+
```
73+
php think migrate:run
74+
```
75+
76+
这将创将创建名为 `rules` 的表。
77+
78+
79+
## 用法
80+
81+
### 快速开始
82+
83+
安装成功后,可以这样使用:
84+
85+
```php
86+
87+
use tauthz\facade\Enforcer;
88+
89+
// adds permissions to a user
90+
Enforcer::addPermissionForUser('eve', 'articles', 'read');
91+
// adds a role for a user.
92+
Enforcer::addRoleForUser('eve', 'writer');
93+
// adds permissions to a rule
94+
Enforcer::addPolicy('writer', 'articles','edit');
95+
96+
```
97+
98+
You can check if a user has a permission like this:
99+
100+
```php
101+
// to check if a user has permission
102+
if (Enforcer::enforce("eve", "articles", "edit")) {
103+
// permit eve to edit articles
104+
} else {
105+
// deny the request, show an error
106+
}
107+
108+
```
109+
110+
### 使用 Enforcer Api
111+
112+
It provides a very rich api to facilitate various operations on the Policy:
113+
114+
Gets all roles:
115+
116+
```php
117+
Enforcer::getAllRoles(); // ['writer', 'reader']
118+
```
119+
120+
Gets all the authorization rules in the policy.:
121+
122+
```php
123+
Enforcer::getPolicy();
124+
```
125+
126+
Gets the roles that a user has.
127+
128+
```php
129+
Enforcer::getRolesForUser('eve'); // ['writer']
130+
```
131+
132+
Gets the users that has a role.
133+
134+
```php
135+
Enforcer::getUsersForRole('writer'); // ['eve']
136+
```
137+
138+
Determines whether a user has a role.
139+
140+
```php
141+
Enforcer::hasRoleForUser('eve', 'writer'); // true or false
142+
```
143+
144+
Adds a role for a user.
145+
146+
```php
147+
Enforcer::addRoleForUser('eve', 'writer');
148+
```
149+
150+
Adds a permission for a user or role.
151+
152+
```php
153+
// to user
154+
Enforcer::addPermissionForUser('eve', 'articles', 'read');
155+
// to role
156+
Enforcer::addPermissionForUser('writer', 'articles','edit');
157+
```
158+
159+
Deletes a role for a user.
160+
161+
```php
162+
Enforcer::deleteRoleForUser('eve', 'writer');
163+
```
164+
165+
Deletes all roles for a user.
166+
167+
```php
168+
Enforcer::deleteRolesForUser('eve');
169+
```
170+
171+
Deletes a role.
172+
173+
```php
174+
Enforcer::deleteRole('writer');
175+
```
176+
177+
Deletes a permission.
178+
179+
```php
180+
Enforcer::deletePermission('articles', 'read'); // returns false if the permission does not exist (aka not affected).
181+
```
182+
183+
Deletes a permission for a user or role.
184+
185+
```php
186+
Enforcer::deletePermissionForUser('eve', 'articles', 'read');
187+
```
188+
189+
Deletes permissions for a user or role.
190+
191+
```php
192+
// to user
193+
Enforcer::deletePermissionsForUser('eve');
194+
// to role
195+
Enforcer::deletePermissionsForUser('writer');
196+
```
197+
198+
Gets permissions for a user or role.
199+
200+
```php
201+
Enforcer::getPermissionsForUser('eve'); // return array
202+
```
203+
204+
Determines whether a user has a permission.
205+
206+
```php
207+
Enforcer::hasPermissionForUser('eve', 'articles', 'read'); // true or false
208+
```
209+
210+
### Using a middleware
211+
212+
敬请期待...
213+
214+
#### basic Enforcer Middleware
215+
216+
217+
218+
#### HTTP Request Middleware ( RESTful is also supported )
219+
220+
221+
```
222+
```
223+
224+
### Using artisan commands
225+
226+
敬请期待...
227+
228+
### Using cache
229+
230+
敬请期待...
231+
232+
## 感谢
233+
234+
[Casbin](https://github.com/php-casbin/php-casbin) . You can find the full documentation of Casbin [on the website](https://casbin.org/).
235+
236+
## License
237+
238+
This project is licensed under the [Apache 2.0 license](LICENSE).

composer.json

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
{
2+
"name": "casbin/think-authz",
3+
"keywords": ["thinkphp", "casbin", "permission", "access-control", "authorization", "rbac", "acl", "abac", "authz"],
4+
"description": "An authorization library that supports access control models like ACL, RBAC, ABAC in ThinkPHP 6. ",
5+
"authors": [
6+
{
7+
"name": "TechLee",
8+
"email": "[email protected]"
9+
}
10+
],
11+
"license": "Apache-2.0",
12+
"require": {
13+
"casbin/casbin": ">=0.2.1",
14+
"topthink/framework": "6.0.x-dev",
15+
"topthink/think-migration": "^3.0"
16+
},
17+
"require-dev": {
18+
"phpunit/phpunit": "~7.0",
19+
"php-coveralls/php-coveralls": "^2.1",
20+
"mockery/mockery": "^1.0",
21+
"topthink/think": "6.0.x-dev"
22+
},
23+
"autoload": {
24+
"psr-4": {
25+
"tauthz\\": "src/"
26+
}
27+
},
28+
"autoload-dev": {
29+
"psr-4": {
30+
"tauthz\\tests\\": "tests/"
31+
}
32+
},
33+
"config": {
34+
"preferred-install": "dist"
35+
},
36+
"extra": {
37+
"think": {
38+
"services": [
39+
"tauthz\\TauthzService"
40+
]
41+
}
42+
}
43+
}

config/tauthz-rbac-model.conf

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
[request_definition]
2+
r = sub, obj, act
3+
4+
[policy_definition]
5+
p = sub, obj, act
6+
7+
[role_definition]
8+
g = _, _
9+
10+
[policy_effect]
11+
e = some(where (p.eft == allow))
12+
13+
[matchers]
14+
m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act

config/tauthz.php

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?php
2+
return [
3+
/*
4+
*Default Tauthz enforcer
5+
*/
6+
'default' => 'basic',
7+
8+
'log' => [
9+
// changes whether Lauthz will log messages to the Logger.
10+
'enabled' => false,
11+
// Casbin Logger
12+
'logger' => tauthz\Logger::class,
13+
],
14+
15+
'enforcers' => [
16+
'basic' => [
17+
/*
18+
* Model 设置
19+
*/
20+
'model' => [
21+
// 可选值: "file", "text"
22+
'config_type' => 'file',
23+
'config_file_path' => config_path().'tauthz-rbac-model.conf',
24+
'config_text' => '',
25+
],
26+
27+
// 适配器 .
28+
'adapter' => tauthz\adapter\DatabaseAdapter::class,
29+
30+
/*
31+
* 数据库设置.
32+
*/
33+
'database' => [
34+
// 数据库连接名称,不填为默认配置.
35+
'connection' => '',
36+
// 策略表名(不含表前缀)
37+
'rules_name' => 'rules',
38+
// 策略表完整名称.
39+
'rules_table' => null,
40+
],
41+
],
42+
],
43+
];

0 commit comments

Comments
 (0)