Skip to content

Commit 1078fcf

Browse files
Merge pull request #134 from mostafamaklad/v4.0
V4.0
2 parents 8046ea7 + 5f42c70 commit 1078fcf

29 files changed

+202
-166
lines changed

CHANGELOG.md

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

33
All Notable changes to `laravel-permission-mongodb` will be documented in this file.
44

5+
## 4.0.0 - 2022-05-15
6+
7+
### Added
8+
- Support of Laravel 9.x
9+
- Added some return toward PHP 8 transitioning to require return types
10+
- Use of DatabaseMigration and Seeder in tests
11+
- Fix some tests (api guard is no more in auth.php by default)
12+
13+
514
## 3.1.0 - 2020-10-04
615

716
### Added

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,15 +72,24 @@ $user->can('edit articles');
7272
6.x | 2.x or 3.x
7373
7.x | 3.x
7474
8.x | 3.1.x
75+
9.x | 4.x
7576

7677
### Laravel
7778

7879
You can install the package via composer:
7980

81+
For laravel 9.x use
82+
8083
``` bash
8184
composer require mostafamaklad/laravel-permission-mongodb
8285
```
8386

87+
For laravel 8.x and older use
88+
89+
``` bash
90+
composer require mostafamaklad/laravel-permission-mongodb:"^3.1"
91+
```
92+
8493
You can publish [the migration](database/migrations/create_permission_collections.php.stub) with:
8594

8695
```bash

composer.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,17 @@
3030
}
3131
],
3232
"require": {
33-
"php": ">=7.2",
34-
"illuminate/auth": "^6.0|^7.0|^8.0",
35-
"illuminate/container": "^6.0|^7.0|^8.0",
36-
"illuminate/contracts": "^6.0|^7.0|^8.0",
37-
"jenssegers/mongodb": "^3.0"
33+
"php": "^8.0",
34+
"illuminate/auth": "^9.0",
35+
"illuminate/container": "^9.0",
36+
"illuminate/contracts": "^9.0",
37+
"jenssegers/mongodb": "^3.9"
3838
},
3939
"require-dev": {
40-
"monolog/monolog": "^1.23|^2.0",
41-
"orchestra/testbench": "^3.2|^4.0|^5.0",
42-
"phpunit/phpunit": "^5.7|^6.0|^7.0|^8.0",
43-
"squizlabs/php_codesniffer": "^3.1"
40+
"monolog/monolog": "^2.3",
41+
"orchestra/testbench": "^7.0",
42+
"phpunit/phpunit": "^9.5",
43+
"squizlabs/php_codesniffer": "^3.6"
4444
},
4545
"autoload": {
4646
"psr-4": {

database/migrations/create_permission_collections.php.stub

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
44
use Illuminate\Support\Facades\Schema;
55
use Jenssegers\Mongodb\Schema\Blueprint;
66

7-
class CreatePermissionCollections extends Migration
7+
return new class extends Migration
88
{
99
/**
1010
* Run the migrations.
@@ -33,7 +33,7 @@ class CreatePermissionCollections extends Migration
3333
{
3434
$collectionNames = config('permission.collection_names');
3535

36-
Schema::drop($collectionNames['roles']);
37-
Schema::drop($collectionNames['permissions']);
36+
Schema::dropIfExists($collectionNames['roles']);
37+
Schema::dropIfExists($collectionNames['permissions']);
3838
}
39-
}
39+
};

phpunit.xml.dist

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,22 @@
99
convertWarningsToExceptions="true"
1010
processIsolation="false"
1111
stopOnFailure="false">
12-
<testsuites>
13-
<testsuite name="League Test Suite">
14-
<directory>tests</directory>
15-
</testsuite>
16-
</testsuites>
17-
<filter>
18-
<whitelist>
19-
<directory suffix=".php">src/</directory>
20-
</whitelist>
21-
</filter>
22-
<logging>
23-
<log type="tap" target="build/report.tap"/>
24-
<log type="junit" target="build/report.junit.xml"/>
25-
<log type="coverage-html" target="build/coverage"/>
26-
<log type="coverage-text" target="build/coverage.txt"/>
27-
<log type="coverage-clover" target="build/logs/clover.xml"/>
28-
</logging>
12+
<coverage>
13+
<include>
14+
<directory suffix=".php">src/</directory>
15+
</include>
16+
<report>
17+
<clover outputFile="build/logs/clover.xml"/>
18+
<html outputDirectory="build/coverage"/>
19+
<text outputFile="build/coverage.txt"/>
20+
</report>
21+
</coverage>
22+
<testsuites>
23+
<testsuite name="League Test Suite">
24+
<directory>tests</directory>
25+
</testsuite>
26+
</testsuites>
27+
<logging>
28+
<junit outputFile="build/report.junit.xml"/>
29+
</logging>
2930
</phpunit>

src/Commands/CreatePermission.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@
1111
*/
1212
class CreatePermission extends Command
1313
{
14-
protected $signature = 'permission:create-permission
15-
{name : The name of the permission}
14+
protected $signature = 'permission:create-permission
15+
{name : The name of the permission}
1616
{guard? : The name of the guard}';
1717

1818
protected $description = 'Create a permission';
1919

20-
public function handle()
20+
public function handle(): void
2121
{
2222
$permissionClass = \app(\config('permission.models.permission'));
2323

src/Commands/CreateRole.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class CreateRole extends Command
1818

1919
protected $description = 'Create a role';
2020

21-
public function handle()
21+
public function handle(): void
2222
{
2323
$roleClass = \app(\config('permission.models.role'));
2424

src/Contracts/RoleInterface.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public function permissions(): BelongsToMany;
2727
*
2828
* @throws RoleDoesNotExist
2929
*/
30-
public static function findByName(string $name, $guardName): RoleInterface;
30+
public static function findByName(string $name, ?string $guardName): RoleInterface;
3131

3232
/**
3333
* Determine if the user may perform the given permission.
@@ -36,5 +36,5 @@ public static function findByName(string $name, $guardName): RoleInterface;
3636
*
3737
* @return bool
3838
*/
39-
public function hasPermissionTo($permission): bool;
39+
public function hasPermissionTo(string|PermissionInterface $permission): bool;
4040
}

src/Directives/PermissionDirectives.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
*/
1111
class PermissionDirectives
1212
{
13-
private $bladeCompiler;
13+
private BladeCompiler $bladeCompiler;
1414

1515
public function __construct(BladeCompiler $bladeCompiler)
1616
{
@@ -20,7 +20,7 @@ public function __construct(BladeCompiler $bladeCompiler)
2020
/**
2121
* Declare role directive
2222
*/
23-
public function roleDirective()
23+
public function roleDirective(): void
2424
{
2525
$this->bladeCompiler->directive('role', function ($arguments) {
2626
list($role, $guard) = $this->extractRoleGuard($arguments);
@@ -36,7 +36,7 @@ public function roleDirective()
3636
/**
3737
* Declare hasrole directive
3838
*/
39-
public function hasroleDirective()
39+
public function hasroleDirective(): void
4040
{
4141
$this->bladeCompiler->directive('hasrole', function ($arguments) {
4242
list($role, $guard) = $this->extractRoleGuard($arguments);
@@ -51,7 +51,7 @@ public function hasroleDirective()
5151
/**
5252
* Declare hasanyrole directive
5353
*/
54-
public function hasanyroleDirective()
54+
public function hasanyroleDirective(): void
5555
{
5656
$this->bladeCompiler->directive('hasanyrole', function ($arguments) {
5757
list($roles, $guard) = $this->extractRoleGuard($arguments);
@@ -66,7 +66,7 @@ public function hasanyroleDirective()
6666
/**
6767
* Declare hasallroles directive
6868
*/
69-
public function hasallrolesDirective()
69+
public function hasallrolesDirective(): void
7070
{
7171
$this->bladeCompiler->directive('hasallroles', function ($arguments) {
7272
list($roles, $guard) = $this->extractRoleGuard($arguments);

src/Exceptions/MakladException.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class MakladException extends InvalidArgumentException
1414
/**
1515
* MakladException constructor.
1616
*
17-
* @param string $message
17+
* @param string|null $message
1818
* @param int $code
1919
* @param Throwable|null $previous
2020
*/

src/Exceptions/UnauthorizedException.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
*/
1111
class UnauthorizedException extends HttpException
1212
{
13-
private $requiredRoles = [];
14-
private $requiredPermissions = [];
13+
private array $requiredRoles = [];
14+
private array $requiredPermissions = [];
1515

1616
/**
1717
* UnauthorizedException constructor.
1818
*
1919
* @param $statusCode
20-
* @param string $message
20+
* @param string|null $message
2121
* @param array $requiredRoles
2222
* @param array $requiredPermissions
2323
*/

src/Exceptions/UnauthorizedPermission.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class UnauthorizedPermission extends UnauthorizedException
1212
* UnauthorizedPermission constructor.
1313
*
1414
* @param $statusCode
15-
* @param string $message
15+
* @param string|null $message
1616
* @param array $requiredPermissions
1717
*/
1818
public function __construct($statusCode, string $message = null, array $requiredPermissions = [])

src/Exceptions/UnauthorizedRole.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class UnauthorizedRole extends UnauthorizedException
1212
* UnauthorizedPermission constructor.
1313
*
1414
* @param $statusCode
15-
* @param string $message
15+
* @param string|null $message
1616
* @param array $requiredRoles
1717
*/
1818
public function __construct($statusCode, string $message = null, array $requiredRoles = [])

src/Helpers.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class Helpers
1515
*
1616
* @return string|null
1717
*/
18-
public function getModelForGuard(string $guard)
18+
public function getModelForGuard(string $guard): ?string
1919
{
2020
return \collect(\config('auth.guards'))
2121
->map(function ($guard) {

src/Middlewares/PermissionMiddleware.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
namespace Maklad\Permission\Middlewares;
44

55
use Closure;
6+
use Illuminate\Http\Request;
7+
use Maklad\Permission\Exceptions\UnauthorizedException;
68
use Maklad\Permission\Exceptions\UnauthorizedPermission;
79
use Maklad\Permission\Exceptions\UserNotLoggedIn;
810
use Maklad\Permission\Helpers;
@@ -14,14 +16,14 @@
1416
class PermissionMiddleware
1517
{
1618
/**
17-
* @param $request
19+
* @param Request $request
1820
* @param Closure $next
19-
* @param $permission
21+
* @param array|string $permission
2022
*
2123
* @return mixed
22-
* @throws \Maklad\Permission\Exceptions\UnauthorizedException
24+
* @throws UnauthorizedException
2325
*/
24-
public function handle($request, Closure $next, $permission)
26+
public function handle(Request $request, Closure $next, array|string $permission): mixed
2527
{
2628
if (app('auth')->guest()) {
2729
$helpers = new Helpers();

src/Middlewares/RoleMiddleware.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Maklad\Permission\Middlewares;
44

55
use Closure;
6+
use Illuminate\Http\Request;
67
use Maklad\Permission\Exceptions\UnauthorizedRole;
78
use Maklad\Permission\Exceptions\UserNotLoggedIn;
89
use Maklad\Permission\Helpers;
@@ -14,14 +15,14 @@
1415
class RoleMiddleware
1516
{
1617
/**
17-
* @param $request
18+
* @param Request $request
1819
* @param Closure $next
19-
* @param $role
20+
* @param array|string $role
2021
*
2122
* @return mixed
2223
* @throws \Maklad\Permission\Exceptions\UnauthorizedException
2324
*/
24-
public function handle($request, Closure $next, $role)
25+
public function handle(Request $request, Closure $next, array|string $role): mixed
2526
{
2627
if (app('auth')->guest()) {
2728
$helpers = new Helpers();

src/Models/Permission.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class Permission extends Model implements PermissionInterface
2424
use RefreshesPermissionCache;
2525

2626
public $guarded = ['id'];
27-
protected $helpers;
27+
protected Helpers $helpers;
2828

2929
/**
3030
* Permission constructor.
@@ -49,7 +49,7 @@ public function __construct(array $attributes = [])
4949
*
5050
* @param array $attributes
5151
*
52-
* @return $this|\Illuminate\Database\Eloquent\Model
52+
* @return $this|mixed
5353
* @throws \Maklad\Permission\Exceptions\PermissionAlreadyExists
5454
* @throws \ReflectionException
5555
*/
@@ -74,7 +74,7 @@ public static function create(array $attributes = [])
7474
* Find or create permission by its name (and optionally guardName).
7575
*
7676
* @param string $name
77-
* @param string $guardName
77+
* @param string|null $guardName
7878
*
7979
* @return PermissionInterface
8080
* @throws \Maklad\Permission\Exceptions\PermissionAlreadyExists
@@ -117,7 +117,7 @@ public function users(): BelongsToMany
117117
* Find a permission by its name (and optionally guardName).
118118
*
119119
* @param string $name
120-
* @param string $guardName
120+
* @param string|null $guardName
121121
*
122122
* @return PermissionInterface
123123
* @throws PermissionDoesNotExist

0 commit comments

Comments
 (0)