Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 20b1e535
由
LN
编写于
2021-09-23 09:30:30 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
bug修改。权限查询修改。
1 个父辈
47b37aac
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
73 行增加
和
28 行删除
src/main/java/com/neotel/smfcore/common/base/AbstractBaseDao.java
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
src/main/java/com/neotel/smfcore/security/config/ElPermissionConfig.java
src/main/java/com/neotel/smfcore/security/service/UserDetailsServiceImpl.java
src/main/java/com/neotel/smfcore/security/service/manager/IMenuManager.java
src/main/java/com/neotel/smfcore/security/service/manager/impl/MenuManagerImpl.java
src/main/java/com/neotel/smfcore/common/base/AbstractBaseDao.java
查看文件 @
20b1e53
...
@@ -202,15 +202,26 @@ public abstract class AbstractBaseDao implements IBaseDao {
...
@@ -202,15 +202,26 @@ public abstract class AbstractBaseDao implements IBaseDao {
public
String
getNextId
(
String
domain
)
{
public
String
getNextId
(
String
domain
)
{
Query
query
=
Query
.
query
(
Criteria
.
where
(
"id"
).
is
(
domain
));
Query
query
=
Query
.
query
(
Criteria
.
where
(
"id"
).
is
(
domain
));
FindAndModifyOptions
options
=
FindAndModifyOptions
.
options
().
returnNew
(
tru
e
);
FindAndModifyOptions
options
=
FindAndModifyOptions
.
options
().
returnNew
(
fals
e
);
Update
update
=
new
Update
().
inc
(
"seq"
,
1
);
Update
update
=
new
Update
().
inc
(
"seq"
,
1
);
Sequence
sequence
=
mongoTemplate
.
findAndModify
(
query
,
update
,
options
,
Sequence
.
class
);
Sequence
sequence
=
mongoTemplate
.
findAndModify
(
query
,
update
,
options
,
Sequence
.
class
);
if
(
sequence
==
null
)
{
if
(
sequence
==
null
)
{
log
.
info
(
"Seq bean is null, create new one with domain "
+
domain
);
//
sequence
=
new
Sequence
();
int
inidex
=
domain
.
lastIndexOf
(
"."
);
sequence
.
setId
(
domain
);
String
name
=
domain
.
substring
(
inidex
);
sequence
.
setSeq
(
new
Long
(
1
));
Query
query2
=
Query
.
query
(
Criteria
.
where
(
"id"
).
regex
(
"\\"
+
name
+
"$"
));
getMongoTemplate
().
insert
(
sequence
);
FindAndModifyOptions
options2
=
FindAndModifyOptions
.
options
().
returnNew
(
false
);
Update
update2
=
new
Update
().
inc
(
"seq"
,
1
);
sequence
=
mongoTemplate
.
findAndModify
(
query2
,
update2
,
options2
,
Sequence
.
class
);
if
(
sequence
==
null
)
{
log
.
info
(
"Seq bean is null, create new one with domain "
+
domain
);
sequence
=
new
Sequence
();
sequence
.
setId
(
domain
);
sequence
.
setSeq
(
new
Long
(
1
));
getMongoTemplate
().
insert
(
sequence
);
}
}
}
return
sequence
.
getSeq
().
toString
();
return
sequence
.
getSeq
().
toString
();
}
}
...
...
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
查看文件 @
20b1e53
...
@@ -144,26 +144,31 @@ public class DataInitManager {
...
@@ -144,26 +144,31 @@ public class DataInitManager {
private
List
<
Menu
>
createSubPerMenus
(
Menu
menu
)
{
private
List
<
Menu
>
createSubPerMenus
(
Menu
menu
)
{
List
<
Menu
>
list
=
new
ArrayList
<>();
List
<
Menu
>
list
=
new
ArrayList
<>();
// //如果是list结尾的,默认增加其他的权限菜单
//如果是list结尾的,默认前缀菜单
// Map<String, String[]> defaultMenus = new HashMap<>();
Map
<
String
,
String
[]>
defaultMenus
=
new
HashMap
<>();
// defaultMenus.put("menu", new String[]{"menu:edit", "menu:del", "menu:add"});
defaultMenus
.
put
(
"boxkanban"
,
new
String
[]{
"boxkanban:info"
,
"boxkanban:list"
});
// defaultMenus.put("user",new String[]{});
defaultMenus
.
put
(
"sensorShelf"
,
new
String
[]{
"sensorShelf:putIn"
});
// defaultMenus.put("role",new String[]{});
defaultMenus
.
put
(
"menu"
,
new
String
[]{
"menu:edit"
,
"menu:del"
,
"menu:add"
});
//
defaultMenus
.
put
(
"user"
,
new
String
[]{});
// String per = menu.getPermission().replace(":list", "");
defaultMenus
.
put
(
"role"
,
new
String
[]{});
// String menuName = menu.getTitle().replace("管理", "");
// if (!defaultMenus.containsKey(per)) {
String
per
=
menu
.
getPermission
().
replace
(
":list"
,
""
);
String
menuName
=
menu
.
getTitle
().
replace
(
"管理"
,
""
);
if
(!
defaultMenus
.
containsKey
(
per
))
{
defaultMenus
.
put
(
per
,
new
String
[]{
per
});
// return list;
// return list;
//
}
}
//
String[] subPers = defaultMenus.get(per);
String
[]
subPers
=
defaultMenus
.
get
(
per
);
//
if (subPers.length <= 0) {
if
(
subPers
.
length
<=
0
)
{
// subPers = new String[]{per + ":edit", per + ":del", per + ":add"};
// subPers = new String[]{per + ":edit", per + ":del", per + ":add"};
// }
subPers
=
new
String
[]{
per
};
// for (String subPer :
}
// subPers) {
for
(
String
subPer
:
// Menu subperMenu = menuManager.save(Menu.CreatePerMenu(subPer, menuName + "_" + subPer, menu.getId()));
subPers
)
{
// list.add(subperMenu);
String
title
=
"权限_"
+
menuName
+
"_"
+
subPer
;
// }
Menu
subperMenu
=
menuManager
.
save
(
Menu
.
CreatePerMenu
(
subPer
,
title
,
menu
.
getId
()));
list
.
add
(
subperMenu
);
}
return
list
;
return
list
;
}
}
...
@@ -176,7 +181,7 @@ public class DataInitManager {
...
@@ -176,7 +181,7 @@ public class DataInitManager {
// menukanban.setHidden(true);
// menukanban.setHidden(true);
menus
.
addAll
(
createMenus
(
menukanban
));
menus
.
addAll
(
createMenus
(
menukanban
));
//料架分组
//料架分组
Menu
menuShelf
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"
menu:list
"
,
"料架分组"
,
1
,
"lightGroup"
,
"neolight/lightGroup/index"
,
""
,
0
,
"neo1"
);
Menu
menuShelf
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"
sensorShelf
"
,
"料架分组"
,
1
,
"lightGroup"
,
"neolight/lightGroup/index"
,
""
,
0
,
"neo1"
);
// menuShelf.setHidden(true);
// menuShelf.setHidden(true);
menus
.
addAll
(
createMenus
(
menuShelf
));
menus
.
addAll
(
createMenus
(
menuShelf
));
...
...
src/main/java/com/neotel/smfcore/security/config/ElPermissionConfig.java
查看文件 @
20b1e53
...
@@ -2,13 +2,14 @@ package com.neotel.smfcore.security.config;
...
@@ -2,13 +2,14 @@ package com.neotel.smfcore.security.config;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.security.core.GrantedAuthority
;
import
org.springframework.security.core.GrantedAuthority
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.Arrays
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
@Slf4j
@Service
(
value
=
"el"
)
@Service
(
value
=
"el"
)
public
class
ElPermissionConfig
{
public
class
ElPermissionConfig
{
public
Boolean
check
(
String
...
permissions
){
public
Boolean
check
(
String
...
permissions
){
...
@@ -20,7 +21,17 @@ public class ElPermissionConfig {
...
@@ -20,7 +21,17 @@ public class ElPermissionConfig {
// 获取当前用户的所有权限
// 获取当前用户的所有权限
List
<
String
>
elPermissions
=
SecurityUtils
.
getCurrentUser
().
getAuthorities
().
stream
().
map
(
GrantedAuthority:
:
getAuthority
).
collect
(
Collectors
.
toList
());
List
<
String
>
elPermissions
=
SecurityUtils
.
getCurrentUser
().
getAuthorities
().
stream
().
map
(
GrantedAuthority:
:
getAuthority
).
collect
(
Collectors
.
toList
());
// 判断当前用户的所有权限是否包含接口上定义的权限
// 判断当前用户的所有权限是否包含接口上定义的权限
return
elPermissions
.
contains
(
"admin"
)
||
Arrays
.
stream
(
permissions
).
anyMatch
(
elPermissions:
:
contains
);
boolean
result
=
elPermissions
.
contains
(
"admin"
)
||
Arrays
.
stream
(
permissions
).
anyMatch
(
elPermissions:
:
contains
);
String
msg
=
""
;
for
(
String
str
:
permissions
)
{
msg
+=
str
+
","
;
}
if
(!
result
){
log
.
info
(
"username["
+
SecurityUtils
.
getCurrentUsername
()+
"] 对 ["
+
msg
+
"]无访问权限"
);
}
return
result
;
}
}
}
}
src/main/java/com/neotel/smfcore/security/service/UserDetailsServiceImpl.java
查看文件 @
20b1e53
...
@@ -116,7 +116,7 @@ public class UserDetailsServiceImpl implements UserDetailsService {
...
@@ -116,7 +116,7 @@ public class UserDetailsServiceImpl implements UserDetailsService {
return
permissions
.
stream
().
map
(
SimpleGrantedAuthority:
:
new
)
return
permissions
.
stream
().
map
(
SimpleGrantedAuthority:
:
new
)
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
}
}
List
<
Menu
>
menus
=
menuManager
.
findByRoleId
(
user
.
getRoleId
());
List
<
Menu
>
menus
=
menuManager
.
find
Permission
ByRoleId
(
user
.
getRoleId
());
permissions
=
menus
.
stream
().
filter
(
menu
->
StringUtils
.
isNotBlank
(
menu
.
getPermission
()))
permissions
=
menus
.
stream
().
filter
(
menu
->
StringUtils
.
isNotBlank
(
menu
.
getPermission
()))
.
map
(
Menu:
:
getPermission
).
collect
(
Collectors
.
toSet
());
.
map
(
Menu:
:
getPermission
).
collect
(
Collectors
.
toSet
());
return
permissions
.
stream
().
map
(
SimpleGrantedAuthority:
:
new
)
return
permissions
.
stream
().
map
(
SimpleGrantedAuthority:
:
new
)
...
...
src/main/java/com/neotel/smfcore/security/service/manager/IMenuManager.java
查看文件 @
20b1e53
...
@@ -30,6 +30,12 @@ public interface IMenuManager extends IBaseManager<Menu> {
...
@@ -30,6 +30,12 @@ public interface IMenuManager extends IBaseManager<Menu> {
List
<
Menu
>
findByUserId
(
String
currentUserId
);
List
<
Menu
>
findByUserId
(
String
currentUserId
);
/**
/**
* 根据角色ID查找所有的权限列表
* @param roleId
* @return
*/
List
<
Menu
>
findPermissionByRoleId
(
String
roleId
)
;
/**
* 构建菜单树
* 构建菜单树
* @param menuDtos 原始数据
* @param menuDtos 原始数据
* @return /
* @return /
...
...
src/main/java/com/neotel/smfcore/security/service/manager/impl/MenuManagerImpl.java
查看文件 @
20b1e53
...
@@ -82,6 +82,18 @@ public class MenuManagerImpl implements IMenuManager {
...
@@ -82,6 +82,18 @@ public class MenuManagerImpl implements IMenuManager {
}
}
return
new
ArrayList
<
Menu
>();
return
new
ArrayList
<
Menu
>();
}
}
@Override
public
List
<
Menu
>
findPermissionByRoleId
(
String
roleId
)
{
Role
role
=
roleManager
.
get
(
roleId
);
if
(
role
!=
null
){
Criteria
c
=
Criteria
.
where
(
"id"
).
in
(
role
.
getMenus
());
Query
query
=
new
Query
(
c
);
query
.
with
(
Sort
.
by
(
Sort
.
Direction
.
ASC
,
"menuSort"
));
List
<
Menu
>
menus
=
findByQuery
(
query
);
return
menus
;
}
return
new
ArrayList
<
Menu
>();
}
@Override
@Override
public
List
<
Menu
>
findByUserId
(
String
currentUserId
)
{
public
List
<
Menu
>
findByUserId
(
String
currentUserId
)
{
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论