Skip to content

Commit 145e562

Browse files
committed
feat: LaravelRuleModel update
1 parent 682a657 commit 145e562

File tree

4 files changed

+69
-32
lines changed

4 files changed

+69
-32
lines changed

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,16 +96,17 @@ Permission::addPolicy('writer', 'articles','edit');
9696
你可以检查一个用户是否拥有某个权限:
9797

9898
```php
99-
if (Permission::enforce("eve", "articles", "edit")) {
99+
if (\Casbin\WebmanPermission\Permission::enforce("eve", "articles", "edit")) {
100100
echo '恭喜你!通过权限认证';
101101
} else {
102102
echo '对不起,您没有该资源访问权限';
103103
}
104104
```
105105

106-
### 多套配置
106+
### 多套驱动配置
107+
107108
```php
108-
$permission = Permission::client("restful_conf")
109+
$permission = \Casbin\WebmanPermission\Permission::driver("restful_conf");
109110
// adds permissions to a user
110111
$permission->addPermissionForUser('eve', 'articles', 'read');
111112
// adds a role for a user.

src/Model/LaravelRuleModel.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ class LaravelRuleModel extends Model
3434
protected $fillable = ['ptype', 'v0', 'v1', 'v2', 'v3', 'v4', 'v5'];
3535

3636

37-
/** @var string $driver */
38-
protected string $driver;
37+
/** @var string|null $driver */
38+
protected ?string $driver;
3939

4040
/**
4141
* 架构函数
42-
* @access public
43-
* @param array $data 数据
42+
* @param array $data
43+
* @param string|null $driver
4444
*/
4545
public function __construct(array $data = [], ?string $driver = null)
4646
{

src/Permission.php

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ class Permission
5555
* @throws CasbinException
5656
* @author Lyt8384
5757
*/
58-
public static function client(?string $driver = null): Enforcer
58+
public static function driver(?string $driver = null): Enforcer
5959
{
60-
$driver = $driver ?? config('plugin.casbin.webman-permission.permission.default');
61-
$config = config('plugin.casbin.webman-permission.permission.' . $driver);
60+
$driver = $driver ?? self::getDefaultDriver();
61+
$config = self::getConfig($driver);
6262

6363
if (isset(static::$_manager[$driver])) {
6464
return static::$_manager[$driver];
@@ -81,14 +81,50 @@ public static function client(?string $driver = null): Enforcer
8181
}
8282

8383
/**
84-
* @param $name
84+
* @desc: 获取所有驱动
85+
* @return Enforcer[]
86+
* @author Tinywan(ShaoBo Wan)
87+
*/
88+
public static function getAllDriver(): array
89+
{
90+
return static::$_manager;
91+
}
92+
93+
/**
94+
* @desc: 默认驱动
95+
* @return mixed
96+
* @author Tinywan(ShaoBo Wan)
97+
*/
98+
public static function getDefaultDriver()
99+
{
100+
return self::getConfig('default');
101+
}
102+
103+
/**
104+
* @desc: 获取驱动配置
105+
* @param string|null $name 名称
106+
* @param null $default 默认值
107+
* @return mixed
108+
* @author Tinywan(ShaoBo Wan)
109+
*/
110+
public static function getConfig(string $name = null, $default = null)
111+
{
112+
if (!is_null($name)) {
113+
return config('plugin.casbin.webman-permission.permission.' . $name, $default);
114+
}
115+
return config('plugin.casbin.webman-permission.permission.default');
116+
}
117+
118+
/**
119+
* @desc: 静态调用
120+
* @param string $method
85121
* @param $arguments
86122
* @return mixed
87123
* @throws CasbinException
88124
* @author Tinywan(ShaoBo Wan)
89125
*/
90-
public static function __callStatic($name, $arguments)
126+
public static function __callStatic(string $method, $arguments)
91127
{
92-
return self::client()->{$name}(...$arguments);
128+
return self::driver()->{$method}(...$arguments);
93129
}
94130
}

tests/Adapter.php

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,36 +8,36 @@ trait Adapter
88
{
99
public function testAddOtherPolicy()
1010
{
11-
// var_dump(config('plugin.casbin.webman-permission.permission'));
12-
$this->assertTrue(Permission::client('other')->addPolicy('writer', 'articles', 'edit'));
13-
$this->assertTrue(Permission::client('other')->addPolicies([
11+
var_dump(config('plugin.casbin.webman-permission.permission'));
12+
$this->assertTrue(Permission::driver('other')->addPolicy('writer', 'articles', 'edit'));
13+
$this->assertTrue(Permission::driver('other')->addPolicies([
1414
['writer', 'articles', 'list'],
1515
['writer', 'articles', 'delete'],
1616
]));
1717

18-
$this->assertFalse(Permission::client('other')->addPolicies([
18+
$this->assertFalse(Permission::driver('other')->addPolicies([
1919
['writer', 'articles', 'list'],
2020
['writer', 'articles', 'delete'],
2121
]));
2222

23-
$this->assertTrue(Permission::client('other')->enforce('writer', 'articles', 'edit'));
24-
$this->assertTrue(Permission::client('other')->enforce('writer', 'articles', 'delete'));
25-
$this->assertFalse(Permission::client('other')->enforce('writer', 'articles', 'other'));
23+
$this->assertTrue(Permission::driver('other')->enforce('writer', 'articles', 'edit'));
24+
$this->assertTrue(Permission::driver('other')->enforce('writer', 'articles', 'delete'));
25+
$this->assertFalse(Permission::driver('other')->enforce('writer', 'articles', 'other'));
2626

27-
$this->assertTrue(Permission::client('other')->hasPolicy('writer', 'articles', 'edit'));
28-
$this->assertFalse(Permission::client('other')->hasPolicy('writer', 'articles', 'other'));
27+
$this->assertTrue(Permission::driver('other')->hasPolicy('writer', 'articles', 'edit'));
28+
$this->assertFalse(Permission::driver('other')->hasPolicy('writer', 'articles', 'other'));
2929

30-
$this->assertTrue(Permission::client('other')->removePolicy('writer', 'articles', 'edit'));
31-
$this->assertFalse(Permission::client('other')->hasPolicy('writer', 'articles', 'edit'));
32-
$this->assertFalse(Permission::client('other')->enforce('writer', 'articles', 'edit'));
30+
$this->assertTrue(Permission::driver('other')->removePolicy('writer', 'articles', 'edit'));
31+
$this->assertFalse(Permission::driver('other')->hasPolicy('writer', 'articles', 'edit'));
32+
$this->assertFalse(Permission::driver('other')->enforce('writer', 'articles', 'edit'));
3333
}
3434

3535
public function testAddOtherRoleForUser()
3636
{
37-
$this->assertFalse(Permission::client('other')->hasRoleForUser('eve', 'data2'));
38-
Permission::client('other')->addRoleForUser('eve', 'data2');
39-
$this->assertTrue(in_array('data2', Permission::client('other')->getAllRoles()));
40-
$this->assertTrue(Permission::client('other')->hasRoleForUser('eve', 'data2'));
37+
$this->assertFalse(Permission::driver('other')->hasRoleForUser('eve', 'data2'));
38+
Permission::driver('other')->addRoleForUser('eve', 'data2');
39+
$this->assertTrue(in_array('data2', Permission::driver('other')->getAllRoles()));
40+
$this->assertTrue(Permission::driver('other')->hasRoleForUser('eve', 'data2'));
4141
}
4242

4343
public function testAddPermissionForUser()
@@ -82,8 +82,8 @@ public function testAddRoleForUser()
8282

8383
public function testOtherAddPermissionForUser()
8484
{
85-
$this->assertFalse(Permission::client('other')->enforce('eve', 'data1', 'read'));
86-
Permission::client('other')->addPermissionForUser('eve', 'data1', 'read');
87-
$this->assertTrue(Permission::client('other')->enforce('eve', 'data1', 'read'));
85+
$this->assertFalse(Permission::driver('other')->enforce('eve', 'data1', 'read'));
86+
Permission::driver('other')->addPermissionForUser('eve', 'data1', 'read');
87+
$this->assertTrue(Permission::driver('other')->enforce('eve', 'data1', 'read'));
8888
}
8989
}

0 commit comments

Comments
 (0)