Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
openApi
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hj
openApi
Commits
fcc71c90
Commit
fcc71c90
authored
Apr 10, 2022
by
hangjun83
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新 ,权限调整
parent
61352f7d
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
241 additions
and
41 deletions
+241
-41
server/app/Http/Controllers/Middleware/Authenticate.php
server/app/Http/Controllers/Middleware/Authenticate.php
+68
-9
server/app/Http/Controllers/V1/PermissionsController.php
server/app/Http/Controllers/V1/PermissionsController.php
+44
-3
server/app/Repositories/Eloquent/MenusRepositoryEloquent.php
server/app/Repositories/Eloquent/MenusRepositoryEloquent.php
+2
-0
server/app/Repositories/Models/Menus.php
server/app/Repositories/Models/Menus.php
+1
-1
server/app/Services/MenusService.php
server/app/Services/MenusService.php
+51
-7
server/app/Services/RoleAndPermissionsService.php
server/app/Services/RoleAndPermissionsService.php
+29
-1
server/bootstrap/route.php
server/bootstrap/route.php
+1
-1
server/database/migrations/2022_03_22_091755_create_menus_table.php
...abase/migrations/2022_03_22_091755_create_menus_table.php
+1
-0
server/database/migrations/2022_03_23_064135_create_permission_tables.php
...migrations/2022_03_23_064135_create_permission_tables.php
+2
-0
server/database/seeds/local/MenusSeeder.php
server/database/seeds/local/MenusSeeder.php
+24
-4
server/database/seeds/local/RolesSeeder.php
server/database/seeds/local/RolesSeeder.php
+3
-1
server/routes/api/auth.php
server/routes/api/auth.php
+1
-1
server/routes/api/permissions.php
server/routes/api/permissions.php
+14
-13
No files found.
server/app/Http/Controllers/Middleware/Authenticate.php
View file @
fcc71c90
...
@@ -12,6 +12,7 @@
...
@@ -12,6 +12,7 @@
namespace
App\Http\Controllers\Middleware
;
namespace
App\Http\Controllers\Middleware
;
use
App\Repositories\Enums\ResponseCodeEnum
;
use
App\Repositories\Enums\ResponseCodeEnum
;
use
App\Services\RoleAndPermissionsService
;
use
Closure
;
use
Closure
;
use
Illuminate\Auth\Access\AuthorizationException
;
use
Illuminate\Auth\Access\AuthorizationException
;
use
Illuminate\Contracts\Auth\Factory
as
Auth
;
use
Illuminate\Contracts\Auth\Factory
as
Auth
;
...
@@ -20,6 +21,7 @@ use Illuminate\Support\Str;
...
@@ -20,6 +21,7 @@ use Illuminate\Support\Str;
use
Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException
;
use
Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException
;
use
App\Support\Traits\Helpers
;
use
App\Support\Traits\Helpers
;
class
Authenticate
class
Authenticate
{
{
use
Helpers
;
use
Helpers
;
...
@@ -30,6 +32,12 @@ class Authenticate
...
@@ -30,6 +32,12 @@ class Authenticate
*/
*/
protected
$auth
;
protected
$auth
;
protected
$whiteList
=
[
'/adminapi/user/info'
,
'/adminapi/auth/logout'
,
'/adminapi/permission/dictData/defaultButtonPermission'
];
/**
/**
* Create a new middleware instance.
* Create a new middleware instance.
*
*
...
@@ -72,17 +80,68 @@ class Authenticate
...
@@ -72,17 +80,68 @@ class Authenticate
$request
->
headers
->
set
(
'authorization'
,
'bearer'
.
$decodeToken
[
'hash'
]);
$request
->
headers
->
set
(
'authorization'
,
'bearer'
.
$decodeToken
[
'hash'
]);
}
}
else
{
//对用户权限进行判断验证
//对用户权限进行判断验证
$currentUser
=
auth
()
->
user
();
$currentUser
=
auth
()
->
user
();
/*echo "<pre>";
if
(
!
$currentUser
->
isSuperAdmin
()){
print_r($currentUser->permissions->toArray());
if
(
!
$this
->
userHasPermission
(
$currentUser
,
$request
)){
exit;*/
throw
new
\LogicException
(
'你无权访问或使用该功能'
,
ResponseCodeEnum
::
SYSTEM_ERROR
);
}
/*echo "<pre>"
;
return
$next
(
$request
)
;
print_R($request->route());
}
exit;*/
}
return
$next
(
$request
);
return
$next
(
$request
);
}
}
/**
* 判断用户是否有访问当前路由的权限
* @param $user
* @param $request
* @return bool
*/
protected
function
userHasPermission
(
$user
,
$request
)
{
$userPermissions
=
[];
$routeParams
=
$request
->
route
()[
1
];
// 如果该路由不存在权限,或者在白名单中,直接不做权限验证
if
(
!
isset
(
$routeParams
[
'permission'
])
||
in_array
(
$routeParams
[
'permission'
],
$this
->
whiteList
)){
return
true
;
}
// 获取用户的所有角色组对应的权限
$roles
=
$user
->
roles
;
collect
(
$roles
)
->
map
(
function
(
$role
)
use
(
&
$userPermissions
){
$permissions
=
$role
->
permissions
;
collect
(
$permissions
)
->
map
(
function
(
$permission
)
use
(
&
$userPermissions
){
$userPermissions
[
$permission
[
'id'
]]
=
$permission
->
toArray
();
});
});
$hasPermission
=
false
;
// 获取 dingo 对应的版本的路由列表
$routeList
=
[];
collect
(
app
(
'Dingo\Api\Contract\Routing\Adapter'
)
->
getIterableRoutes
())
->
map
(
function
(
$routes
,
$version
)
use
(
$request
,
$userPermissions
,
$routeParams
,
&
$hasPermission
){
if
(
$version
!=
config
(
'api.version'
)){
return
;
}
$filterRoute
=
[];
foreach
(
$routes
as
$key
=>
$route
){
foreach
(
$userPermissions
as
$key
=>
$permission
){
if
(
isset
(
$route
[
'permission'
])
&&
$permission
[
'action'
]
==
$route
[
'permission'
]){
$filterRoute
[]
=
$route
[
'uri'
];
}
}
}
// 找到角色权限对应的路由
if
(
count
(
$filterRoute
)
>
0
&&
in_array
(
$routeParams
[
'uri'
],
$filterRoute
)){
$hasPermission
=
true
;
}
});
return
$hasPermission
;
}
}
}
server/app/Http/Controllers/V1/PermissionsController.php
View file @
fcc71c90
...
@@ -36,7 +36,7 @@ class PermissionsController extends Controller
...
@@ -36,7 +36,7 @@ class PermissionsController extends Controller
* @param Request $request
* @param Request $request
* @return \Illuminate\Http\JsonResponse|void
* @return \Illuminate\Http\JsonResponse|void
*/
*/
public
function
getMenuList
(
Request
$request
)
public
function
get
UserRole
MenuList
(
Request
$request
)
{
{
try
{
try
{
$menuList
=
$this
->
roleAndPermissionService
->
getUserRoleMenus
();
$menuList
=
$this
->
roleAndPermissionService
->
getUserRoleMenus
();
...
@@ -74,14 +74,13 @@ class PermissionsController extends Controller
...
@@ -74,14 +74,13 @@ class PermissionsController extends Controller
*/
*/
public
function
editMenus
(
Request
$request
)
public
function
editMenus
(
Request
$request
)
{
{
$message
=
[
$message
=
[
'id.required'
=>
"菜单id必选"
,
'id.required'
=>
"菜单id必选"
,
'name.required'
=>
"菜单名称必填"
,
'name.required'
=>
"菜单名称必填"
,
'path.required'
=>
"菜单路径必填"
,
'path.required'
=>
"菜单路径必填"
,
'icon.required'
=>
"菜单icon必填"
,
'icon.required'
=>
"菜单icon必填"
,
'parentId.required'
=>
"上级菜单必选"
,
'menuType.required'
=>
"菜单类型必选"
,
'menuType.required'
=>
"菜单类型必选"
,
'component.required'
=>
"菜单前端组件必填"
,
'status.required'
=>
"菜单状态必选"
,
'status.required'
=>
"菜单状态必选"
,
'sort.required'
=>
"菜单排序必填"
,
'sort.required'
=>
"菜单排序必填"
,
];
];
...
@@ -90,6 +89,12 @@ class PermissionsController extends Controller
...
@@ -90,6 +89,12 @@ class PermissionsController extends Controller
if
(
$request
->
get
(
'selected'
)
!=
true
){
if
(
$request
->
get
(
'selected'
)
!=
true
){
return
Response
::
fail
(
'该菜单未被选中编辑'
);
return
Response
::
fail
(
'该菜单未被选中编辑'
);
}
}
if
(
$request
[
'menuType'
]
!=
'top'
){
$this
->
validateRequest
(
$request
,
[
'component.required'
=>
"菜单前端组件必填"
,
'parentId.required'
=>
"上级菜单必选"
,
]);
}
try
{
try
{
$service
=
app
(
MenusService
::
class
);
$service
=
app
(
MenusService
::
class
);
...
@@ -110,6 +115,11 @@ class PermissionsController extends Controller
...
@@ -110,6 +115,11 @@ class PermissionsController extends Controller
}
}
}
}
/**
* 添加子菜单
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public
function
addSubMenus
(
Request
$request
)
public
function
addSubMenus
(
Request
$request
)
{
{
$message
=
[
$message
=
[
...
@@ -147,6 +157,11 @@ class PermissionsController extends Controller
...
@@ -147,6 +157,11 @@ class PermissionsController extends Controller
}
}
}
}
/**
* 删除菜单
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public
function
deleteMenus
(
Request
$request
)
public
function
deleteMenus
(
Request
$request
)
{
{
$message
=
[
$message
=
[
...
@@ -178,6 +193,11 @@ class PermissionsController extends Controller
...
@@ -178,6 +193,11 @@ class PermissionsController extends Controller
}
}
}
}
/**
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public
function
getAllList
(
Request
$request
)
public
function
getAllList
(
Request
$request
)
{
{
try
{
try
{
...
@@ -188,6 +208,11 @@ class PermissionsController extends Controller
...
@@ -188,6 +208,11 @@ class PermissionsController extends Controller
}
}
}
}
/**
* 添加角色
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public
function
addRole
(
Request
$request
)
public
function
addRole
(
Request
$request
)
{
{
$message
=
[
$message
=
[
...
@@ -246,6 +271,22 @@ class PermissionsController extends Controller
...
@@ -246,6 +271,22 @@ class PermissionsController extends Controller
}
}
}
}
public
function
editRoleDefault
(
Request
$request
)
{
$message
=
[
'id.required'
=>
"角色id必填"
,
'isDefault.required'
=>
"是否默认必填"
,
];
$this
->
validateRequest
(
$request
,
$message
);
try
{
$this
->
roleAndPermissionService
->
setRoleDefault
(
$request
);
return
Response
::
success
([],
'操作成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
}
}
public
function
delByIds
(
Request
$request
)
public
function
delByIds
(
Request
$request
)
{
{
$message
=
[
$message
=
[
...
...
server/app/Repositories/Eloquent/MenusRepositoryEloquent.php
View file @
fcc71c90
...
@@ -25,6 +25,7 @@ class MenusRepositoryEloquent extends BaseRepository implements MenusRepository
...
@@ -25,6 +25,7 @@ class MenusRepositoryEloquent extends BaseRepository implements MenusRepository
public
$rules
=
[
public
$rules
=
[
ValidatorInterface
::
RULE_CREATE
=>
[
ValidatorInterface
::
RULE_CREATE
=>
[
'menu_name'
=>
'required'
,
'menu_name'
=>
'required'
,
'title'
=>
'required'
,
'menu_path'
=>
'required'
,
'menu_path'
=>
'required'
,
'parent_id'
=>
'required'
,
'parent_id'
=>
'required'
,
'menu_type'
=>
'required'
,
'menu_type'
=>
'required'
,
...
@@ -35,6 +36,7 @@ class MenusRepositoryEloquent extends BaseRepository implements MenusRepository
...
@@ -35,6 +36,7 @@ class MenusRepositoryEloquent extends BaseRepository implements MenusRepository
],
],
ValidatorInterface
::
RULE_UPDATE
=>
[
ValidatorInterface
::
RULE_UPDATE
=>
[
'menu_name'
=>
'required'
,
'menu_name'
=>
'required'
,
'title'
=>
'required'
,
'menu_path'
=>
'required'
,
'menu_path'
=>
'required'
,
'parent_id'
=>
'required'
,
'parent_id'
=>
'required'
,
'menu_type'
=>
'required'
,
'menu_type'
=>
'required'
,
...
...
server/app/Repositories/Models/Menus.php
View file @
fcc71c90
...
@@ -22,7 +22,7 @@ class Menus extends Model
...
@@ -22,7 +22,7 @@ class Menus extends Model
* @var array
* @var array
*/
*/
protected
$fillable
=
[
protected
$fillable
=
[
'menu_name'
,
'menu_path'
,
'menu_icon'
,
'parent_id'
,
'menu_type'
,
'component'
,
'status'
,
'sort'
,
'is_show'
,
'sys_default'
,
'created_by'
'menu_name'
,
'
title'
,
'
menu_path'
,
'menu_icon'
,
'parent_id'
,
'menu_type'
,
'component'
,
'status'
,
'sort'
,
'is_show'
,
'sys_default'
,
'created_by'
];
];
/**
/**
...
...
server/app/Services/MenusService.php
View file @
fcc71c90
...
@@ -73,7 +73,7 @@ class MenusService
...
@@ -73,7 +73,7 @@ class MenusService
$filterParams
=
collect
(
$filterParams
)
->
map
(
function
(
$value
,
$key
)
use
(
$params
){
$filterParams
=
collect
(
$filterParams
)
->
map
(
function
(
$value
,
$key
)
use
(
$params
){
if
(
$value
==
''
){
if
(
$value
==
''
){
switch
(
$key
){
switch
(
$key
){
case
'menu_name'
:
$value
=
$params
[
'
titl
e'
];
break
;
case
'menu_name'
:
$value
=
$params
[
'
nam
e'
];
break
;
case
'menu_path'
:
$value
=
$params
[
'path'
];
break
;
case
'menu_path'
:
$value
=
$params
[
'path'
];
break
;
case
'menu_icon'
:
$value
=
$params
[
'icon'
];
break
;
case
'menu_icon'
:
$value
=
$params
[
'icon'
];
break
;
case
'menu_type'
:
$value
=
$params
[
'type'
];
break
;
case
'menu_type'
:
$value
=
$params
[
'type'
];
break
;
...
@@ -86,10 +86,20 @@ class MenusService
...
@@ -86,10 +86,20 @@ class MenusService
$result
=
$this
->
menusRepository
->
create
(
$filterParams
->
toArray
());
$result
=
$this
->
menusRepository
->
create
(
$filterParams
->
toArray
());
if
(
$result
){
if
(
$result
){
$currentUri
=
$request
->
route
()[
1
][
'uri'
];
if
(
$currentUri
){
$currentUri
=
str_replace
(
'/'
,
'.'
,
$currentUri
);
}
$permission
=
[];
$permission
=
[];
$permission
[
'name'
]
=
$result
[
'menu_name'
];
$permission
[
'name'
]
=
$result
[
'menu_name'
];
$permission
[
'menu_id'
]
=
$result
[
'id'
];
$permission
[
'menu_id'
]
=
$result
[
'id'
];
$permission
[
'action'
]
=
$params
[
'button_type'
];
if
(
isset
(
$params
[
'button_type'
])
&&
!
empty
(
$params
[
'button_type'
])){
$permission
[
'action'
]
=
substr
(
$currentUri
,
1
)
.
'/'
.
$params
[
'button_type'
];
}
else
{
$permission
[
'action'
]
=
substr
(
$currentUri
,
1
)
.
'/view'
;
}
$permission
[
'permission_type'
]
=
'menu'
;
$permission
[
'permission_type'
]
=
'menu'
;
$permission
[
'sys_default'
]
=
0
;
$permission
[
'sys_default'
]
=
0
;
$permission
[
'remark'
]
=
$result
[
'menu_name'
]
.
'的相关权限'
;
$permission
[
'remark'
]
=
$result
[
'menu_name'
]
.
'的相关权限'
;
...
@@ -188,14 +198,14 @@ class MenusService
...
@@ -188,14 +198,14 @@ class MenusService
throw
new
\LogicException
(
'此菜单不存在!'
,
500
);
throw
new
\LogicException
(
'此菜单不存在!'
,
500
);
}
}
$parentMenu
=
$menuModel
->
where
(
'id'
,
$params
[
'parent_id'
])
->
first
();
$parentMenu
=
$menuModel
->
where
(
'id'
,
$params
[
'parent_id'
])
->
first
();
if
(
!
$parentMenu
){
if
(
!
$parentMenu
&&
'top'
!=
$params
[
'menu_type'
]
){
throw
new
\LogicException
(
'上级菜单不存在!'
,
500
);
throw
new
\LogicException
(
'上级菜单不存在!'
,
500
);
}
}
if
(
!
in_array
(
$params
[
'menu_type'
],[
'top'
,
'page'
,
'button'
])){
if
(
!
in_array
(
$params
[
'menu_type'
],[
'top'
,
'page'
,
'button'
])){
throw
new
\LogicException
(
'菜单类型不正确!'
,
500
);
throw
new
\LogicException
(
'菜单类型不正确!'
,
500
);
}
}
$params
[
'menu_name'
]
=
$params
[
'
titl
e'
];
$params
[
'menu_name'
]
=
$params
[
'
nam
e'
];
$params
[
'menu_path'
]
=
$params
[
'path'
];
$params
[
'menu_path'
]
=
$params
[
'path'
];
$params
[
'menu_icon'
]
=
$params
[
'icon'
];
$params
[
'menu_icon'
]
=
$params
[
'icon'
];
...
@@ -206,10 +216,44 @@ class MenusService
...
@@ -206,10 +216,44 @@ class MenusService
$updateMenus
[
$key
]
=
$params
[
$key
];
$updateMenus
[
$key
]
=
$params
[
$key
];
}
}
});
});
$updateMenus
[
'component'
]
=
$params
[
'component'
];
// 处理action
//app(RoleAndPermissionsService::class)->checkRequestRolesPermissions($request);
if
(
$params
[
'menu_type'
]
==
'top'
){
$updateMenus
[
'component'
]
=
'#'
;
}
else
{
$updateMenus
[
'component'
]
=
$params
[
'component'
];
}
$updateMenus
[
'created_by'
]
=
auth
()
->
user
()
->
id
;
$updateMenus
[
'created_by'
]
=
auth
()
->
user
()
->
id
;
$result
=
$this
->
menusRepository
->
update
(
$updateMenus
,
$params
[
'id'
]);
$result
=
$this
->
menusRepository
->
update
(
$updateMenus
,
$params
[
'id'
]);
if
(
$result
){
$permission
=
[];
$permission
[
'name'
]
=
$result
[
'menu_name'
];
$permission
[
'menu_id'
]
=
$result
[
'id'
];
if
(
isset
(
$params
[
'button_type'
])
&&
!
empty
(
$params
[
'button_type'
])){
$permission
[
'action'
]
=
str_replace
(
'_'
,
'.'
,
$request
[
'name'
])
.
'.'
.
$params
[
'button_type'
];
$permission
[
'permission_type'
]
=
'button'
;
}
else
{
$permission
[
'permission_type'
]
=
'menu'
;
$permission
[
'action'
]
=
str_replace
(
'_'
,
'.'
,
$request
[
'name'
])
.
'.list'
;
}
$permission
[
'sys_default'
]
=
0
;
$permission
[
'remark'
]
=
$result
[
'menu_name'
]
.
'的相关权限'
;
$permission
[
'guard_name'
]
=
config
(
'auth.defaults.guard'
);
//增加对应的按钮权限
if
(
$menuPermission
=
Permission
::
query
()
->
where
(
'menu_id'
,
$result
[
'id'
])
->
first
()){
$permissionResult
=
Permission
::
query
()
->
updateOrCreate
([
'id'
=>
$menuPermission
->
id
],
$permission
);
}
// 如果是管理员,自动绑定赋予权限
if
(
auth
()
->
user
()
->
isSuperAdmin
()){
if
(
$permissionResult
){
app
(
RoleAndPermissionsService
::
class
)
->
assignRoleAndPermissionToUser
(
$permissionResult
,
auth
()
->
user
());
}
}
}
return
$result
;
return
$result
;
}
}
...
@@ -230,7 +274,7 @@ class MenusService
...
@@ -230,7 +274,7 @@ class MenusService
$newMenu
=
[
$newMenu
=
[
'name'
=>
$menu
->
menu_name
,
'name'
=>
$menu
->
menu_name
,
'title'
=>
$menu
->
menu_nam
e
,
'title'
=>
$menu
->
titl
e
,
'path'
=>
$menu
->
menu_path
,
'path'
=>
$menu
->
menu_path
,
'icon'
=>
$menu
->
menu_icon
,
'icon'
=>
$menu
->
menu_icon
,
'expand'
=>
true
,
'expand'
=>
true
,
...
@@ -256,7 +300,7 @@ class MenusService
...
@@ -256,7 +300,7 @@ class MenusService
if
(
$parent_id
>
0
){
if
(
$parent_id
>
0
){
$parentName
=
collect
(
$parentMenu
)
->
map
(
function
(
$m
)
use
(
&
$menu
,
$parent_id
){
$parentName
=
collect
(
$parentMenu
)
->
map
(
function
(
$m
)
use
(
&
$menu
,
$parent_id
){
if
(
$m
->
id
==
$parent_id
){
if
(
$m
->
id
==
$parent_id
){
$menu
[
'parent_title'
]
=
$m
->
menu_nam
e
;
$menu
[
'parent_title'
]
=
$m
->
titl
e
;
}
}
});
});
}
}
...
...
server/app/Services/RoleAndPermissionsService.php
View file @
fcc71c90
...
@@ -40,11 +40,13 @@ class RoleAndPermissionsService
...
@@ -40,11 +40,13 @@ class RoleAndPermissionsService
}
}
$this
->
getAllPermissions
(
$user
);
$this
->
getAllPermissions
(
$user
);
$role
=
$user
->
roles
;
$role
=
$user
->
roles
;
return
$role
;
return
$role
;
}
}
public
function
getUserPermissions
(){
public
function
getUserPermissions
(){
$role
=
$this
->
getAllPermissions
(
auth
()
->
user
());
$role
=
$this
->
getAllPermissions
(
auth
()
->
user
());
return
$role
;
}
}
/**
/**
...
@@ -164,7 +166,7 @@ class RoleAndPermissionsService
...
@@ -164,7 +166,7 @@ class RoleAndPermissionsService
if
(
!
$params
[
'page_size'
]
||
$params
[
'page_size'
]
==
0
){
if
(
!
$params
[
'page_size'
]
||
$params
[
'page_size'
]
==
0
){
$params
[
'page_size'
]
=
10
;
$params
[
'page_size'
]
=
10
;
}
}
$roles
=
app
(
RolesRepository
::
class
)
->
paginate
(
$params
[
'page_size'
],[
'id'
,
'name'
,
'remark'
,
'created_at'
,
'updated_at'
]);
$roles
=
app
(
RolesRepository
::
class
)
->
paginate
(
$params
[
'page_size'
],[
'id'
,
'name'
,
'
is_default'
,
'
remark'
,
'created_at'
,
'updated_at'
]);
if
(
$roles
){
if
(
$roles
){
$rolePermission
=
[];
$rolePermission
=
[];
$items
=
collect
(
$roles
->
items
())
->
map
(
function
(
$role
)
use
(
&
$rolePermission
){
$items
=
collect
(
$roles
->
items
())
->
map
(
function
(
$role
)
use
(
&
$rolePermission
){
...
@@ -186,6 +188,9 @@ class RoleAndPermissionsService
...
@@ -186,6 +188,9 @@ class RoleAndPermissionsService
$allItems
=
collect
(
$items
)
->
map
(
function
(
$item
)
use
(
$rolePermission
){
$allItems
=
collect
(
$items
)
->
map
(
function
(
$item
)
use
(
$rolePermission
){
$itemArr
=
$item
->
toArray
();
$itemArr
=
$item
->
toArray
();
$itemArr
[
'is_default'
]
=
$itemArr
[
'is_default'
]
==
1
?
true
:
false
;
$itemArr
[
'created_at'
]
=
date
(
'Y-m-d H:i:s'
,
strtotime
(
$itemArr
[
'created_at'
]));
$itemArr
[
'updated_at'
]
=
date
(
'Y-m-d H:i:s'
,
strtotime
(
$itemArr
[
'updated_at'
]));
unset
(
$itemArr
[
'permissions'
]);
unset
(
$itemArr
[
'permissions'
]);
$itemArr
[
'permissions'
]
=
$rolePermission
[
$item
[
'id'
]];
$itemArr
[
'permissions'
]
=
$rolePermission
[
$item
[
'id'
]];
...
@@ -296,4 +301,27 @@ class RoleAndPermissionsService
...
@@ -296,4 +301,27 @@ class RoleAndPermissionsService
}
}
});
});
}
}
/**
* 设置默认角色组
* @param $request
*/
public
function
setRoleDefault
(
$request
)
{
$params
=
$this
->
formatKeysfromArray
(
$request
->
all
(),
'toUnderScore'
);
//判断该角色是否存在
$roles
=
Role
::
query
()
->
whereIn
(
'id'
,
explode
(
','
,
$params
[
'id'
]))
->
first
();
if
(
!
$roles
){
throw
new
\LogicException
(
'角色不存在'
);
}
$default
=
0
;
if
(
$params
[
'is_default'
]
==
true
)
{
$default
=
1
;
}
return
$roles
->
update
([
'id'
=>
$params
[
'id'
],
'is_default'
=>
$default
]);
}
}
}
server/bootstrap/route.php
View file @
fcc71c90
...
@@ -10,4 +10,4 @@ $api = app('Dingo\Api\Routing\Router');
...
@@ -10,4 +10,4 @@ $api = app('Dingo\Api\Routing\Router');
require
__DIR__
.
'/../routes/api/auth.php'
;
require
__DIR__
.
'/../routes/api/auth.php'
;
require
__DIR__
.
'/../routes/api/permissions.php'
;
require
__DIR__
.
'/../routes/api/permissions.php'
;
return
$app
;
server/database/migrations/2022_03_22_091755_create_menus_table.php
View file @
fcc71c90
...
@@ -16,6 +16,7 @@ class CreateMenusTable extends Migration
...
@@ -16,6 +16,7 @@ class CreateMenusTable extends Migration
Schema
::
create
(
'menus'
,
function
(
Blueprint
$table
)
{
Schema
::
create
(
'menus'
,
function
(
Blueprint
$table
)
{
$table
->
id
();
$table
->
id
();
$table
->
string
(
'menu_name'
)
->
comment
(
'菜单名称'
);
$table
->
string
(
'menu_name'
)
->
comment
(
'菜单名称'
);
$table
->
string
(
'title'
)
->
comment
(
'菜单标题'
);
$table
->
string
(
'menu_path'
)
->
comment
(
'菜单路径'
);
$table
->
string
(
'menu_path'
)
->
comment
(
'菜单路径'
);
$table
->
TinyInteger
(
'parent_id'
)
->
comment
(
'父级菜单id'
);
$table
->
TinyInteger
(
'parent_id'
)
->
comment
(
'父级菜单id'
);
$table
->
enum
(
'menu_type'
,[
'top'
,
'page'
,
'button'
])
->
comment
(
'菜单类型'
);
$table
->
enum
(
'menu_type'
,[
'top'
,
'page'
,
'button'
])
->
comment
(
'菜单类型'
);
...
...
server/database/migrations/2022_03_23_064135_create_permission_tables.php
View file @
fcc71c90
...
@@ -62,6 +62,8 @@ class CreatePermissionTables extends Migration
...
@@ -62,6 +62,8 @@ class CreatePermissionTables extends Migration
Schema
::
create
(
$tableNames
[
'roles'
],
function
(
Blueprint
$table
)
{
Schema
::
create
(
$tableNames
[
'roles'
],
function
(
Blueprint
$table
)
{
$table
->
id
();
$table
->
id
();
$table
->
string
(
'name'
)
->
comment
(
'名称'
);
$table
->
string
(
'name'
)
->
comment
(
'名称'
);
$table
->
string
(
'title'
)
->
comment
(
'标题'
);
$table
->
unsignedTinyInteger
(
'is_default'
)
->
default
(
0
)
->
comment
(
'是否默认'
);
$table
->
text
(
'remark'
)
->
nullable
()
->
comment
(
'备注'
);
$table
->
text
(
'remark'
)
->
nullable
()
->
comment
(
'备注'
);
$table
->
string
(
'guard_name'
)
->
comment
(
'权限插件保留字段'
);
$table
->
string
(
'guard_name'
)
->
comment
(
'权限插件保留字段'
);
...
...
server/database/seeds/local/MenusSeeder.php
View file @
fcc71c90
...
@@ -9,7 +9,8 @@ class MenusSeeder extends Seeder
...
@@ -9,7 +9,8 @@ class MenusSeeder extends Seeder
protected
$menuList
=
[
protected
$menuList
=
[
[
[
'menu_name'
=>
'平台首页'
,
'menu_name'
=>
'page_index'
,
'title'
=>
'平台首页'
,
'menu_path'
=>
'#'
,
'menu_path'
=>
'#'
,
'parent_id'
=>
-
1
,
'parent_id'
=>
-
1
,
'menu_type'
=>
'top'
,
'menu_type'
=>
'top'
,
...
@@ -25,7 +26,8 @@ class MenusSeeder extends Seeder
...
@@ -25,7 +26,8 @@ class MenusSeeder extends Seeder
],
],
[
[
'menu_name'
=>
'系统管理'
,
'menu_name'
=>
'sys_manager'
,
'title'
=>
'系统管理'
,
'menu_path'
=>
'#'
,
'menu_path'
=>
'#'
,
'parent_id'
=>
0
,
'parent_id'
=>
0
,
'menu_type'
=>
'page'
,
'menu_type'
=>
'page'
,
...
@@ -43,7 +45,8 @@ class MenusSeeder extends Seeder
...
@@ -43,7 +45,8 @@ class MenusSeeder extends Seeder
protected
$subMenusList
=
[
protected
$subMenusList
=
[
[
[
'menu_name'
=>
'菜单权限管理'
,
'menu_name'
=>
'menu_permission'
,
'title'
=>
'菜单权限管理'
,
'menu_path'
=>
'/menus'
,
'menu_path'
=>
'/menus'
,
'parent_id'
=>
0
,
'parent_id'
=>
0
,
'menu_type'
=>
'page'
,
'menu_type'
=>
'page'
,
...
@@ -58,7 +61,8 @@ class MenusSeeder extends Seeder
...
@@ -58,7 +61,8 @@ class MenusSeeder extends Seeder
'updated_at'
=>
''
'updated_at'
=>
''
],
],
[
[
'menu_name'
=>
'用户权限管理'
,
'menu_name'
=>
'role_permission'
,
'title'
=>
'用户权限管理'
,
'menu_path'
=>
'/permission'
,
'menu_path'
=>
'/permission'
,
'parent_id'
=>
0
,
'parent_id'
=>
0
,
'menu_type'
=>
'page'
,
'menu_type'
=>
'page'
,
...
@@ -72,6 +76,22 @@ class MenusSeeder extends Seeder
...
@@ -72,6 +76,22 @@ class MenusSeeder extends Seeder
'created_at'
=>
''
,
'created_at'
=>
''
,
'updated_at'
=>
''
'updated_at'
=>
''
],
],
[
'menu_name'
=>
'user_manage'
,
'title'
=>
'用户管理'
,
'menu_path'
=>
'/user-manage'
,
'parent_id'
=>
0
,
'menu_type'
=>
'page'
,
'menu_icon'
=>
'md-person'
,
'component'
=>
'sys/user-manage/userManage'
,
'status'
=>
1
,
'is_show'
=>
1
,
'sys_default'
=>
1
,
'sort'
=>
1.11
,
'created_by'
=>
0
,
'created_at'
=>
''
,
'updated_at'
=>
''
],
];
];
...
...
server/database/seeds/local/RolesSeeder.php
View file @
fcc71c90
...
@@ -10,7 +10,9 @@ class RolesSeeder extends Seeder
...
@@ -10,7 +10,9 @@ class RolesSeeder extends Seeder
protected
$rolesList
=
[
protected
$rolesList
=
[
[
[
'name'
=>
'管理员'
,
'name'
=>
'admin'
,
'title'
=>
'管理员'
,
'is_default'
=>
0
,
'remark'
=>
'超级管理员组,拥有最高权限'
,
'remark'
=>
'超级管理员组,拥有最高权限'
,
'guard_name'
=>
''
,
'guard_name'
=>
''
,
'created_at'
=>
''
,
'created_at'
=>
''
,
...
...
server/routes/api/auth.php
View file @
fcc71c90
...
@@ -33,7 +33,7 @@ $api->version('v1', function($api) {
...
@@ -33,7 +33,7 @@ $api->version('v1', function($api) {
});
});
//用户登出
//用户登出
$api
->
group
([
'namespace'
=>
'App\Http\Controllers\V1\Auth'
,
'middleware'
=>
[
'
superadmin
'
]],
function
(
$api
)
{
$api
->
group
([
'namespace'
=>
'App\Http\Controllers\V1\Auth'
,
'middleware'
=>
[
'
permissions
'
]],
function
(
$api
)
{
$api
->
get
(
'/adminapi/auth/logout'
,
[
'uses'
=>
'AuthUserController@logout'
]);
$api
->
get
(
'/adminapi/auth/logout'
,
[
'uses'
=>
'AuthUserController@logout'
]);
});
});
...
...
server/routes/api/permissions.php
View file @
fcc71c90
...
@@ -16,21 +16,22 @@ $api->version('v1', function($api) {
...
@@ -16,21 +16,22 @@ $api->version('v1', function($api) {
$api
->
group
([
'namespace'
=>
'App\Http\Controllers\V1'
,
'middleware'
=>
[
'api.auth'
,
'permissions'
],
'providers'
=>
'jwt'
],
function
(
$api
)
{
$api
->
group
([
'namespace'
=>
'App\Http\Controllers\V1'
,
'middleware'
=>
[
'api.auth'
,
'permissions'
],
'providers'
=>
'jwt'
],
function
(
$api
)
{
//菜单相关
//菜单相关
$api
->
get
(
'/adminapi/permission/menu/
list'
,
[
'permission'
=>
'permission.menu.list'
,
'uses'
=>
'PermissionsController@get
MenuList'
]);
$api
->
get
(
'/adminapi/permission/menu/
userRoleMenuList'
,
[
'permission'
=>
'menu.permission.list'
,
'uses'
=>
'PermissionsController@getUserRole
MenuList'
]);
$api
->
post
(
'/adminapi/permission/menu/edit'
,
[
'permission'
=>
'
permission.menu
.edit'
,
'uses'
=>
'PermissionsController@editMenus'
]);
$api
->
post
(
'/adminapi/permission/menu/edit'
,
[
'permission'
=>
'
menu.permission
.edit'
,
'uses'
=>
'PermissionsController@editMenus'
]);
$api
->
post
(
'/adminapi/permission/menu/sub
_add'
,
[
'permission'
=>
'permission.menu.sub_
add'
,
'uses'
=>
'PermissionsController@addSubMenus'
]);
$api
->
post
(
'/adminapi/permission/menu/sub
Add'
,
[
'permission'
=>
'menu.permission.
add'
,
'uses'
=>
'PermissionsController@addSubMenus'
]);
$api
->
post
(
'/adminapi/permission/menu/del'
,
[
'permission'
=>
'
permission.menu.del'
,
'uses'
=>
'PermissionsController@deleteMenus'
]);
$api
->
post
(
'/adminapi/permission/menu/del'
,
[
'permission'
=>
'
menu.permission.del'
,
'uses'
=>
'PermissionsController@deleteMenus'
]);
$api
->
get
(
'/adminapi/permission/menu/all'
,
[
'permission'
=>
'
permission.menu.all
'
,
'uses'
=>
'PermissionsController@getAllMenuList'
]);
$api
->
get
(
'/adminapi/permission/menu/all'
,
[
'permission'
=>
'
menu.permission.list
'
,
'uses'
=>
'PermissionsController@getAllMenuList'
]);
//角色相关
//角色相关
$api
->
get
(
'/adminapi/permission/role/getAllByPage'
,
[
'permission'
=>
'permission.role.get_all_by_page'
,
'uses'
=>
'PermissionsController@getAllByPage'
]);
$api
->
get
(
'/adminapi/permission/role/getAllByPage'
,
[
'permission'
=>
'role.permission.list'
,
'uses'
=>
'PermissionsController@getAllByPage'
]);
$api
->
get
(
'/adminapi/permission/role/getAllList'
,
[
'permission'
=>
'permission.role.get_all_list'
,
'uses'
=>
'PermissionsController@getAllList'
]);
$api
->
get
(
'/adminapi/permission/role/getAllList'
,
[
'permission'
=>
'role.permission.list'
,
'uses'
=>
'PermissionsController@getAllList'
]);
$api
->
post
(
'/adminapi/permission/role/add'
,
[
'permission'
=>
'permission_role_add'
,
'uses'
=>
'PermissionsController@addRole'
]);
$api
->
post
(
'/adminapi/permission/role/add'
,
[
'permission'
=>
'role.permission.add'
,
'uses'
=>
'PermissionsController@addRole'
]);
$api
->
post
(
'/adminapi/permission/role/edit'
,
[
'permission'
=>
'permission.role.edit'
,
'uses'
=>
'PermissionsController@editRole'
]);
$api
->
post
(
'/adminapi/permission/role/edit'
,
[
'permission'
=>
'role.permission.edit'
,
'uses'
=>
'PermissionsController@editRole'
]);
$api
->
post
(
'/adminapi/permission/role/delByIds'
,
[
'permission'
=>
'permission.role.del_by_ids'
,
'uses'
=>
'PermissionsController@delByIds'
]);
$api
->
post
(
'/adminapi/permission/role/delByIds'
,
[
'permission'
=>
'role.permission.del'
,
'uses'
=>
'PermissionsController@delByIds'
]);
$api
->
post
(
'/adminapi/permission/role/editRolePermission'
,
[
'permission'
=>
'permission.role.edit_role_permission'
,
'uses'
=>
'PermissionsController@editRolePermission'
]);
$api
->
post
(
'/adminapi/permission/role/editRolePermission'
,
[
'permission'
=>
'role.permission.edit'
,
'uses'
=>
'PermissionsController@editRolePermission'
]);
$api
->
post
(
'/adminapi/permission/role/setDefault'
,
[
'permission'
=>
'role.permission.edit'
,
'uses'
=>
'PermissionsController@editRoleDefault'
]);
$api
->
get
(
'/adminapi/permission/dictData/defaultButtonPermission'
,
[
'permission'
=>
'permission.dict_data.default_button_permission'
,
'uses'
=>
'PermissionsController@getDefaultButtonPermission'
]);
$api
->
get
(
'/adminapi/permission/dictData/defaultButtonPermission'
,
[
'uses'
=>
'PermissionsController@getDefaultButtonPermission'
]);
});
});
});
});
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment