Skip to content

Commit f302d32

Browse files
committed
permissions are now group by with parent field on permission table
1 parent 0ffefe9 commit f302d32

File tree

11 files changed

+33
-12
lines changed

11 files changed

+33
-12
lines changed

.phpunit.result.cache

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ in as a user and an admin, without conflicts!
4747
15. While creating role, permissions also stored
4848
16. adminFormRequest is now having role_ids instead of role_id
4949
17. while store or update admin, directPermissions can also be synced
50+
18. All permissions are group by
5051

5152
## Installation
5253

src/Console/Commands/SeedCmd.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ protected function createAndLinkPermissionsTo($role)
8080
foreach ($tasks as $task) {
8181
foreach ($models as $model) {
8282
$name = "{$task}{$model}";
83-
$permission = factory($this->permissionModel)->create(['name' => $name]);
83+
$permission = factory($this->permissionModel)->create(['name' => $name, 'parent'=>$model]);
8484
$role->addPermission([$permission->id]);
8585
}
8686
}

src/Http/Controllers/PermissionController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class PermissionController extends Controller
1616
*/
1717
public function index()
1818
{
19-
return response(['data' => Permission::all()], 200);
19+
return response(['data' => Permission::all()->groupBy('parent')], 200);
2020
}
2121

2222
/**

src/Http/Resources/RoleResource.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ public function toArray($request)
2020
'created_at' => $this->created_at->diffForHumans(),
2121
'admins_attached'=> $this->admins->count(),
2222
'permissions' => $this->permissions->map(function ($permission) {
23-
return $permission->only('id', 'name');
24-
}),
23+
return $permission->only('id', 'name', 'parent');
24+
})->groupBy('parent'),
2525
];
2626
}
2727
}

src/Model/Permission.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
class Permission extends Model
88
{
9-
protected $fillable = ['name', ];
9+
protected $fillable = ['name', 'parent'];
1010

1111
public function roles()
1212
{

src/Traits/hasPermissions.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,11 @@ public function removeDirectPermission($permissionId)
6464
public function allPermissions()
6565
{
6666
$byRole = $this->permissionsByRole()->map(function ($role) {
67-
return $role->only(['id', 'name']);
68-
})->toArray();
67+
return $role->only(['id', 'name', 'parent']);
68+
})->groupBy('parent')->toArray();
6969
$direct = $this->directPermissions->map(function ($role) {
70-
return $role->only(['id', 'name']);
71-
})->toArray();
70+
return $role->only(['id', 'name', 'parent']);
71+
})->groupBy('parent')->toArray();
7272
return array_merge($direct, $byRole);
7373
}
7474
}

src/database/migrations/2019_12_01_120121_create_permissions_table.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public function up()
1616
Schema::create('permissions', function (Blueprint $table) {
1717
$table->bigIncrements('id');
1818
$table->string('name', 200)->index();
19+
$table->string('parent', 200)->nullable();
1920
$table->timestamps();
2021
});
2122
}

tests/Feature/PermissionTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,6 @@ public function api_can_give_admin_with_all_its_permissions()
6262
$permission = $this->create_permission();
6363
$admin->addDirectPermission($permission->id);
6464
$res = $this->getJson(route('admin.all'))->json();
65-
$this->assertEquals($permission->name, $res['data'][0]['permissions'][0]['name']);
65+
$this->assertEquals($permission->name, $res['data'][0]['permissions'][''][0]['name']);
6666
}
6767
}

tests/TestCase.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ protected function createAndLinkPermissionsTo($role)
8080
foreach ($tasks as $task) {
8181
foreach ($models as $model) {
8282
$name = "{$task}{$model}";
83-
$permission = factory(Permission::class)->create(['name' => $name]);
83+
$permission = factory(Permission::class)->create(['name' => $name, 'parent'=>$model]);
8484
$role->addPermission([$permission->id]);
8585
}
8686
}

0 commit comments

Comments
 (0)