Commit d8970c78 zshaohui

增加用户权限管理

1 个父辈 652927be
...@@ -89,7 +89,7 @@ public class DataInitManager { ...@@ -89,7 +89,7 @@ public class DataInitManager {
operator = roleManager.save(operator); operator = roleManager.save(operator);
log.info("创建默认角色:" + operator.toString()); log.info("创建默认角色:" + operator.toString());
admin = new User(userName, "admin@qq.com", "zh-CN", role.getId(), "$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa", true, true, new Date(), groupIds, ""); admin = new User(userName, "admin@qq.com", "zh-CN", role.getId(), "$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa", true, true, new Date(), groupIds, "",new ArrayList<>(),new ArrayList<>());
admin = userManager.save(admin); admin = userManager.save(admin);
log.info("创建默认用户:" + admin.toString()); log.info("创建默认用户:" + admin.toString());
......
...@@ -107,7 +107,7 @@ public class UserCodeUtil { ...@@ -107,7 +107,7 @@ public class UserCodeUtil {
String langu=""; String langu="";
String roleId=""; String roleId="";
User user=new User(username,email,langu,roleId,"",true User user=new User(username,email,langu,roleId,"",true
,false,new Date(),new HashSet<>(),""); ,false,new Date(),new HashSet<>(),"",new ArrayList<>(),new ArrayList<>());
user.setId(id); user.setId(id);
user.setCreateDate(createData); user.setCreateDate(createData);
list.add(user); list.add(user);
......
...@@ -2,6 +2,8 @@ package com.neotel.smfcore.custom.micron20031.login.api.bean; ...@@ -2,6 +2,8 @@ package com.neotel.smfcore.custom.micron20031.login.api.bean;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* { * {
* "aud": "4b3a662e-df9a-4215-8c11-19329d82cecb", * "aud": "4b3a662e-df9a-4215-8c11-19329d82cecb",
...@@ -68,5 +70,7 @@ public class MicronUserInfo { ...@@ -68,5 +70,7 @@ public class MicronUserInfo {
private String authmethod; private String authmethod;
private String ver; private String ver;
private List<String> role;
} }
package com.neotel.smfcore.custom.micron20031.login.config;
import com.google.common.collect.Maps;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@Component
public class UserRoleMenuConfig {
/**
* key为镁光返回的role,vaule为菜单path
*/
static Map<String, List<String>> roleMenuMap = Maps.newConcurrentMap();
@PostConstruct
void initRoleMenuMap() {
roleMenuMap.put("Order", getOrderMenu());
roleMenuMap.put("Deposit", getDepositMenu());
roleMenuMap.put("Withdrawal", getWithdrawalMenu());
roleMenuMap.put("Return", getReturnMenu());
roleMenuMap.put("Remove", getRemoveMenu());
roleMenuMap.put("Maintenance", getMaintenanceMenu());
roleMenuMap.put("Configure", getConfigureMenu());
roleMenuMap.put("Transaction History", getTransactionHistoryMenu());
}
public static List<String> getMenuByRole(String role){
return roleMenuMap.get(role);
}
private List<String> getOrderMenu() {
return Arrays.asList("orderReport");
}
private List<String> getDepositMenu() {
return Arrays.asList("spKanban");
}
private List<String> getWithdrawalMenu() {
return Arrays.asList("spKanban");
}
private List<String> getReturnMenu() {
return Arrays.asList("spKanban");
}
private List<String> getRemoveMenu() {
return Arrays.asList("spRemoval","order","searchOut","singleOuput");
}
private List<String> getMaintenanceMenu() {
return Arrays.asList("selfAuditManagerment", "selfAudit", "selfAuditLog");
}
private List<String> getConfigureMenu() {
return Arrays.asList("materiel", "componentParts", "system", "bunker", "storagePos", "menu", "sysSetting", "translation", "barcodes", "barcode", "barcodeSetting", "userManager", "peoples", "role");
}
private List<String> getTransactionHistoryMenu(){
return Arrays.asList("log","taskLog");
}
}
...@@ -6,6 +6,7 @@ import com.neotel.smfcore.common.utils.*; ...@@ -6,6 +6,7 @@ import com.neotel.smfcore.common.utils.*;
import com.neotel.smfcore.custom.micron20031.login.api.MicronLoginApi; import com.neotel.smfcore.custom.micron20031.login.api.MicronLoginApi;
import com.neotel.smfcore.custom.micron20031.login.api.bean.MicronUserInfo; import com.neotel.smfcore.custom.micron20031.login.api.bean.MicronUserInfo;
import com.neotel.smfcore.custom.micron20031.login.config.MicronLoginConfig; import com.neotel.smfcore.custom.micron20031.login.config.MicronLoginConfig;
import com.neotel.smfcore.custom.micron20031.login.config.UserRoleMenuConfig;
import com.neotel.smfcore.security.TokenProvider; import com.neotel.smfcore.security.TokenProvider;
import com.neotel.smfcore.security.annotation.AnonymousAccess; import com.neotel.smfcore.security.annotation.AnonymousAccess;
import com.neotel.smfcore.security.bean.LoginProperties; import com.neotel.smfcore.security.bean.LoginProperties;
...@@ -124,10 +125,31 @@ public class MicronLoginController { ...@@ -124,10 +125,31 @@ public class MicronLoginController {
//123456..123 //123456..123
String pwd = passwordEncoder.encode("123456..123"); String pwd = passwordEncoder.encode("123456..123");
Role role = roleManager.findOne(new Query(Criteria.where("name").is("admin"))); Role role = roleManager.findOne(new Query(Criteria.where("name").is("admin")));
user = new User(userInfo.getWinaccountname(), userInfo.getEmail(), "zh-CN", role.getId(), pwd, true, true, new Date(), new HashSet<>(), ""); user = new User(userInfo.getWinaccountname(), userInfo.getEmail(), "zh-CN", role.getId(), pwd, true, true, new Date(), new HashSet<>(), "",new ArrayList<>(),new ArrayList<>());
user = userManager.save(user);
} }
//重新设置用户展示菜单,替换掉上一次
user.setShowButtonList(new ArrayList<>());
user.setShowList(new ArrayList<>());
//设置用户的菜单信息
List<String> roleList = userInfo.getRole();
if (roleList != null && !roleList.isEmpty()) {
List<String> showList = new ArrayList<>();
for (String role : roleList) {
List<String> menuPathList = UserRoleMenuConfig.getMenuByRole(role);
if (menuPathList != null && !menuPathList.isEmpty()) {
showList.addAll(menuPathList);
}
}
//设置用户菜单权限
user.setShowList(showList);
//设置用户按钮权限
user.setShowButtonList(roleList);
}
user = userManager.save(user);
final String password = "123456..123"; final String password = "123456..123";
UsernamePasswordAuthenticationToken authenticationToken = UsernamePasswordAuthenticationToken authenticationToken =
new UsernamePasswordAuthenticationToken(user.getUsername(), password); new UsernamePasswordAuthenticationToken(user.getUsername(), password);
......
...@@ -31,7 +31,9 @@ import com.neotel.smfcore.security.rest.bean.mapstruct.MenuMapper; ...@@ -31,7 +31,9 @@ import com.neotel.smfcore.security.rest.bean.mapstruct.MenuMapper;
import com.neotel.smfcore.security.rest.bean.query.MenuQueryCondition; import com.neotel.smfcore.security.rest.bean.query.MenuQueryCondition;
import com.neotel.smfcore.security.rest.bean.vo.MenuVo; import com.neotel.smfcore.security.rest.bean.vo.MenuVo;
import com.neotel.smfcore.security.service.manager.IMenuManager; import com.neotel.smfcore.security.service.manager.IMenuManager;
import com.neotel.smfcore.security.service.manager.IUserManager;
import com.neotel.smfcore.security.service.po.Menu; import com.neotel.smfcore.security.service.po.Menu;
import com.neotel.smfcore.security.service.po.User;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -72,6 +74,9 @@ public class MenuController { ...@@ -72,6 +74,9 @@ public class MenuController {
@Autowired @Autowired
MenuInit menuInit; MenuInit menuInit;
@Autowired
IUserManager userManager;
@RequestMapping(value = "/show") @RequestMapping(value = "/show")
@AnonymousAccess @AnonymousAccess
public ResponseEntity<Object> show(@RequestParam String menuPath) { public ResponseEntity<Object> show(@RequestParam String menuPath) {
...@@ -100,6 +105,17 @@ public class MenuController { ...@@ -100,6 +105,17 @@ public class MenuController {
} catch (Exception ex) { } catch (Exception ex) {
log.error("获取当前用户出错:" + ex); log.error("获取当前用户出错:" + ex);
} }
User user = userManager.get(userId);
List<String> showList = user.getShowList();
if (showList != null && !showList.isEmpty()){
List<Menu> menuList = menuManager.findByQuery(new Query(Criteria.where("path").in(showList)));
menuList = menuList.stream().sorted(Comparator.comparing(Menu::getMenuSort)).collect(Collectors.toList());
List<Menu> buildMenuList=menuManager.buildTree(menuList);
List<MenuVo> vos = menuManager.buildMenus(buildMenuList,servletRequest.getLocale());
return new ResponseEntity<>(vos, HttpStatus.OK);
}
List<Menu> menuList = menuManager.findByUserId(userId); List<Menu> menuList = menuManager.findByUserId(userId);
List<Menu> buildMenuList=menuManager.buildTree(menuList); List<Menu> buildMenuList=menuManager.buildTree(menuList);
// List<MenuDto> menuDtoList = menuMapper.toDto(menuManager.buildTree(menuList)); // List<MenuDto> menuDtoList = menuMapper.toDto(menuManager.buildTree(menuList));
......
...@@ -112,7 +112,7 @@ public class MenuManagerImpl implements IMenuManager { ...@@ -112,7 +112,7 @@ public class MenuManagerImpl implements IMenuManager {
List<Menu> trees = new ArrayList<>(); List<Menu> trees = new ArrayList<>();
Set<String> ids = new HashSet<>(); Set<String> ids = new HashSet<>();
for (Menu menu : menus) { for (Menu menu : menus) {
if (menu.getPid() == null) { if (StringUtils.isBlank(menu.getPid())) {
trees.add(menu); trees.add(menu);
} }
for (Menu it : menus) { for (Menu it : menus) {
......
...@@ -21,7 +21,9 @@ import lombok.*; ...@@ -21,7 +21,9 @@ import lombok.*;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List;
import java.util.Set; import java.util.Set;
/** /**
...@@ -58,6 +60,11 @@ public class User extends BasePo implements Serializable { ...@@ -58,6 +60,11 @@ public class User extends BasePo implements Serializable {
private String checkCode; private String checkCode;
private List<String> showList = new ArrayList<>();
private List<String> showButtonList = new ArrayList<>();
public boolean hasGroup(String groupId) { public boolean hasGroup(String groupId) {
if (groupId == null || groupId.equals("") || groupId.equals("-1")) { if (groupId == null || groupId.equals("") || groupId.equals("-1")) {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!