Skip to content

Commit 2e27a1b

Browse files
committed
update
1 parent 2b95f00 commit 2e27a1b

12 files changed

Lines changed: 140 additions & 50 deletions

File tree

src/Contract/Role.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ public function users():belongsToMany;
1111

1212
public function permissions();
1313

14-
public function findById(int $id);
14+
public function getById(int $id);
1515

16-
public function findByName(string $name);
16+
public function getByName(string $name);
1717

1818
}

src/Contract/User.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ public function roles():BelongsToMany;
1919
* @param integer $id
2020
* @return void
2121
*/
22-
public function findById(int $id);
22+
public function getById(int $id);
2323

2424
/**
2525
* 通过name获取详情
2626
*
2727
* @param string $name
2828
* @return void
2929
*/
30-
public function findByName(string $name);
30+
public function getByName(string $name);
3131
}

src/Exceptions/PermissionAlreadyExists.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?php
22
namespace xiaodi\Permission\Exceptions;
3+
34
use InvalidArgumentException;
45

56
class PermissionAlreadyExists extends InvalidArgumentException
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
namespace xiaodi\Permission\Exceptions;
3+
4+
use InvalidArgumentException;
5+
6+
class UnauthorizedException extends InvalidArgumentException
7+
{
8+
public static function create(string $permissionName)
9+
{
10+
return new static("访问出错,你没有此 `{$permissionName}` 权限.");
11+
}
12+
}

src/Middlewares/Auth.php

Lines changed: 0 additions & 14 deletions
This file was deleted.

src/Middlewares/Permission.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
namespace xiaodi\Permission\Middlewares;
3+
4+
use xiaodi\Permission\Exceptions\UnauthorizedException;
5+
6+
/**
7+
* 权限验证中间件(验证规则专用)
8+
*
9+
*/
10+
class Permission
11+
{
12+
/**
13+
* 入口
14+
*
15+
* @param [type] $request
16+
* @param \Closure $next
17+
* @param [type] $permissions 验证的规则
18+
* @return void
19+
*/
20+
public function handle($request, \Closure $next, $permissions)
21+
{
22+
$permissions = is_array($permissions) ? $permissions : \explode('|', $permissions);
23+
24+
foreach ($permissions as $permission) {
25+
if (app('Permission')->user()->can($permission)) {
26+
return $next($request);
27+
}
28+
}
29+
30+
throw UnauthorizedException::create($permission);
31+
}
32+
}

src/Models/HasPermissionAccess.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
namespace xiaodi\Permission\Models;
3+
4+
use think\Model;
5+
6+
class HasPermissionAccess extends Model
7+
{
8+
protected $table = 'auth_has_permission';
9+
}

src/Models/Permission.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public function __construct($data = [])
2222

2323
parent::__construct($data);
2424
}
25-
25+
2626
/**
2727
* 获取具有此权限的角色
2828
*
@@ -93,5 +93,6 @@ public function getById(int $id)
9393

9494
public function getByName(string $name)
9595
{
96+
return $this->get(['name' => $name]);
9697
}
9798
}

src/Models/Role.php

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,44 @@ public function __construct($data = [])
2929
parent::__construct($data);
3030
}
3131

32+
public function access():BelongsToMany
33+
{
34+
$permissions = $this->belongsToMany(
35+
config('permission.models.permission'),
36+
config('permission.tables.role_permission_access'),
37+
'permission_id',
38+
'role_id'
39+
);
40+
41+
return $permissions;
42+
}
43+
44+
/**
45+
* 获取(用户直接,角色)分配的权限
46+
*
47+
* @return void
48+
*/
49+
public function permissions()
50+
{
51+
return $this->morphMany(
52+
config('permission.models.has_permission'),
53+
'model'
54+
);
55+
}
56+
57+
/**
58+
* 删除角色所有权限
59+
*
60+
* @return void
61+
*/
62+
public function revokeAllPermission()
63+
{
64+
$this->permissions()->where('model_id', $this->id)->delete();
65+
$this->access()->detach(
66+
$this->access()->column('permission_id')
67+
);
68+
}
69+
3270
public function revokePermissionTo(string $name)
3371
{
3472
$this->permissions()->where('content', 'in', $name)->delete();
@@ -40,7 +78,7 @@ public function revokePermissionTo(string $name)
4078
* @param integer $id
4179
* @return void
4280
*/
43-
public function findById(int $id)
81+
public function getById(int $id)
4482
{
4583
$res = $this->get($id);
4684
return $res;
@@ -52,7 +90,7 @@ public function findById(int $id)
5290
* @param string $name
5391
* @return void
5492
*/
55-
public function findByName(string $name)
93+
public function getByName(string $name)
5694
{
5795
$res = $this->get([
5896
'name' => $name

src/Models/User.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,14 @@ public function assignRole($roles)
4545
}
4646
}
4747

48-
public function findById(int $id)
48+
public function getById(int $id)
4949
{
5050
$user = $this->get($id);
5151

5252
return $user;
5353
}
5454

55-
public function findByName(string $name)
55+
public function getByName(string $name)
5656
{
5757
$user = $this->get([
5858
'name' => $name

0 commit comments

Comments
 (0)