Skip to content

Commit 11c0430

Browse files
committed
Merge branch 'release/1.0.1'
2 parents 5dbb57a + 8f8f742 commit 11c0430

File tree

4 files changed

+61
-5
lines changed

4 files changed

+61
-5
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ composer lint:phpmd
239239

240240
## Credits
241241

242-
This package is heavily inpsired by [Spatie / laravel-permission](https://github.com/spatie/laravel-permission).
242+
This package is heavily inspired by [Spatie / laravel-permission](https://github.com/spatie/laravel-permission).
243243

244244
- [Philipp Kübler](https://github.com/pkuebler)
245245
- [All Contributors](https://github.com/sourceboat/laravel-static-permission/graphs/contributors)

src/PermissionServiceProvider.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ protected function registerBladeExtensions(): void
3737
// role
3838
$bladeCompiler->directive('role', static function (string $arguments): string {
3939
return sprintf(
40-
'<?php if (Auth::check() && Auth::user()->hasRole("%s")): ?>',
40+
'<?php if (Auth::check() && Auth::user()->hasRole(%s)): ?>',
4141
$arguments
4242
);
4343
});
@@ -49,7 +49,7 @@ protected function registerBladeExtensions(): void
4949
// unlessrole
5050
$bladeCompiler->directive('unlessrole', static function (string $arguments): string {
5151
return sprintf(
52-
'<?php if (Auth::check() && !Auth::user()->hasRole("%s")): ?>',
52+
'<?php if (Auth::check() && !Auth::user()->hasRole(%s)): ?>',
5353
$arguments
5454
);
5555
});
@@ -61,7 +61,7 @@ protected function registerBladeExtensions(): void
6161
// permission
6262
$bladeCompiler->directive('permission', static function (string $arguments): string {
6363
return sprintf(
64-
'<?php if (Auth::check() && Auth::user()->hasPermissionTo(explode(\'|\', "%s"))): ?>',
64+
'<?php if (Auth::check() && Auth::user()->hasPermissionTo(explode(\'|\', %s))): ?>',
6565
$arguments
6666
);
6767
});
@@ -73,7 +73,7 @@ protected function registerBladeExtensions(): void
7373
// anypermission
7474
$bladeCompiler->directive('anypermission', static function (string $arguments): string {
7575
return sprintf(
76-
'<?php if (Auth::check() && Auth::user()->hasAnyPermission(explode(\'|\', "%s"))): ?>',
76+
'<?php if (Auth::check() && Auth::user()->hasAnyPermission(explode(\'|\', %s))): ?>',
7777
$arguments
7878
);
7979
});

src/Traits/HasPermissions.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,17 @@ public function hasPermissionTo(...$permissions): bool
3131
})->count() === $permissions->count();
3232
}
3333

34+
/**
35+
* Check if model has all permissions
36+
*
37+
* @param array|string ...$permissions
38+
* @return bool
39+
*/
40+
public function hasPermission(...$permissions): bool
41+
{
42+
return $this->hasPermissionTo($permissions);
43+
}
44+
3445
/**
3546
* Check if model has any permissions
3647
*

tests/PermissionTest.php

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
namespace Sourceboat\Permission\Test;
44

5+
/**
6+
* @SuppressWarnings(PHPMD.TooManyPublicMethods)
7+
*/
58
class PermissionTest extends TestCase
69
{
710
protected function setUp(): void
@@ -86,4 +89,46 @@ public function testHasPermissionToWrongMultipleWildcards(): void
8689

8790
$this->assertFalse($this->user->hasPermissionTo('test/testa/test'));
8891
}
92+
93+
public function testHasPermissionString(): void
94+
{
95+
$this->user->assignRole('user');
96+
97+
$this->assertTrue($this->user->hasPermission('user/edit'));
98+
}
99+
100+
public function testHasPermissionArray(): void
101+
{
102+
$this->user->assignRole('user');
103+
104+
$this->assertFalse($this->user->hasPermission(['user/edit', 'user/create']));
105+
}
106+
107+
public function testHasPermissionForbiddenRule(): void
108+
{
109+
$this->user->assignRole('user');
110+
111+
$this->assertFalse($this->user->hasPermission('user/create'));
112+
}
113+
114+
public function testHasPermissionNotDefined(): void
115+
{
116+
$this->user->assignRole('user');
117+
118+
$this->assertFalse($this->user->hasPermission('news/edit'));
119+
}
120+
121+
public function testHasPermissionMultipleWildcards(): void
122+
{
123+
$this->user->assignRole('user');
124+
125+
$this->assertTrue($this->user->hasPermission('test/testa/testb/test'));
126+
}
127+
128+
public function testHasPermissionWrongMultipleWildcards(): void
129+
{
130+
$this->user->assignRole('user');
131+
132+
$this->assertFalse($this->user->hasPermission('test/testa/test'));
133+
}
89134
}

0 commit comments

Comments
 (0)