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
61352f7d
Commit
61352f7d
authored
Apr 05, 2022
by
hangjun83
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
整体代码布局调整
parent
11f9979f
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
593 additions
and
506 deletions
+593
-506
server/app/Http/Controllers/Middleware/Authenticate.php
server/app/Http/Controllers/Middleware/Authenticate.php
+11
-1
server/app/Http/Controllers/Resources/UserCollection.php
server/app/Http/Controllers/Resources/UserCollection.php
+0
-0
server/app/Http/Controllers/Resources/UserResource.php
server/app/Http/Controllers/Resources/UserResource.php
+0
-0
server/app/Http/Controllers/V1/Auth/AuthUserController.php
server/app/Http/Controllers/V1/Auth/AuthUserController.php
+184
-0
server/app/Http/Controllers/V1/Controller.php
server/app/Http/Controllers/V1/Controller.php
+1
-1
server/app/Http/Controllers/V1/PermissionsController.php
server/app/Http/Controllers/V1/PermissionsController.php
+23
-183
server/app/Services/AuthService.php
server/app/Services/AuthService.php
+16
-7
server/app/Services/MenusService.php
server/app/Services/MenusService.php
+301
-2
server/app/Services/RoleAndPermissionsService.php
server/app/Services/RoleAndPermissionsService.php
+3
-279
server/bootstrap/app.php
server/bootstrap/app.php
+2
-3
server/bootstrap/route.php
server/bootstrap/route.php
+1
-0
server/routes/api/auth.php
server/routes/api/auth.php
+14
-30
server/routes/api/permissions.php
server/routes/api/permissions.php
+37
-0
No files found.
server/app/Http/Middleware/Authenticate.php
→
server/app/Http/
Controllers/
Middleware/Authenticate.php
View file @
61352f7d
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
* with this source code in the file LICENSE.
* with this source code in the file LICENSE.
*/
*/
namespace
App\Http\Middleware
;
namespace
App\Http\
Controllers\
Middleware
;
use
App\Repositories\Enums\ResponseCodeEnum
;
use
App\Repositories\Enums\ResponseCodeEnum
;
use
Closure
;
use
Closure
;
...
@@ -73,6 +73,16 @@ class Authenticate
...
@@ -73,6 +73,16 @@ class Authenticate
$request
->
headers
->
set
(
'authorization'
,
'bearer'
.
$decodeToken
[
'hash'
]);
$request
->
headers
->
set
(
'authorization'
,
'bearer'
.
$decodeToken
[
'hash'
]);
}
}
//对用户权限进行判断验证
$currentUser
=
auth
()
->
user
();
/*echo "<pre>";
print_r($currentUser->permissions->toArray());
exit;*/
/*echo "<pre>";
print_R($request->route());
exit;*/
return
$next
(
$request
);
return
$next
(
$request
);
}
}
}
}
server/app/Http/Resources/UserCollection.php
→
server/app/Http/
Controllers/
Resources/UserCollection.php
View file @
61352f7d
File moved
server/app/Http/Resources/UserResource.php
→
server/app/Http/
Controllers/
Resources/UserResource.php
View file @
61352f7d
File moved
server/app/Http/Controllers/V1/Auth/AuthUserController.php
0 → 100644
View file @
61352f7d
<?php
/*
* This file is part of the Jiannei/lumen-api-starter.
*
* (c) Jiannei <longjian.huang@foxmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace
App\Http\Controllers\V1\Auth
;
use
Illuminate\Http\Request
;
use
Jiannei\Response\Laravel\Support\Facades\Response
;
use
App\Http\Controllers\V1\Controller
;
use
App\Services\AuthService
;
use
App\Services\RoleAndPermissionsService
;
class
AuthUserController
extends
Controller
{
protected
$authService
=
null
;
/**
* Create a new AuthController instance.
* @param \App\Services\AuthService $authService
*/
public
function
__construct
(
AuthService
$authService
)
{
$this
->
authService
=
$authService
;
}
/**
* @param \Illuminate\Http\Request $request
*/
public
function
login
(
Request
$request
)
{
$message
=
[
'username.required'
=>
"请输入用户名"
,
'password.required'
=>
"请输入密码"
,
];
$this
->
validateRequest
(
$request
,
$message
);
try
{
$response
=
$this
->
authService
->
login
(
$request
);
return
Response
::
success
([
'token'
=>
$response
,
],
'登陆成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
$exception
->
getCode
());
}
}
/**
* @param \Illuminate\Http\Request $request
*/
public
function
logout
(
Request
$request
)
{
try
{
$this
->
authService
->
logout
(
$request
);
return
Response
::
success
(
null
,
'请求成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
$exception
->
getCode
());
}
}
public
function
addUser
(
Request
$request
)
{
$message
=
[
'username.required'
=>
"用户登陆账号必填"
,
'password.required'
=>
"密码必填"
,
'type.required'
=>
"用户类型必选"
,
'nickname.required'
=>
"用户名称必填"
,
'email.required'
=>
"邮箱必填"
,
];
$this
->
validateRequest
(
$request
,
$message
);
try
{
$this
->
authService
->
saveOrUpdateUser
(
$request
);
return
Response
::
success
(
null
,
'请求成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
}
}
public
function
editUser
(
Request
$request
)
{
$message
=
[
'type.required'
=>
"用户类型必选"
,
'nickname.required'
=>
"用户名称必填"
,
'email.required'
=>
"邮箱必填"
,
];
$this
->
validateRequest
(
$request
,
$message
);
try
{
$this
->
authService
->
saveOrUpdateUser
(
$request
);
return
Response
::
success
(
null
,
'请求成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
}
}
public
function
changeUserStatus
(
Request
$request
,
$id
)
{
if
(
!
$id
){
return
Response
::
fail
(
'缺少id参数'
,
500
);
}
try
{
$this
->
authService
->
updateUserStatus
(
$request
,
$id
);
return
Response
::
success
(
null
,
'请求成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
}
}
public
function
delUserByIds
(
Request
$request
)
{
$message
=
[
'ids.required'
=>
"用户id必传"
,
];
$this
->
validateRequest
(
$request
,
$message
);
try
{
$this
->
authService
->
deleteUser
(
$request
);
return
Response
::
success
(
null
,
'请求成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
}
}
/**
* 获取用户信息
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public
function
info
(
Request
$request
)
{
try
{
$user
=
$this
->
authService
->
getUserInfo
();
$service
=
app
(
RoleAndPermissionsService
::
class
);
$service
->
getRolesToUser
();
return
Response
::
success
([
'userinfo'
=>
$user
,
],
'请求成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
$exception
->
getCode
());
}
}
public
function
listByPage
(
Request
$request
)
{
try
{
$service
=
app
(
AuthService
::
class
);
$roles
=
$service
->
listByPage
(
$request
);
return
Response
::
success
(
$service
->
formatKeysfromArray
(
$roles
,
'toCamelCase'
),
'操作成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
}
}
/**
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public
function
resetPassword
(
Request
$request
)
{
$message
=
[
'oldpassword.required'
=>
"请输入旧密码"
,
'newpassword.required'
=>
"请输入新密码"
,
];
$this
->
validateRequest
(
$request
,
$message
);
try
{
$response
=
$this
->
authService
->
resetPassword
(
$request
);
return
Response
::
success
([],
'更新成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
$exception
->
getCode
());
}
}
}
server/app/Http/V1/Controller.php
→
server/app/Http/
Controllers/
V1/Controller.php
View file @
61352f7d
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
* with this source code in the file LICENSE.
* with this source code in the file LICENSE.
*/
*/
namespace
App\Http\V1
;
namespace
App\Http\
Controllers\
V1
;
use
Jiannei\Response\Laravel\Support\Facades\Response
;
use
Jiannei\Response\Laravel\Support\Facades\Response
;
use
Jiannei\Response\Laravel\Support\Traits\ExceptionTrait
;
use
Jiannei\Response\Laravel\Support\Traits\ExceptionTrait
;
...
...
server/app/Http/
V1/Auth/Authorization
Controller.php
→
server/app/Http/
Controllers/V1/Permissions
Controller.php
View file @
61352f7d
...
@@ -9,178 +9,26 @@
...
@@ -9,178 +9,26 @@
* with this source code in the file LICENSE.
* with this source code in the file LICENSE.
*/
*/
namespace
App\Http\
V1\Auth
;
namespace
App\Http\
Controllers\V1
;
use
App\
Repositories\Enums\ResponseCodeEnum
;
use
App\
Services\MenusService
;
use
Illuminate\Http\Request
;
use
Illuminate\Http\Request
;
use
Jiannei\Response\Laravel\Support\Facades\Response
;
use
Jiannei\Response\Laravel\Support\Facades\Response
;
use
App\Http\V1\Controller
;
use
App\Http\Controllers\V1\Controller
;
use
App\Services\AuthService
;
use
App\Services\RoleAndPermissionsService
;
use
App\Services\RoleAndPermissionsService
;
class
Authorization
Controller
extends
Controller
class
Permissions
Controller
extends
Controller
{
{
protected
$
auth
Service
=
null
;
protected
$
roleAndPermission
Service
=
null
;
/**
/**
* Create a new AuthController instance.
* Create a new AuthController instance.
* @param \App\Services\AuthService $authService
* @param \App\Services\AuthService $authService
*/
*/
public
function
__construct
(
AuthService
$auth
Service
)
public
function
__construct
(
RoleAndPermissionsService
$roleAndPermissions
Service
)
{
{
$this
->
authService
=
$authService
;
$this
->
roleAndPermissionService
=
$roleAndPermissionsService
;
}
/**
* @param \Illuminate\Http\Request $request
*/
public
function
login
(
Request
$request
)
{
$message
=
[
'username.required'
=>
"请输入用户名"
,
'password.required'
=>
"请输入密码"
,
];
$this
->
validateRequest
(
$request
,
$message
);
try
{
$response
=
$this
->
authService
->
login
(
$request
);
return
Response
::
success
([
'token'
=>
$response
,
],
'登陆成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
$exception
->
getCode
());
}
}
/**
* @param \Illuminate\Http\Request $request
*/
public
function
logout
(
Request
$request
)
{
try
{
$this
->
authService
->
logout
(
$request
);
return
Response
::
success
(
null
,
'请求成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
$exception
->
getCode
());
}
}
public
function
addUser
(
Request
$request
)
{
$message
=
[
'username.required'
=>
"用户登陆账号必填"
,
'password.required'
=>
"密码必填"
,
'type.required'
=>
"用户类型必选"
,
'nickname.required'
=>
"用户名称必填"
,
'email.required'
=>
"邮箱必填"
,
];
$this
->
validateRequest
(
$request
,
$message
);
try
{
$this
->
authService
->
saveOrUpdateUser
(
$request
);
return
Response
::
success
(
null
,
'请求成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
}
}
public
function
editUser
(
Request
$request
)
{
$message
=
[
'type.required'
=>
"用户类型必选"
,
'nickname.required'
=>
"用户名称必填"
,
'email.required'
=>
"邮箱必填"
,
];
$this
->
validateRequest
(
$request
,
$message
);
try
{
$this
->
authService
->
saveOrUpdateUser
(
$request
);
return
Response
::
success
(
null
,
'请求成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
}
}
public
function
changeUserStatus
(
Request
$request
,
$id
)
{
if
(
!
$id
){
return
Response
::
fail
(
'缺少id参数'
,
500
);
}
try
{
$this
->
authService
->
updateUserStatus
(
$request
,
$id
);
return
Response
::
success
(
null
,
'请求成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
}
}
public
function
delUserByIds
(
Request
$request
)
{
$message
=
[
'ids.required'
=>
"用户id必传"
,
];
$this
->
validateRequest
(
$request
,
$message
);
try
{
$this
->
authService
->
deleteUser
(
$request
);
return
Response
::
success
(
null
,
'请求成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
}
}
/**
* 获取用户信息
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public
function
info
(
Request
$request
)
{
try
{
$user
=
$this
->
authService
->
getUserInfo
();
$service
=
app
(
RoleAndPermissionsService
::
class
);
$service
->
getRolesToUser
();
return
Response
::
success
([
'userinfo'
=>
$user
,
],
'请求成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
$exception
->
getCode
());
}
}
public
function
listByPage
(
Request
$request
)
{
try
{
$service
=
app
(
AuthService
::
class
);
$roles
=
$service
->
listByPage
(
$request
);
return
Response
::
success
(
$service
->
formatKeysfromArray
(
$roles
,
'toCamelCase'
),
'操作成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
}
}
/**
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public
function
resetPassword
(
Request
$request
)
{
$message
=
[
'oldpassword.required'
=>
"请输入旧密码"
,
'newpassword.required'
=>
"请输入新密码"
,
];
$this
->
validateRequest
(
$request
,
$message
);
try
{
$response
=
$this
->
authService
->
resetPassword
(
$request
);
return
Response
::
success
([],
'更新成功'
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
$exception
->
getCode
());
}
}
}
/**
/**
...
@@ -191,10 +39,9 @@ class AuthorizationController extends Controller
...
@@ -191,10 +39,9 @@ class AuthorizationController extends Controller
public
function
getMenuList
(
Request
$request
)
public
function
getMenuList
(
Request
$request
)
{
{
try
{
try
{
$service
=
app
(
RoleAndPermissionsService
::
class
);
$menuList
=
$this
->
roleAndPermissionService
->
getUserRoleMenus
();
$menuList
=
$service
->
getUserRoleMenus
();
return
Response
::
success
([
return
Response
::
success
([
'data'
=>
$service
->
getMenusTree
(
$menuList
,
'page'
),
'data'
=>
app
(
MenusService
::
class
)
->
getMenusTree
(
$menuList
,
'page'
),
],
'请求成功'
);
],
'请求成功'
);
}
catch
(
\Exception
$exception
){
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
$exception
->
getCode
());
return
Response
::
fail
(
$exception
->
getMessage
(),
$exception
->
getCode
());
...
@@ -209,7 +56,7 @@ class AuthorizationController extends Controller
...
@@ -209,7 +56,7 @@ class AuthorizationController extends Controller
public
function
getAllMenuList
(
Request
$request
)
public
function
getAllMenuList
(
Request
$request
)
{
{
try
{
try
{
$service
=
app
(
RoleAndPermission
sService
::
class
);
$service
=
app
(
Menu
sService
::
class
);
$menuList
=
$service
->
getAllMenus
();
$menuList
=
$service
->
getAllMenus
();
$treeMenu
=
$service
->
getMenusTree
(
$menuList
);
$treeMenu
=
$service
->
getMenusTree
(
$menuList
);
return
Response
::
success
([
return
Response
::
success
([
...
@@ -245,7 +92,7 @@ class AuthorizationController extends Controller
...
@@ -245,7 +92,7 @@ class AuthorizationController extends Controller
}
}
try
{
try
{
$service
=
app
(
RoleAndPermission
sService
::
class
);
$service
=
app
(
Menu
sService
::
class
);
$service
->
editMenu
(
$request
);
$service
->
editMenu
(
$request
);
return
Response
::
success
([],
'更新成功'
);
return
Response
::
success
([],
'更新成功'
);
}
catch
(
\Exception
$exception
){
}
catch
(
\Exception
$exception
){
...
@@ -256,8 +103,7 @@ class AuthorizationController extends Controller
...
@@ -256,8 +103,7 @@ class AuthorizationController extends Controller
public
function
getDefaultButtonPermission
(
Request
$request
)
public
function
getDefaultButtonPermission
(
Request
$request
)
{
{
try
{
try
{
$service
=
app
(
RoleAndPermissionsService
::
class
);
$buttonPermissions
=
$this
->
roleAndPermissionService
->
getButtonDefaultPermission
();
$buttonPermissions
=
$service
->
getButtonDefaultPermission
();
return
Response
::
success
(
$buttonPermissions
,
'操作成功'
);
return
Response
::
success
(
$buttonPermissions
,
'操作成功'
);
}
catch
(
\Exception
$exception
){
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
$exception
->
getCode
());
return
Response
::
fail
(
$exception
->
getMessage
(),
$exception
->
getCode
());
...
@@ -293,11 +139,11 @@ class AuthorizationController extends Controller
...
@@ -293,11 +139,11 @@ class AuthorizationController extends Controller
}
}
try
{
try
{
$service
=
app
(
RoleAndPermission
sService
::
class
);
$service
=
app
(
Menu
sService
::
class
);
$service
->
addSubMenu
(
$request
);
$service
->
addSubMenu
(
$request
);
return
Response
::
success
([],
'操作成功'
);
return
Response
::
success
([],
'操作成功'
);
}
catch
(
\Exception
$exception
){
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
$exception
->
getCode
()
);
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
}
}
}
}
...
@@ -309,7 +155,7 @@ class AuthorizationController extends Controller
...
@@ -309,7 +155,7 @@ class AuthorizationController extends Controller
$this
->
validateRequest
(
$request
,
$message
);
$this
->
validateRequest
(
$request
,
$message
);
try
{
try
{
$service
=
app
(
RoleAndPermission
sService
::
class
);
$service
=
app
(
Menu
sService
::
class
);
$service
->
deleteMenus
(
$request
);
$service
->
deleteMenus
(
$request
);
return
Response
::
success
([],
'操作成功'
);
return
Response
::
success
([],
'操作成功'
);
}
catch
(
\Exception
$exception
){
}
catch
(
\Exception
$exception
){
...
@@ -325,9 +171,8 @@ class AuthorizationController extends Controller
...
@@ -325,9 +171,8 @@ class AuthorizationController extends Controller
public
function
getAllByPage
(
Request
$request
)
public
function
getAllByPage
(
Request
$request
)
{
{
try
{
try
{
$service
=
app
(
RoleAndPermissionsService
::
class
);
$roles
=
$this
->
roleAndPermissionService
->
getAllRolesToPage
(
$request
);
$roles
=
$service
->
getAllRolesToPage
(
$request
);
return
Response
::
success
(
$this
->
roleAndPermissionService
->
formatKeysfromArray
(
$roles
,
'toCamelCase'
),
'操作成功'
);
return
Response
::
success
(
$service
->
formatKeysfromArray
(
$roles
,
'toCamelCase'
),
'操作成功'
);
}
catch
(
\Exception
$exception
){
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
$exception
->
getCode
());
return
Response
::
fail
(
$exception
->
getMessage
(),
$exception
->
getCode
());
}
}
...
@@ -336,9 +181,8 @@ class AuthorizationController extends Controller
...
@@ -336,9 +181,8 @@ class AuthorizationController extends Controller
public
function
getAllList
(
Request
$request
)
public
function
getAllList
(
Request
$request
)
{
{
try
{
try
{
$service
=
app
(
RoleAndPermissionsService
::
class
);
$roles
=
$this
->
roleAndPermissionService
->
getAllRolesList
(
$request
);
$roles
=
$service
->
getAllRolesList
(
$request
);
return
Response
::
success
(
$this
->
roleAndPermissionService
->
formatKeysfromArray
(
$roles
,
'toCamelCase'
),
'操作成功'
);
return
Response
::
success
(
$service
->
formatKeysfromArray
(
$roles
,
'toCamelCase'
),
'操作成功'
);
}
catch
(
\Exception
$exception
){
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
$exception
->
getCode
());
return
Response
::
fail
(
$exception
->
getMessage
(),
$exception
->
getCode
());
}
}
...
@@ -353,8 +197,7 @@ class AuthorizationController extends Controller
...
@@ -353,8 +197,7 @@ class AuthorizationController extends Controller
$this
->
validateRequest
(
$request
,
$message
);
$this
->
validateRequest
(
$request
,
$message
);
try
{
try
{
$service
=
app
(
RoleAndPermissionsService
::
class
);
$this
->
roleAndPermissionService
->
saveRole
(
$request
);
$service
->
saveRole
(
$request
);
return
Response
::
success
([],
'操作成功'
);
return
Response
::
success
([],
'操作成功'
);
}
catch
(
\Exception
$exception
){
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
...
@@ -376,8 +219,7 @@ class AuthorizationController extends Controller
...
@@ -376,8 +219,7 @@ class AuthorizationController extends Controller
$this
->
validateRequest
(
$request
,
$message
);
$this
->
validateRequest
(
$request
,
$message
);
try
{
try
{
$service
=
app
(
RoleAndPermissionsService
::
class
);
$this
->
roleAndPermissionService
->
saveRole
(
$request
);
$service
->
saveRole
(
$request
);
return
Response
::
success
([],
'操作成功'
);
return
Response
::
success
([],
'操作成功'
);
}
catch
(
\Exception
$exception
){
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
...
@@ -397,8 +239,7 @@ class AuthorizationController extends Controller
...
@@ -397,8 +239,7 @@ class AuthorizationController extends Controller
$this
->
validateRequest
(
$request
,
$message
);
$this
->
validateRequest
(
$request
,
$message
);
try
{
try
{
$service
=
app
(
RoleAndPermissionsService
::
class
);
$this
->
roleAndPermissionService
->
syncPermissionToRole
(
$request
);
$service
->
syncPermissionToRole
(
$request
);
return
Response
::
success
([],
'操作成功'
);
return
Response
::
success
([],
'操作成功'
);
}
catch
(
\Exception
$exception
){
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
...
@@ -413,8 +254,7 @@ class AuthorizationController extends Controller
...
@@ -413,8 +254,7 @@ class AuthorizationController extends Controller
$this
->
validateRequest
(
$request
,
$message
);
$this
->
validateRequest
(
$request
,
$message
);
try
{
try
{
$service
=
app
(
RoleAndPermissionsService
::
class
);
$this
->
roleAndPermissionService
->
deleteRoleByIds
(
$request
);
$service
->
deleteRoleByIds
(
$request
);
return
Response
::
success
([],
'操作成功'
);
return
Response
::
success
([],
'操作成功'
);
}
catch
(
\Exception
$exception
){
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
...
...
server/app/Services/AuthService.php
View file @
61352f7d
...
@@ -53,6 +53,9 @@ class AuthService
...
@@ -53,6 +53,9 @@ class AuthService
if
(
!
$user
=
auth
()
->
attempt
(
$requestCriteria
)
){
if
(
!
$user
=
auth
()
->
attempt
(
$requestCriteria
)
){
throw
new
UnauthorizedHttpException
(
'authroization error'
,
'用户登陆授权失败,用户名或密码错误'
,
null
,
ResponseCodeEnum
::
CLIENT_PARAMETER_ERROR
);
throw
new
UnauthorizedHttpException
(
'authroization error'
,
'用户登陆授权失败,用户名或密码错误'
,
null
,
ResponseCodeEnum
::
CLIENT_PARAMETER_ERROR
);
}
}
if
(
auth
()
->
user
()
->
toArray
()[
'status'
]
==
0
){
throw
new
UnauthorizedHttpException
(
'authroization error'
,
'用户登陆授权失败,该用户已被冻结'
,
null
,
ResponseCodeEnum
::
CLIENT_PARAMETER_ERROR
);
}
return
$this
->
generateToken
(
$user
);
return
$this
->
generateToken
(
$user
);
}
catch
(
\Exception
$exception
){
}
catch
(
\Exception
$exception
){
throw
new
UnauthorizedHttpException
(
'authroization error'
,
$exception
->
getMessage
(),
null
,
ResponseCodeEnum
::
SERVICE_LOGIN_ERROR
);
throw
new
UnauthorizedHttpException
(
'authroization error'
,
$exception
->
getMessage
(),
null
,
ResponseCodeEnum
::
SERVICE_LOGIN_ERROR
);
...
@@ -90,6 +93,11 @@ class AuthService
...
@@ -90,6 +93,11 @@ class AuthService
if
(
!
$params
[
'page_size'
]
||
$params
[
'page_size'
]
==
0
){
if
(
!
$params
[
'page_size'
]
||
$params
[
'page_size'
]
==
0
){
$params
[
'page_size'
]
=
10
;
$params
[
'page_size'
]
=
10
;
}
}
if
(
isset
(
$params
[
'type'
])){
}
$users
=
$this
->
userRepository
->
paginate
(
$params
[
'page_size'
],[
'id'
,
'username'
,
'nickname'
,
'email'
,
'token'
,
'is_admin'
,
'status'
,
'lastlogin'
,
'created_at'
,
'updated_at'
]);
$users
=
$this
->
userRepository
->
paginate
(
$params
[
'page_size'
],[
'id'
,
'username'
,
'nickname'
,
'email'
,
'token'
,
'is_admin'
,
'status'
,
'lastlogin'
,
'created_at'
,
'updated_at'
]);
$returnRecord
=
[];
$returnRecord
=
[];
if
(
$users
){
if
(
$users
){
...
@@ -172,8 +180,9 @@ class AuthService
...
@@ -172,8 +180,9 @@ class AuthService
// 如果编辑用户时选择了所属角色
// 如果编辑用户时选择了所属角色
if
(
isset
(
$params
[
'role_ids'
])
&&
!
empty
(
$params
[
'role_ids'
])){
if
(
isset
(
$params
[
'role_ids'
])
&&
!
empty
(
$params
[
'role_ids'
])){
$ids
=
explode
(
','
,
$params
[
'role_ids'
]);
$ids
=
explode
(
','
,
$params
[
'role_ids'
]);
$roles
=
Role
::
query
()
->
whereIn
(
'id'
,
$ids
)
->
get
();
//获取需要分配的角色
if
(
!
$roles
){
$toBeAssignRoles
=
Role
::
query
()
->
whereIn
(
'id'
,
$ids
)
->
get
();
if
(
!
$toBeAssignRoles
){
throw
new
\LogicException
(
'角色不存在'
);
throw
new
\LogicException
(
'角色不存在'
);
}
}
...
@@ -182,13 +191,13 @@ class AuthService
...
@@ -182,13 +191,13 @@ class AuthService
$belongRoles
=
$user
->
roles
;
$belongRoles
=
$user
->
roles
;
//角色
//角色
if
(
count
(
$belongRoles
->
toArray
())
>
0
){
if
(
count
(
$belongRoles
->
toArray
())
>
0
){
$this
->
removeUserRoleAndPermission
(
$user
,
$
r
oles
);
$this
->
removeUserRoleAndPermission
(
$user
,
$
belongR
oles
);
}
}
$this
->
authroizeUserRoleAndPermission
(
$user
,
$
r
oles
);
$this
->
authroizeUserRoleAndPermission
(
$user
,
$
toBeAssignR
oles
);
}
else
{
}
else
{
$
r
oles
=
$user
->
roles
;
$
belongR
oles
=
$user
->
roles
;
if
(
count
(
$
r
oles
->
toArray
())
>
0
){
if
(
count
(
$
belongR
oles
->
toArray
())
>
0
){
$this
->
removeUserRoleAndPermission
(
$user
,
$
r
oles
);
$this
->
removeUserRoleAndPermission
(
$user
,
$
belongR
oles
);
}
}
}
}
}
}
...
...
server/app/Services/MenusService.php
View file @
61352f7d
...
@@ -12,10 +12,12 @@
...
@@ -12,10 +12,12 @@
namespace
App\Services
;
namespace
App\Services
;
use
App\Repositories\Enums\ResponseCodeEnum
;
use
App\Repositories\Enums\ResponseCodeEnum
;
use
App\Repositories\Models\Menus
;
use
App\Support\Traits\Helpers
;
use
App\Support\Traits\Helpers
;
use
App\Repositories\Contracts\MenusRepository
;
use
App\Repositories\Contracts\MenusRepository
;
use
Illuminate\Http\Request
;
use
Illuminate\Http\Request
;
use
Illuminate\Support\Str
;
use
Illuminate\Support\Str
;
use
Spatie\Permission\Models\Permission
;
use
Spatie\Permission\Models\Role
;
use
Spatie\Permission\Models\Role
;
use
Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException
;
use
Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException
;
...
@@ -26,13 +28,310 @@ class MenusService
...
@@ -26,13 +28,310 @@ class MenusService
use
Helpers
;
use
Helpers
;
protected
$menuRepository
=
null
;
protected
$menu
s
Repository
=
null
;
public
function
__construct
(
MenusRepository
$menuRepository
)
public
function
__construct
(
MenusRepository
$menuRepository
)
{
{
$this
->
menuRepository
=
$menuRepository
;
$this
->
menu
s
Repository
=
$menuRepository
;
}
}
/**
* 添加子菜单
* @param $request
* @return bool
*/
public
function
addSubMenu
(
$request
)
{
$params
=
$this
->
formatKeysfromArray
(
$request
->
all
(),
'toUnderScore'
);
$menuModel
=
app
(
Menus
::
class
);
$parentMenu
=
$menuModel
->
where
(
'id'
,
$params
[
'parent_id'
])
->
first
();
if
(
!
$parentMenu
){
throw
new
\LogicException
(
'上级菜单不存在!'
,
500
);
}
if
(
'button'
==
$params
[
'type'
]){
$permission
=
Permission
::
query
()
->
where
([
'menu_id'
=>
0
,
'sys_default'
=>
1
,
'guard_name'
=>
config
(
'auth.defaults.guard'
),
'action'
=>
$params
[
'button_type'
]])
->
first
();
if
(
!
$permission
){
throw
new
\LogicException
(
'按钮动作不存在!'
,
500
);
}
}
$filterParams
=
[];
collect
(
$this
->
menusRepository
->
rules
[
'create'
])
->
map
(
function
(
$rule
,
$key
)
use
(
$params
,
&
$filterParams
){
if
(
isset
(
$params
[
$key
])
&&
!
empty
(
$params
[
$key
])){
$filterParams
[
$key
]
=
$params
[
$key
];
}
else
{
$filterParams
[
$key
]
=
''
;
}
});
$filterParams
[
'created_by'
]
=
auth
()
->
user
()
->
id
;
$filterParams
[
'menu_icon'
]
=
$params
[
'icon'
];
$filterParams
[
'component'
]
=
$params
[
'component'
];
$filterParams
[
'status'
]
=
intval
(
$params
[
'status'
]);
$filterParams
=
collect
(
$filterParams
)
->
map
(
function
(
$value
,
$key
)
use
(
$params
){
if
(
$value
==
''
){
switch
(
$key
){
case
'menu_name'
:
$value
=
$params
[
'title'
];
break
;
case
'menu_path'
:
$value
=
$params
[
'path'
];
break
;
case
'menu_icon'
:
$value
=
$params
[
'icon'
];
break
;
case
'menu_type'
:
$value
=
$params
[
'type'
];
break
;
case
'is_show'
:
$value
=
1
;
break
;
case
'sys_default'
:
$value
=
0
;
break
;
}
}
return
$value
;
});
$result
=
$this
->
menusRepository
->
create
(
$filterParams
->
toArray
());
if
(
$result
){
$permission
=
[];
$permission
[
'name'
]
=
$result
[
'menu_name'
];
$permission
[
'menu_id'
]
=
$result
[
'id'
];
$permission
[
'action'
]
=
$params
[
'button_type'
];
$permission
[
'permission_type'
]
=
'menu'
;
$permission
[
'sys_default'
]
=
0
;
$permission
[
'remark'
]
=
$result
[
'menu_name'
]
.
'的相关权限'
;
$permission
[
'guard_name'
]
=
config
(
'auth.defaults.guard'
);
//增加对应的按钮权限
$permissionResult
=
Permission
::
create
(
$permission
);
// 如果是管理员,自动绑定赋予权限
if
(
auth
()
->
user
()
->
isSuperAdmin
()){
if
(
$permissionResult
){
app
(
RoleAndPermissionsService
::
class
)
->
assignRoleAndPermissionToUser
(
$permissionResult
,
auth
()
->
user
());
}
}
}
return
true
;
}
/**
* 删除菜单
* @param $request
*/
public
function
deleteMenus
(
$request
)
{
$params
=
$this
->
formatKeysfromArray
(
$request
->
all
(),
'toUnderScore'
);
$menuModel
=
app
(
Menus
::
class
);
$menu_ids
=
explode
(
','
,
$params
[
'ids'
]);
if
(
!
$menus
=
$menuModel
->
whereIn
(
'id'
,
$menu_ids
)
->
get
()){
throw
new
\LogicException
(
'选中的菜单不存在!'
,
500
);
}
//判断该菜单下面是否有其他子菜单
$parent_menus
=
$menuModel
->
whereIn
(
'id'
,
$menu_ids
)
->
get
();
if
(
$parent_menus
){
$notFatherMenus
=
[];
$checkedMenus
=
[];
collect
(
$parent_menus
)
->
map
(
function
(
$menu
)
use
(
&
$notFatherMenus
,
&
$checkedMenus
){
if
(
count
(
$notFatherMenus
)
==
0
){
$notFatherMenus
[
$menu
[
'id'
]]
=
$menu
;
}
else
{
if
(
isset
(
$notFatherMenus
[
$menu
[
'parent_id'
]])){
unset
(
$notFatherMenus
[
$menu
[
'parent_id'
]]);
$checkedMenus
[]
=
$menu
[
'parent_id'
];
}
else
{
if
(
!
in_array
(
$menu
[
'parent_id'
],
$checkedMenus
)){
$notFatherMenus
[
$menu
[
'id'
]]
=
$menu
;
}
}
}
});
if
(
count
(
$notFatherMenus
)
>
0
){
if
(
count
(
$menuModel
->
whereIn
(
'parent_id'
,
array_keys
(
$notFatherMenus
))
->
get
()
->
toArray
())
>
0
){
throw
new
\LogicException
(
'选中的菜单中有子菜单存在,无法删除该菜单。'
,
500
);
}
}
}
//判断选中的菜单是否已被赋予权限给到用户组
//查询该菜单对应的权限数据
$menuPermission
=
Permission
::
query
()
->
whereIn
(
'menu_id'
,
$menu_ids
)
->
get
();
if
(
$menuPermission
){
$allRoles
=
Role
::
all
();
if
(
$allRoles
){
$hasPermission
=
false
;
collect
(
$allRoles
)
->
map
(
function
(
$role
)
use
(
$menuPermission
,
&
$hasPermission
){
collect
(
$menuPermission
)
->
map
(
function
(
$permission
)
use
(
$role
,
&
$hasPermission
){
if
(
$role
->
hasPermissionTo
(
$permission
)){
$hasPermission
=
true
;
}
});
});
if
(
$hasPermission
){
throw
new
\LogicException
(
'用户权限中已经包含该菜单权限,请先取消角色中该菜单的权限,在进行删除操作.'
,
500
);
}
//删除对应的菜单
collect
(
$menus
)
->
map
(
function
(
$menu
)
use
(
$menuPermission
){
$menu
->
delete
();
//删除对应的菜单权限
collect
(
$menuPermission
)
->
map
(
function
(
$permission
){
$permission
->
delete
();
});
});
}
}
}
/**
* 编辑菜单
* @param Request $request
* @return mixed
*/
public
function
editMenu
(
Request
$request
)
{
$params
=
$this
->
formatKeysfromArray
(
$request
->
all
(),
'toUnderScore'
);
$menuModel
=
app
(
Menus
::
class
);
$menu
=
$menuModel
->
where
(
'id'
,
$params
[
'id'
])
->
first
();
if
(
!
$menu
){
throw
new
\LogicException
(
'此菜单不存在!'
,
500
);
}
$parentMenu
=
$menuModel
->
where
(
'id'
,
$params
[
'parent_id'
])
->
first
();
if
(
!
$parentMenu
){
throw
new
\LogicException
(
'上级菜单不存在!'
,
500
);
}
if
(
!
in_array
(
$params
[
'menu_type'
],[
'top'
,
'page'
,
'button'
])){
throw
new
\LogicException
(
'菜单类型不正确!'
,
500
);
}
$params
[
'menu_name'
]
=
$params
[
'title'
];
$params
[
'menu_path'
]
=
$params
[
'path'
];
$params
[
'menu_icon'
]
=
$params
[
'icon'
];
// 根据role规则重组 user
$updateMenus
=
[];
collect
(
$this
->
menusRepository
->
rules
[
'update'
])
->
map
(
function
(
$rule
,
$key
)
use
(
$params
,
&
$updateMenus
){
if
(
$key
!=
'id'
){
$updateMenus
[
$key
]
=
$params
[
$key
];
}
});
$updateMenus
[
'component'
]
=
$params
[
'component'
];
$updateMenus
[
'created_by'
]
=
auth
()
->
user
()
->
id
;
$result
=
$this
->
menusRepository
->
update
(
$updateMenus
,
$params
[
'id'
]);
return
$result
;
}
/**
* 获取所有菜单列表
* @return array
* @throws \Psr\Container\ContainerExceptionInterface
*
* @throws \Psr\Container\NotFoundExceptionInterface
*/
public
function
getAllMenus
()
{
$menuModel
=
app
(
Menus
::
class
);
$allMenus
=
$menuModel
->
get
();
// key_name转换
$parent_id
=
[];
$menusList
=
collect
(
$allMenus
)
->
map
(
function
(
$menu
)
use
(
&
$parent_id
){
$newMenu
=
[
'name'
=>
$menu
->
menu_name
,
'title'
=>
$menu
->
menu_name
,
'path'
=>
$menu
->
menu_path
,
'icon'
=>
$menu
->
menu_icon
,
'expand'
=>
true
,
'checked'
=>
false
];
if
(
$menu
->
parent_id
>
0
&&
$menu
->
menu_type
!=
'top'
){
$parent_id
[]
=
$menu
->
parent_id
;
}
$menuArr
=
$menu
->
toArray
();
unset
(
$menuArr
[
'menu_name'
]);
unset
(
$menuArr
[
'menu_path'
]);
unset
(
$menuArr
[
'menu_icon'
]);
return
array_merge
(
$newMenu
,
$menuArr
);
});
$parentMenu
=
$menuModel
->
whereIn
(
'id'
,
$parent_id
)
->
get
();
$menusList
=
collect
(
$menusList
)
->
map
(
function
(
$menu
)
use
(
$parentMenu
){
$parent_id
=
$menu
[
'parent_id'
];
if
(
$parent_id
>
0
){
$parentName
=
collect
(
$parentMenu
)
->
map
(
function
(
$m
)
use
(
&
$menu
,
$parent_id
){
if
(
$m
->
id
==
$parent_id
){
$menu
[
'parent_title'
]
=
$m
->
menu_name
;
}
});
}
return
$menu
;
});
return
$menusList
->
toArray
();
}
/**
* 获取菜单结构树
* level : all (全部) top (只显示顶部) page (只显示2级,不包括button级)
* @param $menus
* @return false|mixed
*/
public
function
getMenusTree
(
$menus
,
$level
=
'all'
)
{
$treeMenus
=
[];
collect
(
$menus
)
->
map
(
function
(
$menu
)
use
(
&
$treeMenus
,
$level
){
if
(
$menu
[
'parent_id'
]
==
-
1
&&
'top'
==
$menu
[
'menu_type'
]){
$treeMenus
[
$menu
[
'id'
]]
=
$menu
;
$treeMenus
[
$menu
[
'id'
]][
'level'
]
=
0
;
}
else
{
if
(
'top'
==
$level
){
return
;
}
elseif
(
'page'
==
$level
){
if
(
'page'
==
$menu
[
'menu_type'
])
{
if
(
$menu
[
'parent_id'
]
==
0
)
{
$treeMenus
[
$menu
[
'id'
]]
=
$menu
;
$treeMenus
[
$menu
[
'id'
]][
'level'
]
=
1
;
}
else
{
$treeMenus
=
$this
->
getChildrenTree
(
$treeMenus
,
$menu
);
}
}
}
else
{
if
(
$menu
[
'parent_id'
]
==
0
)
{
$treeMenus
[
$menu
[
'id'
]]
=
$menu
;
$treeMenus
[
$menu
[
'id'
]][
'level'
]
=
1
;
}
else
{
$treeMenus
=
$this
->
getChildrenTree
(
$treeMenus
,
$menu
);
}
}
}
});
return
array_values
(
$treeMenus
);
}
/**
* 递归树形结构菜单
* @param $treeMenus
* @param $currMenu
* @return array
*/
private
function
getChildrenTree
(
$treeMenus
,
$currMenu
)
:
array
{
$returnTreeMenus
=
collect
(
$treeMenus
)
->
map
(
function
(
$tMenus
)
use
(
$currMenu
){
if
(
!
isset
(
$tMenus
[
'children'
])
||
empty
(
$tMenus
[
'children'
])){
if
(
$currMenu
[
'parent_id'
]
==
$tMenus
[
'id'
]){
$currMenu
[
'level'
]
=
(
int
)
$tMenus
[
'level'
]
+
1
;
$tMenus
[
'children'
][]
=
$currMenu
;
}
}
// 如果有children的话,进行递归循环
else
{
if
(
$currMenu
[
'parent_id'
]
==
$tMenus
[
'id'
]){
$currMenu
[
'level'
]
=
(
int
)
$tMenus
[
'level'
]
+
1
;
$tMenus
[
'children'
][]
=
$currMenu
;
}
else
{
$tMenus
[
'children'
]
=
$this
->
getChildrenTree
(
$tMenus
[
'children'
],
$currMenu
);
}
}
return
$tMenus
;
});
return
$returnTreeMenus
->
toArray
();
}
}
}
server/app/Services/RoleAndPermissionsService.php
View file @
61352f7d
...
@@ -28,7 +28,6 @@ class RoleAndPermissionsService
...
@@ -28,7 +28,6 @@ class RoleAndPermissionsService
public
function
__construct
(
MenusRepository
$menusRepository
)
public
function
__construct
(
MenusRepository
$menusRepository
)
{
{
$this
->
user
=
auth
()
->
user
();
$this
->
menusRepository
=
$menusRepository
;
$this
->
menusRepository
=
$menusRepository
;
}
}
...
@@ -37,7 +36,7 @@ class RoleAndPermissionsService
...
@@ -37,7 +36,7 @@ class RoleAndPermissionsService
*/
*/
public
function
getRolesToUser
(
$user
=
null
){
public
function
getRolesToUser
(
$user
=
null
){
if
(
$user
==
null
){
if
(
$user
==
null
){
$user
=
$this
->
user
;
$user
=
auth
()
->
user
()
;
}
}
$this
->
getAllPermissions
(
$user
);
$this
->
getAllPermissions
(
$user
);
$role
=
$user
->
roles
;
$role
=
$user
->
roles
;
...
@@ -45,7 +44,7 @@ class RoleAndPermissionsService
...
@@ -45,7 +44,7 @@ class RoleAndPermissionsService
}
}
public
function
getUserPermissions
(){
public
function
getUserPermissions
(){
$role
=
$this
->
getAllPermissions
(
$this
->
user
);
$role
=
$this
->
getAllPermissions
(
auth
()
->
user
()
);
}
}
/**
/**
...
@@ -108,7 +107,7 @@ class RoleAndPermissionsService
...
@@ -108,7 +107,7 @@ class RoleAndPermissionsService
*/
*/
public
function
getUserRoleMenus
()
public
function
getUserRoleMenus
()
{
{
$permissions
=
$this
->
getAllPermissions
(
$this
->
user
);
$permissions
=
$this
->
getAllPermissions
(
auth
()
->
user
()
);
$menuIds
=
collect
(
$permissions
)
->
map
(
function
(
$permission
){
$menuIds
=
collect
(
$permissions
)
->
map
(
function
(
$permission
){
if
(
$permission
instanceof
\Spatie\Permission\Models\Permission
){
if
(
$permission
instanceof
\Spatie\Permission\Models\Permission
){
$permission
=
$permission
->
toArray
();
$permission
=
$permission
->
toArray
();
...
@@ -129,281 +128,6 @@ class RoleAndPermissionsService
...
@@ -129,281 +128,6 @@ class RoleAndPermissionsService
return
empty
(
$menuList
)
||
NULL
?
[]
:
$menuList
;
return
empty
(
$menuList
)
||
NULL
?
[]
:
$menuList
;
}
}
/**
* 获取所有菜单列表
* @return array
* @throws \Psr\Container\ContainerExceptionInterface
*
* @throws \Psr\Container\NotFoundExceptionInterface
*/
public
function
getAllMenus
()
{
$menuModel
=
app
(
Menus
::
class
);
$allMenus
=
$menuModel
->
get
();
// key_name转换
$parent_id
=
[];
$menusList
=
collect
(
$allMenus
)
->
map
(
function
(
$menu
)
use
(
&
$parent_id
){
$newMenu
=
[
'name'
=>
$menu
->
menu_name
,
'title'
=>
$menu
->
menu_name
,
'path'
=>
$menu
->
menu_path
,
'icon'
=>
$menu
->
menu_icon
,
'expand'
=>
true
,
'checked'
=>
false
];
if
(
$menu
->
parent_id
>
0
&&
$menu
->
menu_type
!=
'top'
){
$parent_id
[]
=
$menu
->
parent_id
;
}
$menuArr
=
$menu
->
toArray
();
unset
(
$menuArr
[
'menu_name'
]);
unset
(
$menuArr
[
'menu_path'
]);
unset
(
$menuArr
[
'menu_icon'
]);
return
array_merge
(
$newMenu
,
$menuArr
);
});
$parentMenu
=
$menuModel
->
whereIn
(
'id'
,
$parent_id
)
->
get
();
$menusList
=
collect
(
$menusList
)
->
map
(
function
(
$menu
)
use
(
$parentMenu
){
$parent_id
=
$menu
[
'parent_id'
];
if
(
$parent_id
>
0
){
$parentName
=
collect
(
$parentMenu
)
->
map
(
function
(
$m
)
use
(
&
$menu
,
$parent_id
){
if
(
$m
->
id
==
$parent_id
){
$menu
[
'parent_title'
]
=
$m
->
menu_name
;
}
});
}
return
$menu
;
});
return
$menusList
->
toArray
();
}
/**
* 获取菜单结构树
* level : all (全部) top (只显示顶部) page (只显示2级,不包括button级)
* @param $menus
* @return false|mixed
*/
public
function
getMenusTree
(
$menus
,
$level
=
'all'
)
{
$treeMenus
=
[];
collect
(
$menus
)
->
map
(
function
(
$menu
)
use
(
&
$treeMenus
,
$level
){
if
(
$menu
[
'parent_id'
]
==
-
1
&&
'top'
==
$menu
[
'menu_type'
]){
$treeMenus
[
$menu
[
'id'
]]
=
$menu
;
$treeMenus
[
$menu
[
'id'
]][
'level'
]
=
0
;
}
else
{
if
(
'top'
==
$level
){
return
;
}
elseif
(
'page'
==
$level
){
if
(
'page'
==
$menu
[
'menu_type'
])
{
if
(
$menu
[
'parent_id'
]
==
0
)
{
$treeMenus
[
$menu
[
'id'
]]
=
$menu
;
$treeMenus
[
$menu
[
'id'
]][
'level'
]
=
1
;
}
else
{
$treeMenus
=
$this
->
getChildrenTree
(
$treeMenus
,
$menu
);
}
}
}
else
{
if
(
$menu
[
'parent_id'
]
==
0
)
{
$treeMenus
[
$menu
[
'id'
]]
=
$menu
;
$treeMenus
[
$menu
[
'id'
]][
'level'
]
=
1
;
}
else
{
$treeMenus
=
$this
->
getChildrenTree
(
$treeMenus
,
$menu
);
}
}
}
});
return
array_values
(
$treeMenus
);
}
/**
* 递归树形结构菜单
* @param $treeMenus
* @param $currMenu
* @return array
*/
private
function
getChildrenTree
(
$treeMenus
,
$currMenu
)
:
array
{
$returnTreeMenus
=
collect
(
$treeMenus
)
->
map
(
function
(
$tMenus
)
use
(
$currMenu
){
if
(
!
isset
(
$tMenus
[
'children'
])
||
empty
(
$tMenus
[
'children'
])){
if
(
$currMenu
[
'parent_id'
]
==
$tMenus
[
'id'
]){
$currMenu
[
'level'
]
=
(
int
)
$tMenus
[
'level'
]
+
1
;
$tMenus
[
'children'
][]
=
$currMenu
;
}
}
// 如果有children的话,进行递归循环
else
{
if
(
$currMenu
[
'parent_id'
]
==
$tMenus
[
'id'
]){
$currMenu
[
'level'
]
=
(
int
)
$tMenus
[
'level'
]
+
1
;
$tMenus
[
'children'
][]
=
$currMenu
;
}
else
{
$tMenus
[
'children'
]
=
$this
->
getChildrenTree
(
$tMenus
[
'children'
],
$currMenu
);
}
}
return
$tMenus
;
});
return
$returnTreeMenus
->
toArray
();
}
/**
* 编辑菜单
* @param Request $request
* @return mixed
*/
public
function
editMenu
(
Request
$request
)
{
$params
=
$this
->
formatKeysfromArray
(
$request
->
all
(),
'toUnderScore'
);
$menuModel
=
app
(
Menus
::
class
);
$menu
=
$menuModel
->
where
(
'id'
,
$params
[
'id'
])
->
first
();
if
(
!
$menu
){
throw
new
\LogicException
(
'此菜单不存在!'
,
500
);
}
$parentMenu
=
$menuModel
->
where
(
'id'
,
$params
[
'parent_id'
])
->
first
();
if
(
!
$parentMenu
){
throw
new
\LogicException
(
'上级菜单不存在!'
,
500
);
}
if
(
!
in_array
(
$params
[
'menu_type'
],[
'top'
,
'page'
,
'button'
])){
throw
new
\LogicException
(
'菜单类型不正确!'
,
500
);
}
$params
[
'menu_name'
]
=
$params
[
'title'
];
$params
[
'menu_path'
]
=
$params
[
'path'
];
$params
[
'menu_icon'
]
=
$params
[
'icon'
];
// 根据role规则重组 user
$updateMenus
=
[];
collect
(
$this
->
menusRepository
->
rules
[
'update'
])
->
map
(
function
(
$rule
,
$key
)
use
(
$params
,
&
$updateMenus
){
if
(
$key
!=
'id'
){
$updateMenus
[
$key
]
=
$params
[
$key
];
}
});
$updateMenus
[
'created_by'
]
=
$this
->
user
->
id
;
$result
=
$this
->
menusRepository
->
update
(
$updateMenus
,
$params
[
'id'
]);
return
$result
;
}
/**
* 添加子菜单
* @param $request
* @return bool
*/
public
function
addSubMenu
(
$request
)
{
$params
=
$this
->
formatKeysfromArray
(
$request
->
all
(),
'toUnderScore'
);
$menuModel
=
app
(
Menus
::
class
);
$parentMenu
=
$menuModel
->
where
(
'id'
,
$params
[
'parent_id'
])
->
first
();
if
(
!
$parentMenu
){
throw
new
\LogicException
(
'上级菜单不存在!'
,
500
);
}
if
(
'button'
==
$params
[
'type'
]){
$permission
=
Permission
::
query
()
->
where
([
'menu_id'
=>
0
,
'sys_default'
=>
1
,
'guard_name'
=>
config
(
'auth.defaults.guard'
),
'action'
=>
$params
[
'button_type'
]])
->
first
();
if
(
!
$permission
){
throw
new
\LogicException
(
'按钮动作不存在!'
,
500
);
}
}
$filterParams
=
[];
collect
(
$this
->
menusRepository
->
rules
[
'create'
])
->
map
(
function
(
$rule
,
$key
)
use
(
$params
,
&
$filterParams
){
if
(
isset
(
$params
[
$key
])
&&
!
empty
(
$params
[
$key
])){
$filterParams
[
$key
]
=
$params
[
$key
];
}
else
{
$filterParams
[
$key
]
=
''
;
}
});
$filterParams
[
'created_by'
]
=
$this
->
user
->
id
;
$filterParams
[
'menu_icon'
]
=
$params
[
'icon'
];
$filterParams
[
'component'
]
=
$params
[
'component'
];
$filterParams
[
'status'
]
=
intval
(
$params
[
'status'
]);
$filterParams
=
collect
(
$filterParams
)
->
map
(
function
(
$value
,
$key
)
use
(
$params
){
if
(
$value
==
''
){
switch
(
$key
){
case
'menu_name'
:
$value
=
$params
[
'title'
];
break
;
case
'menu_path'
:
$value
=
$params
[
'path'
];
break
;
case
'menu_icon'
:
$value
=
$params
[
'icon'
];
break
;
case
'menu_type'
:
$value
=
$params
[
'type'
];
break
;
case
'is_show'
:
$value
=
1
;
break
;
case
'sys_default'
:
$value
=
0
;
break
;
}
}
return
$value
;
});
$result
=
$this
->
menusRepository
->
create
(
$filterParams
->
toArray
());
if
(
$result
){
$permission
=
[];
$permission
[
'name'
]
=
$result
[
'menu_name'
];
$permission
[
'menu_id'
]
=
$result
[
'id'
];
$permission
[
'action'
]
=
$params
[
'button_type'
];
$permission
[
'permission_type'
]
=
'menu'
;
$permission
[
'sys_default'
]
=
0
;
$permission
[
'remark'
]
=
$result
[
'menu_name'
]
.
'的相关权限'
;
$permission
[
'guard_name'
]
=
config
(
'auth.defaults.guard'
);
//增加对应的按钮权限
$permissionResult
=
Permission
::
create
(
$permission
);
// 如果是管理员,自动绑定赋予权限
if
(
$this
->
user
->
isSuperAdmin
()){
if
(
$permissionResult
){
$this
->
assignRoleAndPermissionToUser
(
$permissionResult
,
$this
->
user
);
}
}
}
return
true
;
}
public
function
deleteMenus
(
$request
)
{
$params
=
$this
->
formatKeysfromArray
(
$request
->
all
(),
'toUnderScore'
);
$menuModel
=
app
(
Menus
::
class
);
$menu_ids
=
explode
(
','
,
$params
[
'ids'
]);
if
(
!
$menus
=
$menuModel
->
whereIn
(
'id'
,
$menu_ids
)
->
get
()){
throw
new
\LogicException
(
'选中的菜单不存在!'
,
500
);
}
//判断该菜单下面是否有其他子菜单
/*if($menuModel->whereIn('parent_id',$menu_ids)->get()){
throw new \LogicException('选中的菜单中有子菜单存在,无法删除该菜单。',500);
}*/
//判断选中的菜单是否已被赋予权限给到用户组
//查询该菜单对应的权限数据
$menuPermission
=
Permission
::
query
()
->
whereIn
(
'menu_id'
,
$menu_ids
)
->
get
();
if
(
$menuPermission
){
$allRoles
=
Role
::
all
();
if
(
$allRoles
){
$hasPermission
=
false
;
collect
(
$allRoles
)
->
map
(
function
(
$role
)
use
(
$menuPermission
,
&
$hasPermission
){
collect
(
$menuPermission
)
->
map
(
function
(
$permission
)
use
(
$role
,
&
$hasPermission
){
if
(
$role
->
hasPermissionTo
(
$permission
)){
$hasPermission
=
true
;
}
});
});
if
(
$hasPermission
){
throw
new
\LogicException
(
'用户权限中已经包含该菜单权限,请先取消角色中该菜单的权限,在进行删除操作.'
,
500
);
}
//删除对应的菜单
collect
(
$menus
)
->
map
(
function
(
$menu
)
use
(
$menuPermission
){
$menu
->
delete
();
//删除对应的菜单权限
collect
(
$menuPermission
)
->
map
(
function
(
$permission
){
$permission
->
delete
();
});
});
}
}
}
/**
/**
* 同步指定权限给指定用户
* 同步指定权限给指定用户
* @param $permission
* @param $permission
...
...
server/bootstrap/app.php
View file @
61352f7d
...
@@ -33,11 +33,10 @@ $app = new Laravel\Lumen\Application(
...
@@ -33,11 +33,10 @@ $app = new Laravel\Lumen\Application(
);
);
$app
->
withFacades
();
$app
->
withFacades
();
$app
->
withEloquent
();
//$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class);
//$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class);
$app
->
withEloquent
();
/*
/*
|--------------------------------------------------------------------------
|--------------------------------------------------------------------------
| Register Container Bindings
| Register Container Bindings
...
@@ -104,7 +103,7 @@ $app->middleware([
...
@@ -104,7 +103,7 @@ $app->middleware([
]);
]);
$app
->
routeMiddleware
([
$app
->
routeMiddleware
([
'
superadmin'
=>
App\Http
\Middleware\Authenticate
::
class
,
'
permissions'
=>
App\Http\Controllers
\Middleware\Authenticate
::
class
,
//'userRole' => App\Http\Middleware\UserPermissionMiddleware::class,
//'userRole' => App\Http\Middleware\UserPermissionMiddleware::class,
//'enum' => \Jiannei\Enum\Laravel\Http\Middleware\TransformEnums::class,
//'enum' => \Jiannei\Enum\Laravel\Http\Middleware\TransformEnums::class,
//'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
//'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
...
...
server/bootstrap/route.php
View file @
61352f7d
...
@@ -8,5 +8,6 @@
...
@@ -8,5 +8,6 @@
$api
=
app
(
'Dingo\Api\Routing\Router'
);
$api
=
app
(
'Dingo\Api\Routing\Router'
);
require
__DIR__
.
'/../routes/api/auth.php'
;
require
__DIR__
.
'/../routes/api/auth.php'
;
require
__DIR__
.
'/../routes/api/permissions.php'
;
return
$app
;
return
$app
;
server/routes/api/auth.php
View file @
61352f7d
...
@@ -13,44 +13,28 @@
...
@@ -13,44 +13,28 @@
$api
->
version
(
'v1'
,
function
(
$api
)
{
$api
->
version
(
'v1'
,
function
(
$api
)
{
$api
->
group
([
'namespace'
=>
'App\Http\
V1\Auth'
,
'middleware'
=>
[
'api.auth'
,
'superadmin
'
],
'providers'
=>
'jwt'
],
function
(
$api
)
{
$api
->
group
([
'namespace'
=>
'App\Http\
Controllers\V1\Auth'
,
'middleware'
=>
[
'api.auth'
,
'permissions
'
],
'providers'
=>
'jwt'
],
function
(
$api
)
{
//用户相关
//用户相关
$api
->
post
(
'/adminapi/user/add'
,
[
'uses'
=>
'AuthorizationController@addUser'
]);
$api
->
post
(
'/adminapi/user/add'
,
[
'permission'
=>
'user.add'
,
'uses'
=>
'AuthUserController@addUser'
]);
$api
->
post
(
'/adminapi/user/edit'
,
[
'uses'
=>
'AuthorizationController@editUser'
]);
$api
->
post
(
'/adminapi/user/edit'
,
[
'permission'
=>
'user.edit'
,
'uses'
=>
'AuthUserController@editUser'
]);
$api
->
get
(
'/adminapi/user/info'
,
[
'uses'
=>
'AuthorizationController@info'
]);
$api
->
get
(
'/adminapi/user/info'
,
[
'permission'
=>
'user.info'
,
'uses'
=>
'AuthUserController@info'
]);
$api
->
post
(
'/adminapi/auth/resetPassword'
,
[
'uses'
=>
'AuthorizationController@resetPassword'
]);
$api
->
post
(
'/adminapi/auth/resetPassword'
,
[
'permission'
=>
'auth.reset_password'
,
'uses'
=>
'AuthUserController@resetPassword'
]);
$api
->
get
(
'/adminapi/user/listByPage'
,
[
'uses'
=>
'AuthorizationController@listByPage'
]);
$api
->
get
(
'/adminapi/user/listByPage'
,
[
'permission'
=>
'user.list_by_page'
,
'uses'
=>
'AuthUserController@listByPage'
]);
$api
->
post
(
'/adminapi/user/disable/{id}'
,
[
'uses'
=>
'AuthorizationController@changeUserStatus'
]);
$api
->
post
(
'/adminapi/user/disable/{id}'
,
[
'permission'
=>
'user.disable'
,
'uses'
=>
'AuthUserController@changeUserStatus'
]);
$api
->
post
(
'/adminapi/user/enable/{id}'
,
[
'uses'
=>
'AuthorizationController@changeUserStatus'
]);
$api
->
post
(
'/adminapi/user/enable/{id}'
,
[
'permission'
=>
'user.enable'
,
'uses'
=>
'AuthUserController@changeUserStatus'
]);
$api
->
post
(
'/adminapi/user/delByIds'
,
[
'uses'
=>
'AuthorizationController@delUserByIds'
]);
$api
->
post
(
'/adminapi/user/delByIds'
,
[
'permission'
=>
'user.del_by_ids'
,
'uses'
=>
'AuthUserController@delUserByIds'
]);
//菜单相关
$api
->
get
(
'/adminapi/permission/menu/list'
,
[
'uses'
=>
'AuthorizationController@getMenuList'
]);
$api
->
post
(
'/adminapi/permission/menu/edit'
,
[
'uses'
=>
'AuthorizationController@editMenus'
]);
$api
->
post
(
'/adminapi/permission/menu/sub_add'
,
[
'uses'
=>
'AuthorizationController@addSubMenus'
]);
$api
->
post
(
'/adminapi/permission/menu/del'
,
[
'uses'
=>
'AuthorizationController@deleteMenus'
]);
$api
->
get
(
'/adminapi/permission/menu/all'
,
[
'uses'
=>
'AuthorizationController@getAllMenuList'
]);
//用户组相关
$api
->
get
(
'/adminapi/permission/role/getAllByPage'
,
[
'uses'
=>
'AuthorizationController@getAllByPage'
]);
$api
->
get
(
'/adminapi/permission/role/getAllList'
,
[
'uses'
=>
'AuthorizationController@getAllList'
]);
$api
->
post
(
'/adminapi/permission/role/add'
,
[
'uses'
=>
'AuthorizationController@addRole'
]);
$api
->
post
(
'/adminapi/permission/role/edit'
,
[
'uses'
=>
'AuthorizationController@editRole'
]);
$api
->
post
(
'/adminapi/permission/role/delByIds'
,
[
'uses'
=>
'AuthorizationController@delByIds'
]);
$api
->
post
(
'/adminapi/permission/role/editRolePermission'
,
[
'uses'
=>
'AuthorizationController@editRolePermission'
]);
$api
->
get
(
'/adminapi/permission/dictData/defaultButtonPermission'
,
[
'uses'
=>
'AuthorizationController@getDefaultButtonPermission'
]);
});
});
//用户登陆
//用户登陆
$api
->
group
([
'namespace'
=>
'App\Http\V1\Auth'
],
function
(
$api
)
{
$api
->
group
([
'namespace'
=>
'App\Http\
Controllers\
V1\Auth'
],
function
(
$api
)
{
$api
->
post
(
'/adminapi/auth/login'
,
[
'uses'
=>
'Auth
orization
Controller@login'
]);
$api
->
post
(
'/adminapi/auth/login'
,
[
'uses'
=>
'Auth
User
Controller@login'
]);
});
});
//用户登出
//用户登出
$api
->
group
([
'namespace'
=>
'App\Http\V1\Auth'
,
'middleware'
=>
[
'superadmin'
]],
function
(
$api
)
{
$api
->
group
([
'namespace'
=>
'App\Http\
Controllers\
V1\Auth'
,
'middleware'
=>
[
'superadmin'
]],
function
(
$api
)
{
$api
->
get
(
'/adminapi/auth/logout'
,
[
'uses'
=>
'Auth
orization
Controller@logout'
]);
$api
->
get
(
'/adminapi/auth/logout'
,
[
'uses'
=>
'Auth
User
Controller@logout'
]);
});
});
});
});
...
...
server/routes/api/permissions.php
0 → 100644
View file @
61352f7d
<?php
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It is a breeze. Simply tell Lumen the URIs it should respond to
| and give it the Closure to call when that URI is requested.
|
*/
$api
->
version
(
'v1'
,
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@getMenuList'
]);
$api
->
post
(
'/adminapi/permission/menu/edit'
,
[
'permission'
=>
'permission.menu.edit'
,
'uses'
=>
'PermissionsController@editMenus'
]);
$api
->
post
(
'/adminapi/permission/menu/sub_add'
,
[
'permission'
=>
'permission.menu.sub_add'
,
'uses'
=>
'PermissionsController@addSubMenus'
]);
$api
->
post
(
'/adminapi/permission/menu/del'
,
[
'permission'
=>
'permission.menu.del'
,
'uses'
=>
'PermissionsController@deleteMenus'
]);
$api
->
get
(
'/adminapi/permission/menu/all'
,
[
'permission'
=>
'permission.menu.all'
,
'uses'
=>
'PermissionsController@getAllMenuList'
]);
//角色相关
$api
->
get
(
'/adminapi/permission/role/getAllByPage'
,
[
'permission'
=>
'permission.role.get_all_by_page'
,
'uses'
=>
'PermissionsController@getAllByPage'
]);
$api
->
get
(
'/adminapi/permission/role/getAllList'
,
[
'permission'
=>
'permission.role.get_all_list'
,
'uses'
=>
'PermissionsController@getAllList'
]);
$api
->
post
(
'/adminapi/permission/role/add'
,
[
'permission'
=>
'permission_role_add'
,
'uses'
=>
'PermissionsController@addRole'
]);
$api
->
post
(
'/adminapi/permission/role/edit'
,
[
'permission'
=>
'permission.role.edit'
,
'uses'
=>
'PermissionsController@editRole'
]);
$api
->
post
(
'/adminapi/permission/role/delByIds'
,
[
'permission'
=>
'permission.role.del_by_ids'
,
'uses'
=>
'PermissionsController@delByIds'
]);
$api
->
post
(
'/adminapi/permission/role/editRolePermission'
,
[
'permission'
=>
'permission.role.edit_role_permission'
,
'uses'
=>
'PermissionsController@editRolePermission'
]);
$api
->
get
(
'/adminapi/permission/dictData/defaultButtonPermission'
,
[
'permission'
=>
'permission.dict_data.default_button_permission'
,
'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