feat: add ptype parameter to artisan commands and updated unit test
This commit is contained in:
parent
124ab91abb
commit
718f846e77
|
@ -335,6 +335,8 @@ Adds a role for a user:
|
|||
|
||||
```bash
|
||||
php artisan role:assign eve writer
|
||||
# Specify the ptype of the role assignment by using the --ptype option.
|
||||
php artisan role:assign eve writer --ptype=g2
|
||||
```
|
||||
|
||||
### Using cache
|
||||
|
|
|
@ -17,7 +17,8 @@ class RoleAssign extends Command
|
|||
*/
|
||||
protected $signature = 'role:assign
|
||||
{user : the identifier of user}
|
||||
{role : the name of role}';
|
||||
{role : the name of role}
|
||||
{--ptype= : the ptype of role}';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
|
@ -35,8 +36,9 @@ class RoleAssign extends Command
|
|||
{
|
||||
$user = $this->argument('user');
|
||||
$role = $this->argument('role');
|
||||
$ptype = $this->option('ptype') ?: 'g';
|
||||
|
||||
$ret = Enforcer::addRoleForUser($user, $role);
|
||||
$ret = Enforcer::addNamedGroupingPolicy($ptype, $user, $role);
|
||||
if ($ret) {
|
||||
$this->info('Added `'.$role.'` role to `'.$user.'` successfully');
|
||||
} else {
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace Lauthz\Tests\Commands;
|
||||
|
||||
use Casbin\Model\Model;
|
||||
use Lauthz\Facades\Enforcer;
|
||||
use Lauthz\Tests\TestCase;
|
||||
use Illuminate\Foundation\Testing\DatabaseMigrations;
|
||||
|
@ -19,5 +20,21 @@ class RoleAssignTest extends TestCase
|
|||
$exitCode = Artisan::call('role:assign', ['user' => 'eve', 'role' => 'writer']);
|
||||
$this->assertFalse(0 === $exitCode);
|
||||
$this->assertTrue(Enforcer::hasRoleForUser('eve', 'writer'));
|
||||
|
||||
$model = Model::newModel();
|
||||
$model->addDef('r', 'r', 'sub, obj, act');
|
||||
$model->addDef('p', 'p', 'sub, obj, act');
|
||||
$model->addDef('g', 'g', '_, _');
|
||||
$model->addDef('g', 'g2', '_, _');
|
||||
$model->addDef('e', 'e', 'some(where (p.eft == allow))');
|
||||
$model->addDef('m', 'm', 'g(r.sub, p.sub) && g2(r.obj, p.obj) && r.act == p.act');
|
||||
Enforcer::setModel($model);
|
||||
Enforcer::loadPolicy();
|
||||
$this->assertFalse(Enforcer::hasNamedGroupingPolicy('g2', 'eve', 'writer'));
|
||||
$exitCode = Artisan::call('role:assign', ['user' => 'eve', 'role' => 'writer', '--ptype' => 'g2']);
|
||||
$this->assertTrue(0 === $exitCode);
|
||||
$exitCode = Artisan::call('role:assign', ['user' => 'eve', 'role' => 'writer', '--ptype' => 'g2']);
|
||||
$this->assertFalse(0 === $exitCode);
|
||||
$this->assertTrue(Enforcer::hasNamedGroupingPolicy('g2', 'eve', 'writer'));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue