Skip to content

Commit 783c401

Browse files
authored
Merge pull request #68 from Dobmod/master
feat: add ptype parameter to artisan commands
2 parents 124ab91 + 718f846 commit 783c401

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,8 @@ Adds a role for a user:
335335

336336
```bash
337337
php artisan role:assign eve writer
338+
# Specify the ptype of the role assignment by using the --ptype option.
339+
php artisan role:assign eve writer --ptype=g2
338340
```
339341

340342
### Using cache

src/Commands/RoleAssign.php

+4-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ class RoleAssign extends Command
1717
*/
1818
protected $signature = 'role:assign
1919
{user : the identifier of user}
20-
{role : the name of role}';
20+
{role : the name of role}
21+
{--ptype= : the ptype of role}';
2122

2223
/**
2324
* The console command description.
@@ -35,8 +36,9 @@ public function handle()
3536
{
3637
$user = $this->argument('user');
3738
$role = $this->argument('role');
39+
$ptype = $this->option('ptype') ?: 'g';
3840

39-
$ret = Enforcer::addRoleForUser($user, $role);
41+
$ret = Enforcer::addNamedGroupingPolicy($ptype, $user, $role);
4042
if ($ret) {
4143
$this->info('Added `'.$role.'` role to `'.$user.'` successfully');
4244
} else {

tests/Commands/RoleAssignTest.php

+17
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Lauthz\Tests\Commands;
44

5+
use Casbin\Model\Model;
56
use Lauthz\Facades\Enforcer;
67
use Lauthz\Tests\TestCase;
78
use Illuminate\Foundation\Testing\DatabaseMigrations;
@@ -19,5 +20,21 @@ public function testHandle()
1920
$exitCode = Artisan::call('role:assign', ['user' => 'eve', 'role' => 'writer']);
2021
$this->assertFalse(0 === $exitCode);
2122
$this->assertTrue(Enforcer::hasRoleForUser('eve', 'writer'));
23+
24+
$model = Model::newModel();
25+
$model->addDef('r', 'r', 'sub, obj, act');
26+
$model->addDef('p', 'p', 'sub, obj, act');
27+
$model->addDef('g', 'g', '_, _');
28+
$model->addDef('g', 'g2', '_, _');
29+
$model->addDef('e', 'e', 'some(where (p.eft == allow))');
30+
$model->addDef('m', 'm', 'g(r.sub, p.sub) && g2(r.obj, p.obj) && r.act == p.act');
31+
Enforcer::setModel($model);
32+
Enforcer::loadPolicy();
33+
$this->assertFalse(Enforcer::hasNamedGroupingPolicy('g2', 'eve', 'writer'));
34+
$exitCode = Artisan::call('role:assign', ['user' => 'eve', 'role' => 'writer', '--ptype' => 'g2']);
35+
$this->assertTrue(0 === $exitCode);
36+
$exitCode = Artisan::call('role:assign', ['user' => 'eve', 'role' => 'writer', '--ptype' => 'g2']);
37+
$this->assertFalse(0 === $exitCode);
38+
$this->assertTrue(Enforcer::hasNamedGroupingPolicy('g2', 'eve', 'writer'));
2239
}
2340
}

0 commit comments

Comments
 (0)