Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cloud-platform
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
youjj
cloud-platform
Commits
cf7348f8
Commit
cf7348f8
authored
May 17, 2019
by
周健威
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/base-modify' into base-modify
parents
8ed094bd
1d1b342f
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
240 additions
and
17 deletions
+240
-17
IAppUserService.java
...m/github/wxiaoqi/security/gate/feign/IAppUserService.java
+23
-0
AccessGatewayFilter.java
...hub/wxiaoqi/security/gate/filter/AccessGatewayFilter.java
+12
-2
AppUserBiz.java
...ava/com/github/wxiaoqi/security/admin/biz/AppUserBiz.java
+52
-0
GroupBiz.java
.../java/com/github/wxiaoqi/security/admin/biz/GroupBiz.java
+3
-3
AppUserMapper.java
...m/github/wxiaoqi/security/admin/mapper/AppUserMapper.java
+10
-0
ElementMapper.java
...m/github/wxiaoqi/security/admin/mapper/ElementMapper.java
+0
-1
AppUserController.java
...github/wxiaoqi/security/admin/rest/AppUserController.java
+87
-0
AppUserGroups.java
...a/com/github/wxiaoqi/security/admin/vo/AppUserGroups.java
+14
-0
AppUserMapper.xml
...les/ace-admin/src/main/resources/mapper/AppUserMapper.xml
+25
-0
ElementMapper.xml
...les/ace-admin/src/main/resources/mapper/ElementMapper.xml
+14
-11
No files found.
ace-gate/src/main/java/com/github/wxiaoqi/security/gate/feign/IAppUserService.java
0 → 100644
View file @
cf7348f8
package
com
.
github
.
wxiaoqi
.
security
.
gate
.
feign
;
import
com.github.wxiaoqi.security.api.vo.authority.PermissionInfo
;
import
com.github.wxiaoqi.security.gate.fallback.UserServiceFallback
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
java.util.List
;
/**
* ${DESCRIPTION}
*
* @author wanghaobin
* @create 2017-06-21 8:11
*/
@FeignClient
(
value
=
"ace-admin"
,
fallback
=
UserServiceFallback
.
class
)
public
interface
IAppUserService
{
@RequestMapping
(
value
=
"/api/app/user/un/{username}/permissions"
,
method
=
RequestMethod
.
GET
)
List
<
PermissionInfo
>
getPermissionByUsername
(
@PathVariable
(
"username"
)
String
username
);
}
ace-gate/src/main/java/com/github/wxiaoqi/security/gate/filter/AccessGatewayFilter.java
View file @
cf7348f8
...
@@ -12,6 +12,7 @@ import com.github.wxiaoqi.security.common.constant.RequestTypeConstants;
...
@@ -12,6 +12,7 @@ import com.github.wxiaoqi.security.common.constant.RequestTypeConstants;
import
com.github.wxiaoqi.security.common.context.BaseContextHandler
;
import
com.github.wxiaoqi.security.common.context.BaseContextHandler
;
import
com.github.wxiaoqi.security.common.msg.BaseResponse
;
import
com.github.wxiaoqi.security.common.msg.BaseResponse
;
import
com.github.wxiaoqi.security.common.msg.auth.TokenForbiddenResponse
;
import
com.github.wxiaoqi.security.common.msg.auth.TokenForbiddenResponse
;
import
com.github.wxiaoqi.security.gate.feign.IAppUserService
;
import
com.github.wxiaoqi.security.gate.handler.RequestBodyRoutePredicateFactory
;
import
com.github.wxiaoqi.security.gate.handler.RequestBodyRoutePredicateFactory
;
import
com.github.wxiaoqi.security.gate.utils.DBLog
;
import
com.github.wxiaoqi.security.gate.utils.DBLog
;
import
com.github.wxiaoqi.security.gate.feign.ILogService
;
import
com.github.wxiaoqi.security.gate.feign.ILogService
;
...
@@ -55,6 +56,11 @@ public class AccessGatewayFilter implements GlobalFilter {
...
@@ -55,6 +56,11 @@ public class AccessGatewayFilter implements GlobalFilter {
@Autowired
@Autowired
@Lazy
@Lazy
private
IUserService
userService
;
private
IUserService
userService
;
@Autowired
@Lazy
private
IAppUserService
appUserService
;
@Autowired
@Autowired
@Lazy
@Lazy
private
ILogService
logService
;
private
ILogService
logService
;
...
@@ -202,8 +208,12 @@ public class AccessGatewayFilter implements GlobalFilter {
...
@@ -202,8 +208,12 @@ public class AccessGatewayFilter implements GlobalFilter {
private
boolean
checkUserPermission
(
PermissionInfo
[]
permissions
,
ServerWebExchange
ctx
,
IJWTInfo
user
)
{
private
boolean
checkUserPermission
(
PermissionInfo
[]
permissions
,
ServerWebExchange
ctx
,
IJWTInfo
user
)
{
// TODO 增加app用户权限逻辑
List
<
PermissionInfo
>
permissionInfos
;
List
<
PermissionInfo
>
permissionInfos
=
userService
.
getPermissionByUsername
(
user
.
getUniqueName
());
if
(
RequestTypeConstants
.
APP
.
equals
(
user
.
getRequestType
()))
{
permissionInfos
=
appUserService
.
getPermissionByUsername
(
user
.
getUniqueName
());
}
else
{
permissionInfos
=
userService
.
getPermissionByUsername
(
user
.
getUniqueName
());
}
PermissionInfo
current
=
null
;
PermissionInfo
current
=
null
;
for
(
PermissionInfo
info
:
permissions
)
{
for
(
PermissionInfo
info
:
permissions
)
{
boolean
anyMatch
=
permissionInfos
.
parallelStream
().
anyMatch
(
new
Predicate
<
PermissionInfo
>()
{
boolean
anyMatch
=
permissionInfos
.
parallelStream
().
anyMatch
(
new
Predicate
<
PermissionInfo
>()
{
...
...
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/AppUserBiz.java
View file @
cf7348f8
package
com
.
github
.
wxiaoqi
.
security
.
admin
.
biz
;
package
com
.
github
.
wxiaoqi
.
security
.
admin
.
biz
;
import
com.ace.cache.annotation.Cache
;
import
com.ace.cache.annotation.Cache
;
import
com.ace.cache.annotation.CacheClear
;
import
com.github.pagehelper.Page
;
import
com.github.pagehelper.PageHelper
;
import
com.github.wxiaoqi.security.admin.entity.AppUser
;
import
com.github.wxiaoqi.security.admin.entity.AppUser
;
import
com.github.wxiaoqi.security.admin.entity.Group
;
import
com.github.wxiaoqi.security.admin.entity.User
;
import
com.github.wxiaoqi.security.admin.mapper.AppUserMapper
;
import
com.github.wxiaoqi.security.admin.mapper.AppUserMapper
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.msg.TableResultResponse
;
import
com.github.wxiaoqi.security.common.util.Query
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
tk.mybatis.mapper.entity.Example
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
static
com
.
github
.
wxiaoqi
.
security
.
auth
.
common
.
constatns
.
CommonConstants
.
DATA_ALL_TRUE
;
@Service
@Service
public
class
AppUserBiz
extends
BaseBiz
<
AppUserMapper
,
AppUser
>
{
public
class
AppUserBiz
extends
BaseBiz
<
AppUserMapper
,
AppUser
>
{
...
@@ -20,4 +37,39 @@ public class AppUserBiz extends BaseBiz<AppUserMapper, AppUser> {
...
@@ -20,4 +37,39 @@ public class AppUserBiz extends BaseBiz<AppUserMapper, AppUser> {
user
.
setUsername
(
username
);
user
.
setUsername
(
username
);
return
mapper
.
selectOne
(
user
);
return
mapper
.
selectOne
(
user
);
}
}
public
TableResultResponse
<
AppUser
>
selectPage
(
Query
query
,
AppUser
currentUser
)
{
if
(
DATA_ALL_TRUE
.
equals
(
currentUser
.
getDataAll
()))
{
return
super
.
selectByQuery
(
query
);
}
else
{
Example
example
=
new
Example
(
User
.
class
);
if
(
query
.
entrySet
().
size
()>
0
)
{
Example
.
Criteria
criteria
=
example
.
createCriteria
();
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
query
.
entrySet
())
{
criteria
.
andLike
(
entry
.
getKey
(),
"%"
+
entry
.
getValue
().
toString
()
+
"%"
);
}
}
if
(
StringUtils
.
isNotBlank
(
currentUser
.
getDataCompany
())){
example
.
createCriteria
().
andIn
(
"companyId"
,
Arrays
.
asList
(
currentUser
.
getDataCompany
().
split
(
","
)));
}
if
(
StringUtils
.
isNotBlank
(
currentUser
.
getDataZone
())){
example
.
createCriteria
().
andIn
(
"zoneId"
,
Arrays
.
asList
(
currentUser
.
getDataZone
().
split
(
","
)));
}
Page
<
Object
>
result
=
PageHelper
.
startPage
(
query
.
getPage
(),
query
.
getLimit
());
List
<
AppUser
>
list
=
mapper
.
selectByExample
(
example
);
return
new
TableResultResponse
<
AppUser
>(
result
.
getTotal
(),
list
);
}
}
public
List
<
Group
>
selectGroupsByAppUserId
(
Integer
id
)
{
return
mapper
.
selectGroupsByAppUserId
(
id
);
}
@Transactional
public
void
insertAppUserGroup
(
Integer
appUserId
,
Set
<
Integer
>
groups
)
{
mapper
.
deleteAppUserGroup
(
appUserId
);
if
(
groups
!=
null
&&
groups
.
size
()
>
0
)
{
mapper
.
insertAppUserGroup
(
appUserId
,
groups
);
}
}
}
}
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/GroupBiz.java
View file @
cf7348f8
...
@@ -112,7 +112,7 @@ public class GroupBiz extends BaseBiz<GroupMapper, Group> {
...
@@ -112,7 +112,7 @@ public class GroupBiz extends BaseBiz<GroupMapper, Group> {
* @param groupId
* @param groupId
* @param menus
* @param menus
*/
*/
@CacheClear
(
keys
=
{
"permission:menu"
,
"permission:u"
})
@CacheClear
(
keys
=
{
"permission:menu"
,
"permission:u"
,
"app:permission:u"
})
public
void
modifyAuthorityMenu
(
int
groupId
,
String
[]
menus
)
{
public
void
modifyAuthorityMenu
(
int
groupId
,
String
[]
menus
)
{
resourceAuthorityMapper
.
deleteByAuthorityIdAndResourceType
(
groupId
+
""
,
AdminCommonConstant
.
RESOURCE_TYPE_MENU
);
resourceAuthorityMapper
.
deleteByAuthorityIdAndResourceType
(
groupId
+
""
,
AdminCommonConstant
.
RESOURCE_TYPE_MENU
);
List
<
Menu
>
menuList
=
menuMapper
.
selectAll
();
List
<
Menu
>
menuList
=
menuMapper
.
selectAll
();
...
@@ -151,7 +151,7 @@ public class GroupBiz extends BaseBiz<GroupMapper, Group> {
...
@@ -151,7 +151,7 @@ public class GroupBiz extends BaseBiz<GroupMapper, Group> {
* @param menuId
* @param menuId
* @param elementId
* @param elementId
*/
*/
@CacheClear
(
keys
=
{
"permission:ele"
,
"permission:u"
})
@CacheClear
(
keys
=
{
"permission:ele"
,
"permission:u"
,
"app:permission:ele"
,
"app:permission:u"
})
public
void
modifyAuthorityElement
(
int
groupId
,
int
menuId
,
int
elementId
)
{
public
void
modifyAuthorityElement
(
int
groupId
,
int
menuId
,
int
elementId
)
{
ResourceAuthority
authority
=
new
ResourceAuthority
(
AdminCommonConstant
.
AUTHORITY_TYPE_GROUP
,
AdminCommonConstant
.
RESOURCE_TYPE_BTN
);
ResourceAuthority
authority
=
new
ResourceAuthority
(
AdminCommonConstant
.
AUTHORITY_TYPE_GROUP
,
AdminCommonConstant
.
RESOURCE_TYPE_BTN
);
authority
.
setAuthorityId
(
groupId
+
""
);
authority
.
setAuthorityId
(
groupId
+
""
);
...
@@ -167,7 +167,7 @@ public class GroupBiz extends BaseBiz<GroupMapper, Group> {
...
@@ -167,7 +167,7 @@ public class GroupBiz extends BaseBiz<GroupMapper, Group> {
* @param menuId
* @param menuId
* @param elementId
* @param elementId
*/
*/
@CacheClear
(
keys
=
{
"permission:ele"
,
"permission:u"
})
@CacheClear
(
keys
=
{
"permission:ele"
,
"permission:u"
,
"app:permission:ele"
,
"app:permission:u"
})
public
void
removeAuthorityElement
(
int
groupId
,
int
menuId
,
int
elementId
)
{
public
void
removeAuthorityElement
(
int
groupId
,
int
menuId
,
int
elementId
)
{
ResourceAuthority
authority
=
new
ResourceAuthority
();
ResourceAuthority
authority
=
new
ResourceAuthority
();
authority
.
setAuthorityId
(
groupId
+
""
);
authority
.
setAuthorityId
(
groupId
+
""
);
...
...
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/mapper/AppUserMapper.java
View file @
cf7348f8
package
com
.
github
.
wxiaoqi
.
security
.
admin
.
mapper
;
package
com
.
github
.
wxiaoqi
.
security
.
admin
.
mapper
;
import
com.github.wxiaoqi.security.admin.entity.AppUser
;
import
com.github.wxiaoqi.security.admin.entity.AppUser
;
import
com.github.wxiaoqi.security.admin.entity.Group
;
import
org.apache.ibatis.annotations.Param
;
import
tk.mybatis.mapper.common.Mapper
;
import
tk.mybatis.mapper.common.Mapper
;
import
java.util.List
;
import
java.util.Set
;
public
interface
AppUserMapper
extends
Mapper
<
AppUser
>
{
public
interface
AppUserMapper
extends
Mapper
<
AppUser
>
{
List
<
Group
>
selectGroupsByAppUserId
(
Integer
id
);
int
insertAppUserGroup
(
@Param
(
"appUserId"
)
Integer
appUserId
,
@Param
(
"groups"
)
Set
<
Integer
>
groups
);
int
deleteAppUserGroup
(
Integer
appUserId
);
}
}
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/mapper/ElementMapper.java
View file @
cf7348f8
...
@@ -12,6 +12,5 @@ public interface ElementMapper extends Mapper<Element> {
...
@@ -12,6 +12,5 @@ public interface ElementMapper extends Mapper<Element> {
public
List
<
Element
>
selectAuthorityElementByClientId
(
@Param
(
"clientId"
)
String
clientId
);
public
List
<
Element
>
selectAuthorityElementByClientId
(
@Param
(
"clientId"
)
String
clientId
);
public
List
<
Element
>
selectAllElementPermissions
();
public
List
<
Element
>
selectAllElementPermissions
();
// TODO 修改查询SQL
List
<
Element
>
selectAuthorityElementByAppUserId
(
@Param
(
"userId"
)
String
userId
);
List
<
Element
>
selectAuthorityElementByAppUserId
(
@Param
(
"userId"
)
String
userId
);
}
}
\ No newline at end of file
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rest/AppUserController.java
0 → 100644
View file @
cf7348f8
package
com
.
github
.
wxiaoqi
.
security
.
admin
.
rest
;
import
com.github.wxiaoqi.security.admin.biz.AppUserBiz
;
import
com.github.wxiaoqi.security.admin.entity.AppUser
;
import
com.github.wxiaoqi.security.admin.entity.Group
;
import
com.github.wxiaoqi.security.admin.entity.User
;
import
com.github.wxiaoqi.security.admin.vo.AppUserGroups
;
import
com.github.wxiaoqi.security.admin.vo.GroupUsers
;
import
com.github.wxiaoqi.security.auth.client.config.UserAuthConfig
;
import
com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.github.wxiaoqi.security.common.msg.TableResultResponse
;
import
com.github.wxiaoqi.security.common.rest.CommonBaseController
;
import
com.github.wxiaoqi.security.common.util.Query
;
import
com.google.common.collect.Sets
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.*
;
@RestController
@RequestMapping
(
"app/user"
)
@Slf4j
public
class
AppUserController
extends
CommonBaseController
{
@Autowired
AppUserBiz
appUserBiz
;
@Autowired
private
UserAuthUtil
userAuthUtil
;
@Autowired
private
UserAuthConfig
userAuthConfig
;
@GetMapping
(
"page"
)
public
TableResultResponse
list
(
@RequestParam
Map
<
String
,
Object
>
params
)
{
Query
query
=
new
Query
(
params
);
try
{
return
appUserBiz
.
selectPage
(
query
,
appUserBiz
.
getUserByUsername
(
userAuthUtil
.
getInfoFromToken
(
userAuthConfig
.
getToken
(
request
)).
getUniqueName
()));
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
());
return
new
TableResultResponse
<
User
>();
}
}
@RequestMapping
(
value
=
"/{id}"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
public
ObjectRestResponse
<
AppUser
>
get
(
@PathVariable
int
id
){
ObjectRestResponse
<
AppUser
>
entityObjectRestResponse
=
new
ObjectRestResponse
<>();
AppUser
o
=
appUserBiz
.
selectById
(
id
);
entityObjectRestResponse
.
data
(
o
);
return
entityObjectRestResponse
;
}
@RequestMapping
(
value
=
"/{id}"
,
method
=
RequestMethod
.
PUT
)
@ResponseBody
public
ObjectRestResponse
<
AppUser
>
update
(
@RequestBody
AppUser
entity
){
appUserBiz
.
updateSelectiveById
(
entity
);
return
new
ObjectRestResponse
<
AppUser
>();
}
@RequestMapping
(
value
=
"/{id}"
,
method
=
RequestMethod
.
DELETE
)
@ResponseBody
public
ObjectRestResponse
<
AppUser
>
remove
(
@PathVariable
int
id
){
appUserBiz
.
deleteById
(
id
);
return
new
ObjectRestResponse
<
AppUser
>();
}
@RequestMapping
(
value
=
"/all"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
public
List
<
AppUser
>
all
(){
return
appUserBiz
.
selectListAll
();
}
@GetMapping
(
"groups/{id}"
)
public
List
<
Group
>
groups
(
@PathVariable
Integer
id
)
{
return
appUserBiz
.
selectGroupsByAppUserId
(
id
);
}
@PostMapping
(
"groups"
)
public
ObjectRestResponse
insertAppUserGroups
(
@RequestBody
AppUserGroups
appUserGroups
)
{
appUserBiz
.
insertAppUserGroup
(
appUserGroups
.
getAppUserId
(),
appUserGroups
.
getGroups
());
return
new
ObjectRestResponse
();
}
}
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/vo/AppUserGroups.java
0 → 100644
View file @
cf7348f8
package
com
.
github
.
wxiaoqi
.
security
.
admin
.
vo
;
import
lombok.Data
;
import
java.util.Set
;
/**
* App用户角色
*/
@Data
public
class
AppUserGroups
{
Integer
appUserId
;
Set
<
Integer
>
groups
;
}
ace-modules/ace-admin/src/main/resources/mapper/AppUserMapper.xml
0 → 100644
View file @
cf7348f8
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
namespace=
"com.github.wxiaoqi.security.admin.mapper.AppUserMapper"
>
<insert
id=
"insertAppUserGroup"
>
insert into app_group_member(user_id, group_id)
VALUES
<trim
suffixOverrides=
","
>
<foreach
collection=
"groups"
item=
"groupId"
>
(#{appUserId}, #{groupId}),
</foreach>
</trim>
</insert>
<delete
id=
"deleteAppUserGroup"
>
delete from app_group_member
where user_id = #{appUserId}
</delete>
<select
id=
"selectGroupsByAppUserId"
resultType=
"com.github.wxiaoqi.security.admin.entity.Group"
>
select *
from base_group bg
right join app_group_member agm on bg.id = agm.group_id
where user_id = #{id}
</select>
</mapper>
\ No newline at end of file
ace-modules/ace-admin/src/main/resources/mapper/ElementMapper.xml
View file @
cf7348f8
...
@@ -42,17 +42,20 @@
...
@@ -42,17 +42,20 @@
on t.menu_id = m.id
on t.menu_id = m.id
</select>
</select>
<select
id=
"selectAuthorityElementByAppUserId"
resultMap=
"BaseResultMap"
>
<select
id=
"selectAuthorityElementByAppUserId"
resultMap=
"BaseResultMap"
>
select distinct t.code,t.type,t.name,t.uri,t.method,m.title as menu_id from base_resource_authority ra
SELECT DISTINCT
inner join base_element t
t.CODE,
on ra.resource_id = t.id
t.type,
and ra.authority_id in (
t.NAME,
select group_id from base_group_member where user_id = #{userId}
t.uri,
union select group_id from base_group_leader where user_id = #{userId}
t.method,
)
m.title AS menu_id
and ra.authority_type = 'group'
FROM
and ra.resource_type = 'button'
base_resource_authority ra
inner join base_menu m
INNER JOIN base_element t ON ra.resource_id = t.id
on t.menu_id = m.id
AND ra.authority_id IN ( SELECT group_id FROM app_group_member WHERE user_id = #{userId} )
AND ra.authority_type = 'group'
AND ra.resource_type = 'button'
INNER JOIN base_menu m ON t.menu_id = m.id
</select>
</select>
<select
id=
"selectAuthorityMenuElementByUserId"
resultMap=
"BaseResultMap"
>
<select
id=
"selectAuthorityMenuElementByUserId"
resultMap=
"BaseResultMap"
>
select distinct t.* from base_resource_authority ra
select distinct t.* from base_resource_authority ra
...
...
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