Merge pull request #68 from Dobmod/master
feat: add ptype parameter to artisan commands
This commit is contained in:
commit
783c4017b0
|
@ -335,6 +335,8 @@ Adds a role for a user:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
php artisan role:assign eve writer
|
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
|
### Using cache
|
||||||
|
|
|
@ -17,7 +17,8 @@ class RoleAssign extends Command
|
||||||
*/
|
*/
|
||||||
protected $signature = 'role:assign
|
protected $signature = 'role:assign
|
||||||
{user : the identifier of user}
|
{user : the identifier of user}
|
||||||
{role : the name of role}';
|
{role : the name of role}
|
||||||
|
{--ptype= : the ptype of role}';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The console command description.
|
* The console command description.
|
||||||
|
@ -35,8 +36,9 @@ class RoleAssign extends Command
|
||||||
{
|
{
|
||||||
$user = $this->argument('user');
|
$user = $this->argument('user');
|
||||||
$role = $this->argument('role');
|
$role = $this->argument('role');
|
||||||
|
$ptype = $this->option('ptype') ?: 'g';
|
||||||
|
|
||||||
$ret = Enforcer::addRoleForUser($user, $role);
|
$ret = Enforcer::addNamedGroupingPolicy($ptype, $user, $role);
|
||||||
if ($ret) {
|
if ($ret) {
|
||||||
$this->info('Added `'.$role.'` role to `'.$user.'` successfully');
|
$this->info('Added `'.$role.'` role to `'.$user.'` successfully');
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace Lauthz\Tests\Commands;
|
namespace Lauthz\Tests\Commands;
|
||||||
|
|
||||||
|
use Casbin\Model\Model;
|
||||||
use Lauthz\Facades\Enforcer;
|
use Lauthz\Facades\Enforcer;
|
||||||
use Lauthz\Tests\TestCase;
|
use Lauthz\Tests\TestCase;
|
||||||
use Illuminate\Foundation\Testing\DatabaseMigrations;
|
use Illuminate\Foundation\Testing\DatabaseMigrations;
|
||||||
|
@ -19,5 +20,21 @@ class RoleAssignTest extends TestCase
|
||||||
$exitCode = Artisan::call('role:assign', ['user' => 'eve', 'role' => 'writer']);
|
$exitCode = Artisan::call('role:assign', ['user' => 'eve', 'role' => 'writer']);
|
||||||
$this->assertFalse(0 === $exitCode);
|
$this->assertFalse(0 === $exitCode);
|
||||||
$this->assertTrue(Enforcer::hasRoleForUser('eve', 'writer'));
|
$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