Skip to content

Commit 09093cd

Browse files
author
Mateus Junges
authored
Merge pull request mateusjunges#125 from mateusjunges/mateusjunges#124
Fixes mateusjunges#124
2 parents fcff771 + 7a2587b commit 09093cd

13 files changed

+253
-2
lines changed

CHANGELOG.md

+17-2
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,34 @@
11
# Changelog
22

33
All notable changes to `mateusjunges/laravel-acl` will be documented in this file.
4+
## 2.0.2
5+
#### In [UsersTrait.php](https://github.com/jungessolutions/laravel-acl/blob/master/src/Traits/UsersTrait.php):
6+
- Add option to use array as parameter for `syncPermissions()` method;
7+
- Add option to use array as parameter for `assignPermissions()` method;
8+
- Add option to use array as parameter for `assignGroup()` method;
9+
- Add option to use array as parameter for `revokePermissions()` method;
10+
- Add option to use array as parameter for `assignGroup()` method;
11+
- Add option to use array as parameter for `revokeGroup()` method;
12+
13+
#### In [GroupsTrait.php](https://github.com/mateusjunges/laravel-acl/blob/master/src/Traits/GroupsTrait.php):
14+
- Add option to use array as parameter for `syncPermissions()` method;
15+
- Add option to use array as parameter for `assignPermissions()` method;
16+
- Add option to use array as parameter for `revokePermissions()` method;
17+
- Add option to use array as parameter for `assignUser()` method;
18+
- Add option to use array as parameter for `removeUser()` method;
419

520
## 2.0.1
621
- Update composer.json for laravel 6.0
722

823
## 2.0.0
924
#### In [UsersTrait.php](https://github.com/jungessolutions/laravel-acl/blob/master/src/Traits/UsersTrait.php):
10-
- `hasAnyPermissions()`, `assignPermissions()`, `syncPermissions`, `revokePermissions()`,
25+
- `hasAnyPermissions()`, `assignPermissions()`, `syncPermissions()`, `revokePermissions()`,
1126
`assignGroup()`, `revokeGroup`, `hasAnyGroup()`, `hasAllGroups()` and `hasAllPermissions()`
1227
methods now works with non array params. You can [read the docs here](https://github.com/jungessolutions/laravel-acl#checking-for-permissions);
1328

1429
- Added eager loading for permissions checks.
1530

16-
#### In [GroupsTrait.php]():
31+
#### In [GroupsTrait.php](https://github.com/mateusjunges/laravel-acl/blob/master/src/Traits/GroupsTrait.php):
1732
- `assignPermissions()`, `syncPermissions()`, `revokePermissions()`,
1833
`assignUser()`, `removeUser()`, `hasAnyPermissions()` and `hasAllPermissions()`
1934
methods now works with non array params. You can [read the docs here](https://github.com/jungessolutions/laravel-acl#checking-for-permissions);

README.md

+82
Original file line numberDiff line numberDiff line change
@@ -199,14 +199,26 @@ one instance of permission model and a permission slug too.
199199
//With permission slugs:
200200
$user->assignPermissions('permission-slug-1', 'permission-slug-2');
201201

202+
//Using arrays:
203+
$user->assignPermissions(['permission-slug-1', 'permission-slug-2']);
204+
202205
//With permission ids:
203206
$user->assignPermissions(1, 2, 3);
204207

208+
//Using arrays:
209+
$user->assignPermissions([1, 2, 3]);
210+
205211
//With instances of permission model:
206212
$user->assignPermissions(Permission::find(1), Permission::find(2));
207213

214+
//Using arrays:
215+
$user->assignPermissions([Permission::find(1), Permission::find(2)]);
216+
208217
//With the three ways above combined:
209218
$user->assignPermissions(1, 'permission-slug', Permission::find(1));
219+
220+
//Using arrays:
221+
$user->assignPermissions([1, 'permission-slug', Permission::find(1)]);
210222
```
211223
Like as add permissions to user, you can add permissions to groups.
212224
To do this, you have the same method, and they can be used by the same way:
@@ -215,14 +227,26 @@ To do this, you have the same method, and they can be used by the same way:
215227
//With permission slugs:
216228
$group->assignPermissions('permission-slug-1', 'permission-slug-2');
217229

230+
//Using arrays:
231+
$group->assignPermissions(['permission-slug-1', 'permission-slug-2']);
232+
218233
//With permission ids:
219234
$group->assignPermissions(1, 2, 3);
220235

236+
//Using arrays:
237+
$group->assignPermissions([1, 2, 3]);
238+
221239
//With instances of permission model:
222240
$group->assignPermissions(Permission::find(1), Permission::find(2));
223241

242+
//Using arrays:
243+
$group->assignPermissions([Permission::find(1), Permission::find(2)]);
244+
224245
//With the three ways above combined:
225246
$group->assignPermissions(1, 'permission-slug', Permission::find(1));
247+
248+
//Using arrays:
249+
$group->assignPermissions([1, 'permission-slug', Permission::find(1)]);
226250
```
227251

228252
After add permissions to a group, you may want/need to add a user to a group.
@@ -234,36 +258,63 @@ You can add a group to a user, and use 4 different types of parameters:
234258
//Assign a group to a user, using group slugs:
235259
$user->assignGroup('group-slug-1', 'group-slug-2');
236260

261+
//Using arrays:
262+
$user->assignGroup(['group-slug-1', 'group-slug-2']);
263+
237264
//Assign a group to a user, using group ids:
238265
$user->assignGroup(1, 2, 3);
239266

267+
//Using arrays:
268+
$user->assignGroup([1, 2, 3]);
269+
240270
//Assign a group to a user, with instance of group models:
241271
$user->assignGroup(Group::find(1), Group::find(2));
242272

273+
//Using arrays:
274+
$user->assignGroup([Group::find(1), Group::find(2)]);
275+
243276
//Assign group to a user, combining the three methods above:
244277
$user->assignGroup(Group::find(1), 'group-slug-2', 3);
278+
279+
//Usign arrays:
280+
$user->assignGroup([Group::find(1), 'group-slug-2', 3]);
245281
```
246282
#### Second way:
247283
You can add a user to a group, and use 4 different types of parameters:
248284
```php
249285
//Assign a user to a group, with user names:
250286
$group->assignUser('User one', 'User two');
251287

288+
//Using arrays:
289+
$group->assignUser(['User one', 'User two']);
290+
252291
//Assign a user to a group, user ids:
253292
$group->assignUser(1, 2, 3);
254293

294+
//Using arrays:
295+
$group->assignUser([1, 2, 3]);
296+
255297
//Assign a user to a group, with instance of User models:
256298
$group->assignUser(User::find(1), User::find(2));
257299

300+
//Using arrays:
301+
$group->assignUser([User::find(1), User::find(2)]);
302+
258303
//Assign a user to a group combining the three methods above:
259304
$group->assignUser(User::find(1), 'User name', 3);
305+
306+
//Using arrays:
307+
$group->assignUser([User::find(1), 'User name', 3]);
260308
```
261309

262310
### Revoke permissions
263311
#### 1 - Revoke permissions from user
264312
You can revoke a user permission using the method below:
265313
```php
266314
$user->revokePermissions('permission-slug', 2, Permission::find(3));
315+
316+
//Or with arrays:
317+
$user->revokePermissions(['permission-slug', 2, Permission::find(3)]);
267318
```
268319
Like the methods to add or remove a group from a user, you can use as function parameter a
269320
the permission ids, permission slugs, instance of permission model, or,
@@ -273,6 +324,9 @@ combine these three ways.
273324
You can revoke a group permission using the method below:
274325
```php
275326
$group->revokePermissions('permission-slug', 2, Permission::find(3));
327+
328+
//Or with arrays:
329+
$group->revokePermissions(['permission-slug', 2, Permission::find(3)]);
276330
```
277331
Like the methods to add or remove a group from a user, you can use as function parameter
278332
the permission ids, permission slugs, instance of permission model, or,
@@ -283,6 +337,10 @@ You can remove a group from the user by using one of these methods:
283337
```php
284338
$user->revokeGroup('permission-slug', 2, Permission::find(3));
285339
$group->removeUser('User name', 2, User::find(3));
340+
341+
//Or with arrays:
342+
$user->revokeGroup(['permission-slug', 2, Permission::find(3)]);
343+
$group->removeUser(['User name', 2, User::find(3)]);
286344
```
287345
Like the methods to add or remove a group from a user, you can use as function parameter a
288346
group/user ids, group/user slugs, instance of group/user model , or,
@@ -399,14 +457,26 @@ The user permissions can synced with this method:
399457
//With permission id:
400458
$user->syncPermissions(1, 2, 4);
401459

460+
//Using array:
461+
$user->syncPermissions([1, 2, 4]);
462+
402463
//With permission slugs:
403464
$user->syncPermissions('permission-slug-1', 'permission-slug-2');
404465

466+
//Using arrays:
467+
$user->syncPermissions(['permission-slug-1', 'permission-slug-2']);
468+
405469
//With instance of permission model:
406470
$user->syncPermissions(Permission::find(1), Permission::find(2));
407471

472+
//Using arrays:
473+
$user->syncPermissions([Permission::find(1), Permission::find(2)]);
474+
408475
//Combining the three ways:
409476
$user->syncPermissions(1, 'permission-slug', Permission::find(3));
477+
478+
//Using arrays:
479+
$user->syncPermissions([1, 'permission-slug', Permission::find(3)]);
410480
```
411481

412482
## Syncing group permissions
@@ -415,14 +485,26 @@ The groups permissions can synced with this method:
415485
//With permission id:
416486
$group->syncPermissions(1, 2, 4);
417487

488+
//Usign arrays:
489+
$group->syncPermissions([1, 2, 4]);
490+
418491
//With permission slugs:
419492
$group->syncPermissions('permission-slug-1', 'permission-slug-2');
420493

494+
//Using arrays:
495+
$group->syncPermissions(['permission-slug-1', 'permission-slug-2']);
496+
421497
//With instance of permission model:
422498
$group->syncPermissions(Permission::find(1), Permission::find(2));
423499

500+
//Using arrays:
501+
$group->syncPermissions([Permission::find(1), Permission::find(2)]);
502+
424503
//Combining the three ways:
425504
$group->syncPermissions(1, 'permission-slug', Permission::find(3));
505+
506+
//Using arrays:
507+
$group->syncPermissions([1, 'permission-slug', Permission::find(3)]);
426508
```
427509

428510
## Some "shortcuts"

src/Traits/GroupsTrait.php

+19
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public function users()
6666
*/
6767
public function assignPermissions(...$permissions)
6868
{
69+
$permissions = $this->getCorrectParameter($permissions);
6970
$permissions = $this->convertToPermissionIds($permissions);
7071
if ($permissions->count() == 0) {
7172
return false;
@@ -84,6 +85,7 @@ public function assignPermissions(...$permissions)
8485
*/
8586
public function syncPermissions(...$permissions)
8687
{
88+
$permissions = $this->getCorrectParameter($permissions);
8789
$permissions = $this->convertToPermissionIds($permissions);
8890
if ($permissions->count() == 0) {
8991
return false;
@@ -102,6 +104,7 @@ public function syncPermissions(...$permissions)
102104
*/
103105
public function revokePermissions(...$permissions)
104106
{
107+
$permissions = $this->getCorrectParameter($permissions);
105108
$permissions = $this->getPermissionIds($permissions);
106109
$this->permissions()->detach($permissions);
107110

@@ -240,6 +243,7 @@ private function convertToUserId($users)
240243
*/
241244
public function assignUser(...$users)
242245
{
246+
$users = $this->getCorrectParameter($users);
243247
$users = $this->convertToUserId($users);
244248
if ($users->count() == 0) {
245249
return false;
@@ -258,6 +262,7 @@ public function assignUser(...$users)
258262
*/
259263
public function removeUser(...$users)
260264
{
265+
$users = $this->getCorrectParameter($users);
261266
$users = $this->getAllUsers($users);
262267
if ($users->count() == 0) {
263268
return false;
@@ -437,4 +442,18 @@ private function verifyColumns($table)
437442
],
438443
];
439444
}
445+
446+
/**
447+
* Determine which type of parameter is being used.
448+
* @param $param
449+
* @return array
450+
*/
451+
public function getCorrectParameter($param)
452+
{
453+
if (is_array($param[0])) {
454+
return $param[0];
455+
}
456+
457+
return $param;
458+
}
440459
}

src/Traits/UsersTrait.php

+19
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,7 @@ private function convertToPermissionIds($permissions)
299299
*/
300300
public function assignPermissions(...$permissions)
301301
{
302+
$permissions = $this->getCorrectParameter($permissions);
302303
$permissions = $this->convertToPermissionIds($permissions);
303304
if ($permissions->count() == 0) {
304305
return false;
@@ -317,6 +318,7 @@ public function assignPermissions(...$permissions)
317318
*/
318319
public function syncPermissions(...$permissions)
319320
{
321+
$permissions = $this->getCorrectParameter($permissions);
320322
$permissions = $this->convertToPermissionIds($permissions);
321323
if ($permissions->count() == 0) {
322324
return false;
@@ -326,6 +328,20 @@ public function syncPermissions(...$permissions)
326328
return $this;
327329
}
328330

331+
/**
332+
* Determine which type of parameter is being used.
333+
* @param $param
334+
* @return array
335+
*/
336+
public function getCorrectParameter(array $param)
337+
{
338+
if (is_array($param[0])) {
339+
return $param[0];
340+
}
341+
342+
return $param;
343+
}
344+
329345
/**
330346
* Revoke permissions from the user.
331347
*
@@ -335,6 +351,7 @@ public function syncPermissions(...$permissions)
335351
*/
336352
public function revokePermissions(...$permissions)
337353
{
354+
$permissions = $this->getCorrectParameter($permissions);
338355
$permissions = $this->getPermissionIds($permissions);
339356
$this->permissions()->detach($permissions);
340357

@@ -350,6 +367,7 @@ public function revokePermissions(...$permissions)
350367
*/
351368
public function assignGroup(...$groups)
352369
{
370+
$groups = $this->getCorrectParameter($groups);
353371
$groups = $this->convertToGroupIds($groups);
354372
if ($groups->count() == 0) {
355373
return false;
@@ -368,6 +386,7 @@ public function assignGroup(...$groups)
368386
*/
369387
public function revokeGroup(...$groups)
370388
{
389+
$groups = $this->getCorrectParameter($groups);
371390
$groups = $this->getGroupIds($groups);
372391
if ($groups->count() == 0) {
373392
return false;

tests/Traits/GroupUsersTest.php

+9
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,13 @@ public function test_if_a_user_can_be_attached_to_group_with_mixed_parameters()
3535
$this->testUser3->id
3636
));
3737
}
38+
39+
public function test_if_a_user_can_be_attached_to_group_with_array_params()
40+
{
41+
$this->assertInstanceOf(Group::class, $this->testUserGroup->assignUser([
42+
$this->testUser,
43+
$this->testUser2->name,
44+
$this->testUser3->id,
45+
]));
46+
}
3847
}

tests/Traits/GroupsTrait/AssignPermissionsMethodTest.php

+11
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,15 @@ public function test_if_a_permission_can_be_assigned_to_group_with_permission_id
3939
self::assertTrue($this->testUserGroup->hasPermission($this->testUserPermission2));
4040
self::assertTrue($this->testUserGroup->hasPermission($this->testUserPermission3));
4141
}
42+
43+
public function test_it_can_assign_permissions_using_array_as_parameter()
44+
{
45+
$this->assertInstanceOf(Group::class, $this->testUserGroup->assignPermissions([
46+
$this->testUserPermission->id,
47+
$this->testUserPermission2->id,
48+
]));
49+
50+
self::assertTrue($this->testUserGroup->hasPermission($this->testUserPermission));
51+
self::assertTrue($this->testUserGroup->hasPermission($this->testUserPermission2));
52+
}
4253
}

tests/Traits/GroupsTrait/AssignUserMethodTest.php

+13
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,17 @@ public function test_if_a_user_can_be_attached_to_group_with_user_ids()
3939
self::assertTrue($this->testUser2->hasGroup($this->testUserGroup));
4040
self::assertTrue($this->testUser3->hasGroup($this->testUserGroup));
4141
}
42+
43+
public function test_it_can_assign_user_using_array_as_parameter()
44+
{
45+
self::assertInstanceOf(Group::class, $this->testUserGroup->assignUser([
46+
$this->testUser->id,
47+
$this->testUser2->id,
48+
$this->testUser3->id,
49+
]));
50+
51+
self::assertTrue($this->testUser->hasGroup($this->testUserGroup));
52+
self::assertTrue($this->testUser2->hasGroup($this->testUserGroup));
53+
self::assertTrue($this->testUser3->hasGroup($this->testUserGroup));
54+
}
4255
}

0 commit comments

Comments
 (0)