Commit 7ecd0925 LN

增加组管理类

1 个父辈 2babe04a
正在显示 21 个修改的文件 包含 643 行增加196 行删除
package com.neotel.smfcore.common.init; package com.neotel.smfcore.common.init;
import com.neotel.smfcore.security.service.manager.IGroupManager;
import com.neotel.smfcore.security.service.manager.IMenuManager;
import com.neotel.smfcore.security.service.manager.IRoleManager;
import com.neotel.smfcore.security.service.manager.IUserManager;
import com.neotel.smfcore.security.service.manager.impl.GroupManagerImpl;
import com.neotel.smfcore.security.service.manager.impl.MenuManagerImpl; import com.neotel.smfcore.security.service.manager.impl.MenuManagerImpl;
import com.neotel.smfcore.security.service.manager.impl.RoleManagerImpl; import com.neotel.smfcore.security.service.manager.impl.RoleManagerImpl;
import com.neotel.smfcore.security.service.manager.impl.UserManagerImpl; import com.neotel.smfcore.security.service.manager.impl.UserManagerImpl;
import com.neotel.smfcore.security.service.po.Group;
import com.neotel.smfcore.security.service.po.Menu; import com.neotel.smfcore.security.service.po.Menu;
import com.neotel.smfcore.security.service.po.Role; import com.neotel.smfcore.security.service.po.Role;
import com.neotel.smfcore.security.service.po.User; import com.neotel.smfcore.security.service.po.User;
...@@ -19,11 +25,13 @@ import java.util.*; ...@@ -19,11 +25,13 @@ import java.util.*;
public class DataInitManager { public class DataInitManager {
@Autowired @Autowired
UserManagerImpl userManager; IUserManager userManager;
@Autowired @Autowired
RoleManagerImpl roleManager; IRoleManager roleManager;
@Autowired @Autowired
MenuManagerImpl menuManager; IMenuManager menuManager;
@Autowired
IGroupManager groupManager;
@PostConstruct @PostConstruct
public void DataInit() { public void DataInit() {
...@@ -34,28 +42,71 @@ public class DataInitManager { ...@@ -34,28 +42,71 @@ public class DataInitManager {
User admin = userManager.findByUserName(userName); User admin = userManager.findByUserName(userName);
if (admin == null) { if (admin == null) {
Menu menu1 = new Menu(new ArrayList<Menu>(), 0, "menu:list", "料架分组", 1, "lightGroup", "neolight/lightGroup/index", "", 0, false, false, false, "料架管理", "menu"); Menu menu1 = new Menu(new ArrayList<Menu>(), 1, "menu:list", "料架分组", 1, "lightGroup", "neolight/lightGroup/index", "", 0, "menu");
Menu menu2 = new Menu(new ArrayList<Menu>(), 0, "menu:list", "工单", 2, "workOrder", "neolight/workOrder/index", "", 0, false, false, false, "工单", "menu"); Menu menu2 = new Menu(new ArrayList<Menu>(), 1, "menu:list", "工单", 2, "workOrder", "neolight/workOrder/index", "", 0, "menu");
Menu menu3 = new Menu(new ArrayList<Menu>(), 0, "menu:list", "查找出库", 3, "menu", "neolight/singleOuput/index", "", 0, false, false, false, "查找出库", "menu"); Menu menu3 = new Menu(new ArrayList<Menu>(), 1, "menu:list", "查找出库", 3, "singleOuput", "neolight/singleOuput/index", "", 0, "menu");
Menu menu4 = new Menu(new ArrayList<Menu>(), 1, "menu:list", "分组管理", 4, "groupManager", "neolight/groupManager/index", "", 0, "menu");
// Menu menu4 = new Menu(new ArrayList<Menu>(), 0, "menu:list", "角色管理", 4, "menu", "user/roleSearch", "", 0, false, false, false, "角色管理", "menu"); // Menu menu4 = new Menu(new ArrayList<Menu>(), 0, "menu:list", "角色管理", 4, "menu", "user/roleSearch", "", 0, false, false, false, "角色管理", "menu");
List<Menu> menus=new ArrayList<Menu>(); List<Menu> menus=new ArrayList<Menu>();
menus.add(menu1); menus.add(menu1);
menus.add(menu2); menus.add(menu2);
menus.add(menu3); menus.add(menu3);
Set<String> Menus = new HashSet<String>() ; menus.add(menu4);
for (Menu menu: menus Set<String> menuIdSet = new HashSet<String>() ;
) { for (Menu menu: menus ) {
menu=menuManager.save(menu); menu=menuManager.save(menu);
// log.info("创建默认菜单:" + menu.toString());
// Menus.add(menu.getId());
}
Menu menuUser = new Menu(new ArrayList<Menu>(), 1, "user:list", "用户管理", 11, "peoples", "system/user/index", "", 3, "peoples");
menuUser=menuManager.save(menuUser);
Menu menuUser1 =menuManager.save(new Menu( "user:edit", "用户编辑", 12, menuUser.getId())) ;
Menu menuUser2 = menuManager.save(new Menu( "user:del", "用户删除", 13, menuUser.getId()));
Menu menuUser3 =menuManager.save( new Menu( "user:add", "用户新增", 13, menuUser.getId()));
menus.add(menuUser);
menus.add(menuUser1);
menus.add(menuUser2);
menus.add(menuUser3);
Menu menuRole = new Menu(new ArrayList<Menu>(), 1, "role:list", "角色管理", 21, "role", "system/role/index", "", 3, "role");
menuUser=menuManager.save(menuRole);
Menu menuRole1 =menuManager.save(new Menu( "role:edit", "角色编辑", 22, menuRole.getId())) ;
Menu menuRole2 = menuManager.save(new Menu( "role:del", "角色删除", 23, menuRole.getId()));
Menu menuRole3 =menuManager.save( new Menu( "role:add", "角色新增", 23, menuRole.getId()));
menus.add(menuRole);
menus.add(menuRole1);
menus.add(menuRole2);
menus.add(menuRole3);
Menu menuMenu = new Menu(new ArrayList<Menu>(), 1, "menu:list", "菜单管理", 31, "menu", "system/menu/index", "", 3, "menu");
menuMenu=menuManager.save(menuMenu);
Menu menuMenu1 =menuManager.save(new Menu( "menu:edit", "菜单编辑", 32, menuMenu.getId())) ;
Menu menuMenu2 = menuManager.save(new Menu( "menu:del", "菜单删除", 33, menuMenu.getId()));
Menu menuMenu3 =menuManager.save( new Menu( "menu:add", "菜单新增", 33, menuMenu.getId()));
menus.add(menuMenu);
menus.add(menuMenu1);
menus.add(menuMenu2);
menus.add(menuMenu3);
for (Menu menu: menus ) {
log.info("创建默认菜单:" + menu.toString()); log.info("创建默认菜单:" + menu.toString());
Menus.add(menu.getId()); menuIdSet.add(menu.getId());
} }
Role role = new Role(Menus,"admin","全部",1,"管理员"); Group group=new Group("未分组");
group=groupManager.save(group);
log.info("创建默认组:" + group.toString());
Set<String> groupIds= new HashSet<>();
groupIds.add(group.getId());
Role role = new Role(menuIdSet,"admin","全部",1,"管理员");
role= roleManager.save(role); role= roleManager.save(role);
log.info("创建默认角色:" + role.toString()); log.info("创建默认角色:" + role.toString());
admin = new User(role.getId(), userName, "", "$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa", true,true,new Date()); admin = new User(role.getId(), userName, "", "$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa", true, true, new Date(), groupIds );
userManager.save(admin); userManager.save(admin);
log.info("创建默认用户:" + admin.toString()); log.info("创建默认用户:" + admin.toString());
......
package com.neotel.smfcore.security.config;
import com.neotel.smfcore.common.utils.SecurityUtils;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Service(value = "el")
public class ElPermissionConfig {
public Boolean check(String ... permissions){
// 获取当前用户的所有权限
List<String> elPermissions = SecurityUtils.getCurrentUser().getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList());
// 判断当前用户的所有权限是否包含接口上定义的权限
return elPermissions.contains("admin") || Arrays.stream(permissions).anyMatch(elPermissions::contains);
}
}
...@@ -121,6 +121,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { ...@@ -121,6 +121,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers("/druid/**").permitAll() .antMatchers("/druid/**").permitAll()
// 放行OPTIONS请求 // 放行OPTIONS请求
.antMatchers(HttpMethod.OPTIONS, "/**").permitAll() .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
.antMatchers("api/menus/build").permitAll()
// 自定义匿名访问所有url放行:允许匿名和带Token访问,细腻化到每个 Request 类型 // 自定义匿名访问所有url放行:允许匿名和带Token访问,细腻化到每个 Request 类型
// GET // GET
.antMatchers(HttpMethod.GET, anonymousUrls.get(RequestMethodEnum.GET.getType()).toArray(new String[0])).permitAll() .antMatchers(HttpMethod.GET, anonymousUrls.get(RequestMethodEnum.GET.getType()).toArray(new String[0])).permitAll()
......
package com.neotel.smfcore.security.rest;
import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor
@Api(tags = "系统:组管理")
@RequestMapping("/api/groups")
@Slf4j
public class GroupController {
}
...@@ -17,6 +17,8 @@ package com.neotel.smfcore.security.rest; ...@@ -17,6 +17,8 @@ package com.neotel.smfcore.security.rest;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.neotel.smfcore.common.annotation.QueryCondition; import com.neotel.smfcore.common.annotation.QueryCondition;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.PageUtil;
import com.neotel.smfcore.common.utils.SecurityUtils; import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.security.annotation.AnonymousAccess; import com.neotel.smfcore.security.annotation.AnonymousAccess;
import com.neotel.smfcore.security.rest.bean.dto.MenuDto; import com.neotel.smfcore.security.rest.bean.dto.MenuDto;
...@@ -30,6 +32,8 @@ import lombok.RequiredArgsConstructor; ...@@ -30,6 +32,8 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j; import lombok.extern.log4j.Log4j;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
...@@ -74,96 +78,103 @@ public class MenuController { ...@@ -74,96 +78,103 @@ public class MenuController {
return new ResponseEntity<>(vos, HttpStatus.OK); return new ResponseEntity<>(vos, HttpStatus.OK);
} }
// @ApiOperation("导出菜单数据") @ApiOperation("导出菜单数据")
// @GetMapping(value = "/download") @GetMapping(value = "/download")
// @PreAuthorize("@el.check('menu:list')") @PreAuthorize("@el.check('menu:list')")
// public void download(HttpServletResponse response, QueryCondition criteria) throws Exception { public void download(HttpServletResponse response, QueryCondition criteria) throws Exception {
// menuService.download(menuService.queryAll(criteria, false), response); Query query=new Query(Criteria.where("type").ne(2));
// } menuManager.download(menuManager.findByQuery(query), response);
// }
// @GetMapping(value = "/build")
// @ApiOperation("获取前端所需菜单")
// public ResponseEntity<Object> buildMenus(){
// List<MenuDto> menuDtoList = menuService.findByUser(SecurityUtils.getCurrentUserId());
// List<MenuDto> menuDtos = menuService.buildTree(menuDtoList);
// return new ResponseEntity<>(menuService.buildMenus(menuDtos), HttpStatus.OK);
// }
//
// @ApiOperation("返回全部的菜单")
// @GetMapping(value = "/lazy")
// @PreAuthorize("@el.check('menu:list','roles:list')")
// public ResponseEntity<Object> query(@RequestParam Long pid){
// return new ResponseEntity<>(menuService.getMenus(pid), HttpStatus.OK);
// }
//
// @ApiOperation("根据菜单ID返回所有子节点ID,包含自身ID")
// @GetMapping(value = "/child")
// @PreAuthorize("@el.check('menu:list','roles:list')")
// public ResponseEntity<Object> child(@RequestParam Long id){
// Set<Menu> menuSet = new HashSet<>();
// List<MenuDto> menuList = menuService.getMenus(id);
// menuSet.add(menuService.findOne(id));
// menuSet = menuService.getChildMenus(menuMapper.toEntity(menuList), menuSet);
// Set<Long> ids = menuSet.stream().map(Menu::getId).collect(Collectors.toSet());
// return new ResponseEntity<>(ids, HttpStatus.OK);
// }
//
// @GetMapping
// @ApiOperation("查询菜单")
// @PreAuthorize("@el.check('menu:list')")
// public ResponseEntity<Object> query(MenuQueryCriteria criteria) throws Exception {
// List<MenuDto> menuDtoList = menuService.queryAll(criteria, true);
// return new ResponseEntity<>(PageUtil.toPage(menuDtoList, menuDtoList.size()), HttpStatus.OK);
// }
//
// @ApiOperation("查询菜单:根据ID获取同级与上级数据")
// @PostMapping("/superior")
// @PreAuthorize("@el.check('menu:list')")
// public ResponseEntity<Object> getSuperior(@RequestBody List<Long> ids) {
// Set<MenuDto> menuDtos = new LinkedHashSet<>();
// if(CollectionUtil.isNotEmpty(ids)){
// for (Long id : ids) {
// MenuDto menuDto = menuService.findById(id);
// menuDtos.addAll(menuService.getSuperior(menuDto, new ArrayList<>()));
// }
// return new ResponseEntity<>(menuService.buildTree(new ArrayList<>(menuDtos)), HttpStatus.OK);
// }
// return new ResponseEntity<>(menuService.getMenus(null), HttpStatus.OK);
// }
// //
@ApiOperation("返回全部的菜单")
@GetMapping(value = "/lazy")
@PreAuthorize("@el.check('menu:list','roles:list')")
public ResponseEntity<Object> query(@RequestParam String pid){
return new ResponseEntity<>(menuManager.getMenusByPid(pid), HttpStatus.OK);
}
@ApiOperation("根据菜单ID返回所有子节点ID,包含自身ID")
@GetMapping(value = "/child")
@PreAuthorize("@el.check('menu:list','roles:list')")
public ResponseEntity<Object> child(@RequestParam String id){
Set<Menu> menuSet = new HashSet<>();
List<Menu> menuList = menuManager.getMenusByPid(id);
menuSet.add(menuManager.get(id));
menuSet = menuManager.getChildMenus(menuList, menuSet);
Set<String> ids = menuSet.stream().map(Menu::getId).collect(Collectors.toSet());
return new ResponseEntity<>(ids, HttpStatus.OK);
}
@GetMapping
@ApiOperation("查询菜单")
@PreAuthorize("@el.check('menu:list')")
public ResponseEntity<Object> query(QueryCondition criteria) throws Exception {
Query query=new Query(Criteria.where("type").ne(2));
List<MenuDto> menuDtoList =menuMapper.toDto( menuManager.findByQuery(query));
return new ResponseEntity<>(PageUtil.toPage(menuDtoList, menuDtoList.size()), HttpStatus.OK);
}
@ApiOperation("查询菜单:根据ID获取同级与上级数据")
@PostMapping("/superior")
@PreAuthorize("@el.check('menu:list')")
public ResponseEntity<Object> getSuperior(@RequestBody List<String> ids) {
Set<Menu> menus = new LinkedHashSet<>();
if(CollectionUtil.isNotEmpty(ids)){
for (String id : ids) {
Menu menu = menuManager.get(id);
menus.addAll(menuManager.getSuperior(menu, new ArrayList<>()));
}
return new ResponseEntity<>(menuManager.buildTree(new ArrayList<>(menus)), HttpStatus.OK);
}
return new ResponseEntity<>(menuMapper.toDto(menuManager.getMenusByPid("")) , HttpStatus.OK);
}
// @Log("新增菜单") // @Log("新增菜单")
// @ApiOperation("新增菜单") @ApiOperation("新增菜单")
// @PostMapping @PostMapping
// @PreAuthorize("@el.check('menu:add')") @PreAuthorize("@el.check('menu:add')")
// public ResponseEntity<Object> create(@Validated @RequestBody Menu resources){ public ResponseEntity<Object> create(@Validated @RequestBody Menu resources){
// if (resources.getId() != null) { if (resources.getId() != null) {
// throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); // throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID");
// } log.error("menu:add 参数错误:ID不能为空");
// menuService.create(resources); return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
// return new ResponseEntity<>(HttpStatus.CREATED); }
// } try {
// menuManager.save(resources);
}catch ( Exception exception){
log.error("menu:add 新增菜单["+resources.toString()+"]出错:"+exception);
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
return new ResponseEntity<>(HttpStatus.CREATED);
}
// @Log("修改菜单") // @Log("修改菜单")
// @ApiOperation("修改菜单") @ApiOperation("修改菜单")
// @PutMapping @PutMapping
// @PreAuthorize("@el.check('menu:edit')") @PreAuthorize("@el.check('menu:edit')")
// public ResponseEntity<Object> update(@Validated(Menu.Update.class) @RequestBody Menu resources){ public ResponseEntity<Object> update(@Validated @RequestBody Menu resources){
// menuService.update(resources); // public ResponseEntity<Object> update(@Validated(Menu.Update.class) @RequestBody Menu resources){
// return new ResponseEntity<>(HttpStatus.NO_CONTENT); try {
// } menuManager.save(resources);
// } catch (ValidateException e) {
log.error("menu:add 修改菜单["+resources.toString()+"]出错:"+e);
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
// @Log("删除菜单") // @Log("删除菜单")
// @ApiOperation("删除菜单") @ApiOperation("删除菜单")
// @DeleteMapping @DeleteMapping
// @PreAuthorize("@el.check('menu:del')") @PreAuthorize("@el.check('menu:del')")
// public ResponseEntity<Object> delete(@RequestBody Set<Long> ids){ public ResponseEntity<Object> delete(@RequestBody Set<String> ids){
// Set<Menu> menuSet = new HashSet<>(); Set<Menu> menuSet = new HashSet<>();
// for (Long id : ids) { for (String id : ids) {
// List<MenuDto> menuList = menuService.getMenus(id); List<Menu> menuList = menuManager.getMenusByPid(id);
// menuSet.add(menuService.findOne(id)); menuSet.add(menuManager.get(id));
// menuSet = menuService.getChildMenus(menuMapper.toEntity(menuList), menuSet); menuSet = menuManager.getChildMenus(menuList, menuSet);
// } }
// menuService.delete(menuSet); menuManager.delete(menuSet);
// return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
// } }
} }
...@@ -15,35 +15,35 @@ ...@@ -15,35 +15,35 @@
*/ */
package com.neotel.smfcore.security.rest; package com.neotel.smfcore.security.rest;
import cn.hutool.core.collection.CollectionUtil; import com.neotel.smfcore.common.annotation.QueryCondition;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.PageUtil;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.security.rest.bean.vo.UserPassVo;
import com.neotel.smfcore.security.service.manager.IRoleManager; import com.neotel.smfcore.security.service.manager.IRoleManager;
import com.neotel.smfcore.security.service.manager.IUserManager; import com.neotel.smfcore.security.service.manager.IUserManager;
import com.neotel.smfcore.security.service.po.Role;
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;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors;
/** /**
* @author Zheng Jie * @author Zheng Jie
* @date 2018-11-23 * @date 2018-11-23
*/ */
@Slf4j
@Api(tags = "系统:用户管理") @Api(tags = "系统:用户管理")
@RestController @RestController
@RequestMapping("/api/users") @RequestMapping("/api/users")
...@@ -63,10 +63,11 @@ public class UserController { ...@@ -63,10 +63,11 @@ public class UserController {
// userService.download(userService.queryAll(criteria), response); // userService.download(userService.queryAll(criteria), response);
// } // }
// @ApiOperation("查询用户") @ApiOperation("查询用户")
// @GetMapping @GetMapping
// @PreAuthorize("@el.check('user:list')") @PreAuthorize("@el.check('user:list')")
// public ResponseEntity<Object> query(UserQueryCriteria criteria, Pageable pageable){ // public ResponseEntity<Object> query(UserQueryCriteria criteria, Pageable pageable){
public ResponseEntity<Object> query(QueryCondition criteria, Pageable pageable){
// if (!ObjectUtils.isEmpty(criteria.getDeptId())) { // if (!ObjectUtils.isEmpty(criteria.getDeptId())) {
// criteria.getDeptIds().add(criteria.getDeptId()); // criteria.getDeptIds().add(criteria.getDeptId());
// // 先查找是否存在子节点 // // 先查找是否存在子节点
...@@ -88,73 +89,98 @@ public class UserController { ...@@ -88,73 +89,98 @@ public class UserController {
// criteria.getDeptIds().addAll(dataScopes); // criteria.getDeptIds().addAll(dataScopes);
// return new ResponseEntity<>(userService.queryAll(criteria,pageable), HttpStatus.OK); // return new ResponseEntity<>(userService.queryAll(criteria,pageable), HttpStatus.OK);
// } // }
// return new ResponseEntity<>(PageUtil.toPage(null,0), HttpStatus.OK); return new ResponseEntity<>(PageUtil.toPage(null,0), HttpStatus.OK);
// } }
//
// @ApiOperation("新增用户") @ApiOperation("新增用户")
// @PostMapping @PostMapping
// @PreAuthorize("@el.check('user:add')") @PreAuthorize("@el.check('user:add')")
// public ResponseEntity<Object> create(@Validated @RequestBody User resources){ public ResponseEntity<Object> create(@Validated @RequestBody User resources){
// checkLevel(resources); if(!hasLevel(resources)) {
// // 默认密码 123456 return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
// resources.setPassword(passwordEncoder.encode("123456")); }
// userService.create(resources); // 默认密码 123456
// return new ResponseEntity<>(HttpStatus.CREATED); resources.setPassword(passwordEncoder.encode("123456"));
// } try {
// userManager.save(resources);
// @ApiOperation("修改用户") } catch (ValidateException e) {
// @PutMapping log.error("新增用户 user:add ["+resources.toString()+"]出错:"+e);
// @PreAuthorize("@el.check('user:edit')") return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
return new ResponseEntity<>(HttpStatus.CREATED);
}
@ApiOperation("修改用户")
@PutMapping
@PreAuthorize("@el.check('user:edit')")
// public ResponseEntity<Object> update(@Validated(User.Update.class) @RequestBody User resources) throws Exception { // public ResponseEntity<Object> update(@Validated(User.Update.class) @RequestBody User resources) throws Exception {
// checkLevel(resources); public ResponseEntity<Object> update(@Validated @RequestBody User resources) {
// userManager.update(resources); if(!hasLevel(resources)) {
// return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
// } }
// try {
// @ApiOperation("修改用户:个人中心") userManager.update(resources);
// @PutMapping(value = "center") } catch (Exception e) {
log.error("修改用户 user:edit ["+resources.toString()+"]出错:"+e);
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@ApiOperation("修改用户:个人中心")
@PutMapping(value = "center")
// public ResponseEntity<Object> center(@Validated(User.Update.class) @RequestBody User resources){ // public ResponseEntity<Object> center(@Validated(User.Update.class) @RequestBody User resources){
// if(!resources.getId().equals(SecurityUtils.getCurrentUserId())){ public ResponseEntity<Object> center(@Validated @RequestBody User resources){
if(!resources.getId().equals(SecurityUtils.getCurrentUserId())){
// throw new BadRequestException("不能修改他人资料"); // throw new BadRequestException("不能修改他人资料");
// } log.error("修改用户:个人中心:不能修改他人资料,操作失败");
// userService.updateCenter(resources); return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
// return new ResponseEntity<>(HttpStatus.NO_CONTENT); }
// } userManager.updateCenter(resources);
// return new ResponseEntity<>(HttpStatus.NO_CONTENT);
// }
// @ApiOperation("删除用户")
// @DeleteMapping
// @PreAuthorize("@el.check('user:del')") @ApiOperation("删除用户")
// public ResponseEntity<Object> delete(@RequestBody Set<Long> ids){ @DeleteMapping
// for (Long id : ids) { @PreAuthorize("@el.check('user:del')")
// Integer currentLevel = Collections.min(roleService.findByUsersId(SecurityUtils.getCurrentUserId()).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList())); public ResponseEntity<Object> delete(@RequestBody Set<String> ids){
// Integer optLevel = Collections.min(roleService.findByUsersId(id).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList())); for (String id : ids) {
// if (currentLevel > optLevel) { User user=userManager.get(id);
// throw new BadRequestException("角色权限不足,不能删除:" + userService.findById(id).getUsername()); if(!hasLevel(user)) {
// } return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
// } }
// userService.delete(ids); }
// return new ResponseEntity<>(HttpStatus.OK); try {
// } userManager.deleteUsers(ids);
// } catch (ValidateException e) {
// @ApiOperation("修改密码") log.error("删除用户出错:"+e);
// @PostMapping(value = "/updatePass") return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
// public ResponseEntity<Object> updatePass(@RequestBody UserPassVo passVo) throws Exception { }
// String oldPass = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey,passVo.getOldPass()); return new ResponseEntity<>(HttpStatus.OK);
// String newPass = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey,passVo.getNewPass()); }
// UserDto user = userService.findByName(SecurityUtils.getCurrentUsername());
// if(!passwordEncoder.matches(oldPass, user.getPassword())){ @ApiOperation("修改密码")
@PostMapping(value = "/updatePass")
public ResponseEntity<Object> updatePass(@RequestBody UserPassVo passVo) throws Exception {
User user = userManager.get(SecurityUtils.getCurrentUserId());
if(!passwordEncoder.matches(passVo.getOldPass(), user.getPassword())){
// throw new BadRequestException("修改失败,旧密码错误"); // throw new BadRequestException("修改失败,旧密码错误");
// } log.error("用户["+SecurityUtils.getCurrentUsername()+"]修改密码失败:旧密码错误");
// if(passwordEncoder.matches(newPass, user.getPassword())){ return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
if(passwordEncoder.matches(passVo.getNewPass(), user.getPassword())){
// throw new BadRequestException("新密码不能与旧密码相同"); // throw new BadRequestException("新密码不能与旧密码相同");
// } log.error("用户["+SecurityUtils.getCurrentUsername()+"]修改密码失败:新密码不能与旧密码相同");
// userService.updatePass(user.getUsername(),passwordEncoder.encode(newPass)); return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
// return new ResponseEntity<>(HttpStatus.OK); }
// } userManager.updatePass(user.getUsername(),passwordEncoder.encode(passVo.getNewPass()));
// return new ResponseEntity<>(HttpStatus.OK);
// }
//
// @Log("修改邮箱") // @Log("修改邮箱")
// @ApiOperation("修改邮箱") // @ApiOperation("修改邮箱")
// @PostMapping(value = "/updateEmail/{code}") // @PostMapping(value = "/updateEmail/{code}")
...@@ -168,16 +194,20 @@ public class UserController { ...@@ -168,16 +194,20 @@ public class UserController {
// userService.updateEmail(userDto.getUsername(),user.getEmail()); // userService.updateEmail(userDto.getUsername(),user.getEmail());
// return new ResponseEntity<>(HttpStatus.OK); // return new ResponseEntity<>(HttpStatus.OK);
// } // }
//
// /** /**
// * 如果当前用户的角色级别低于创建用户的角色级别,则抛出权限不足的错误 * 如果当前用户的角色级别低于创建用户的角色级别,则抛出权限不足的错误
// * @param resources / * @param resources /
// */ */
// private void checkLevel(User resources) { private boolean hasLevel(User resources) {
// Integer currentLevel = Collections.min(roleService.findByUsersId(SecurityUtils.getCurrentUserId()).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList())); User curruser = userManager.get(SecurityUtils.getCurrentUserId());
// Integer optLevel = roleService.findByRoles(resources.getRoles()); Role currRole=roleManager.get(curruser.getRoleId());
// if (currentLevel > optLevel) { Role resRole=roleManager.get(resources.getRoleId());
// throw new BadRequestException("角色权限不足");
// } if (resRole.getLevel() > currRole.getLevel()) {
// } log.error("当前用户["+curruser.getUsername()+"]权限低于用户["+resources.getUsername()+"],操作失败");
return false;
}
return true;
}
} }
package com.neotel.smfcore.security.rest.bean.vo;
import lombok.Getter;
import lombok.Setter;
import org.springframework.stereotype.Service;
@Setter
@Getter
public class UserPassVo {
private String oldPass;
private String newPass;
}
package com.neotel.smfcore.security.service.dao;
import com.neotel.smfcore.common.base.IBaseDao;
public interface IGroupDao extends IBaseDao {
}
package com.neotel.smfcore.security.service.dao; package com.neotel.smfcore.security.service.dao;
import com.neotel.smfcore.common.base.IBaseDao; import com.neotel.smfcore.common.base.IBaseDao;
import com.neotel.smfcore.security.service.po.Menu;
import java.util.List;
/** /**
* Created by sunke on 2021/7/8. * Created by sunke on 2021/7/8.
*/ */
public interface IMenuDao extends IBaseDao { public interface IMenuDao extends IBaseDao {
List<Menu> findByPid(String pid);
} }
package com.neotel.smfcore.security.service.dao.impl;
import com.neotel.smfcore.common.base.AbstractBaseDao;
import com.neotel.smfcore.security.service.dao.IGroupDao;
import com.neotel.smfcore.security.service.po.Group;
import org.springframework.stereotype.Service;
@Service
public class GroupDaoImpl extends AbstractBaseDao implements IGroupDao {
@Override
public Class getEntityClass() {
return Group.class;
}
}
...@@ -7,6 +7,8 @@ import com.neotel.smfcore.security.service.po.Menu; ...@@ -7,6 +7,8 @@ import com.neotel.smfcore.security.service.po.Menu;
import com.neotel.smfcore.security.service.po.User; import com.neotel.smfcore.security.service.po.User;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* Created by sunke on 2021/7/7. * Created by sunke on 2021/7/7.
*/ */
...@@ -17,4 +19,8 @@ public class MenuDaoImpl extends AbstractBaseDao implements IMenuDao { ...@@ -17,4 +19,8 @@ public class MenuDaoImpl extends AbstractBaseDao implements IMenuDao {
return Menu.class; return Menu.class;
} }
@Override
public List<Menu> findByPid(String pid) {
return super.findOneByCondition(new String[] {"pid"}, new String[] {pid});
}
} }
package com.neotel.smfcore.security.service.dao.impl; package com.neotel.smfcore.security.service.dao.impl;
import com.neotel.smfcore.common.base.AbstractBaseDao; import com.neotel.smfcore.common.base.AbstractBaseDao;
import com.neotel.smfcore.security.service.OnlineUserService;
import com.neotel.smfcore.security.service.dao.IUserDao; import com.neotel.smfcore.security.service.dao.IUserDao;
import com.neotel.smfcore.security.service.po.User; import com.neotel.smfcore.security.service.po.User;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -14,6 +15,8 @@ import java.util.Set; ...@@ -14,6 +15,8 @@ import java.util.Set;
*/ */
@Service @Service
public class UserDaoImpl extends AbstractBaseDao implements IUserDao { public class UserDaoImpl extends AbstractBaseDao implements IUserDao {
@Override @Override
public Class getEntityClass() { public Class getEntityClass() {
return User.class; return User.class;
...@@ -29,6 +32,8 @@ public class UserDaoImpl extends AbstractBaseDao implements IUserDao { ...@@ -29,6 +32,8 @@ public class UserDaoImpl extends AbstractBaseDao implements IUserDao {
return super.findOneByCondition(new String[] {"email"}, new String[] {email}); return super.findOneByCondition(new String[] {"email"}, new String[] {email});
} }
@Override @Override
public void updatePass(String username, String pass, Date lastPasswordResetTime) { public void updatePass(String username, String pass, Date lastPasswordResetTime) {
......
package com.neotel.smfcore.security.service.manager;
import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.security.service.po.Group;
public interface IGroupManager extends IBaseManager<Group> {
}
...@@ -7,7 +7,10 @@ import com.neotel.smfcore.security.rest.bean.vo.MenuVo; ...@@ -7,7 +7,10 @@ import com.neotel.smfcore.security.rest.bean.vo.MenuVo;
import com.neotel.smfcore.security.service.po.Menu; import com.neotel.smfcore.security.service.po.Menu;
import com.neotel.smfcore.security.service.po.Role; import com.neotel.smfcore.security.service.po.Role;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Set;
public interface IMenuManager extends IBaseManager<Menu> { public interface IMenuManager extends IBaseManager<Menu> {
...@@ -37,4 +40,36 @@ public interface IMenuManager extends IBaseManager<Menu> { ...@@ -37,4 +40,36 @@ public interface IMenuManager extends IBaseManager<Menu> {
*/ */
List<MenuVo> buildMenus(List<MenuDto> menuDtos); List<MenuVo> buildMenus(List<MenuDto> menuDtos);
/**
* 懒加载菜单数据
* @param pid 根据父节点查询菜单,父节点空时查询所有父节点为空的/
* @return /
*/
List<Menu> getMenusByPid(String pid);
/**
* 获取当前菜单的上级菜单或者同级菜单
* @param menuDto
* @param menus
* @return
*/
List<Menu> getSuperior(Menu menuDto, List<Menu> menus);
/**
* 下载菜单数据
* @param menuDtos
* @param response
* @throws IOException
*/
void download(List<Menu> menuDtos, HttpServletResponse response) throws IOException;
Set<Menu> getChildMenus(List<Menu> menuList, Set<Menu> menuSet);
/**
* 删除
* @param menuSet /
*/
void delete(Set<Menu> menuSet);
} }
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package com.neotel.smfcore.security.service.manager; package com.neotel.smfcore.security.service.manager;
import com.neotel.smfcore.common.base.IBaseManager; import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.security.service.po.User; import com.neotel.smfcore.security.service.po.User;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
...@@ -33,6 +34,11 @@ import java.util.Set; ...@@ -33,6 +34,11 @@ import java.util.Set;
public interface IUserManager extends IBaseManager<User> { public interface IUserManager extends IBaseManager<User> {
/** /**
* 其他人编辑用户信息
* @param user
*/
void update(User user);
/**
* 根据用户名查询 * 根据用户名查询
* @param userName / * @param userName /
* @return / * @return /
...@@ -50,4 +56,10 @@ public interface IUserManager extends IBaseManager<User> { ...@@ -50,4 +56,10 @@ public interface IUserManager extends IBaseManager<User> {
* @param resources / * @param resources /
*/ */
void updateCenter(User resources); void updateCenter(User resources);
/**
* 删除用户
* @param ids
*/
void deleteUsers(Set<String> ids) throws ValidateException;
} }
package com.neotel.smfcore.security.service.manager.impl;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.security.service.dao.IGroupDao;
import com.neotel.smfcore.security.service.manager.IGroupManager;
import com.neotel.smfcore.security.service.po.Group;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class GroupManagerImpl implements IGroupManager {
@Autowired
IGroupDao groupDao;
@Override
public Group get(String id) {
return groupDao.findOneById(id);
}
@Override
public Group save(Group object) throws ValidateException {
return groupDao.save(object);
}
@Override
public void delete(Group object) throws ValidateException {
groupDao.removeOne(object);
}
@Override
public List<Group> findByPage(Query query, Pageable pageable) {
return groupDao.findByQuery(query,pageable);
}
@Override
public List<Group> findByQuery(Query query) {
return groupDao.findByQuery(query);
}
}
...@@ -3,12 +3,12 @@ package com.neotel.smfcore.security.service.manager.impl; ...@@ -3,12 +3,12 @@ package com.neotel.smfcore.security.service.manager.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.StringUtils; import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.security.rest.bean.dto.MenuDto; import com.neotel.smfcore.security.rest.bean.dto.MenuDto;
import com.neotel.smfcore.security.rest.bean.vo.MenuMetaVo; import com.neotel.smfcore.security.rest.bean.vo.MenuMetaVo;
import com.neotel.smfcore.security.rest.bean.vo.MenuVo; import com.neotel.smfcore.security.rest.bean.vo.MenuVo;
import com.neotel.smfcore.security.service.dao.IMenuDao; import com.neotel.smfcore.security.service.dao.IMenuDao;
import com.neotel.smfcore.security.service.dao.IRoleDao;
import com.neotel.smfcore.security.service.manager.IMenuManager; import com.neotel.smfcore.security.service.manager.IMenuManager;
import com.neotel.smfcore.security.service.manager.IRoleManager; import com.neotel.smfcore.security.service.manager.IRoleManager;
import com.neotel.smfcore.security.service.manager.IUserManager; import com.neotel.smfcore.security.service.manager.IUserManager;
...@@ -22,6 +22,8 @@ import org.springframework.data.mongodb.core.query.Criteria; ...@@ -22,6 +22,8 @@ import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -65,7 +67,9 @@ public class MenuManagerImpl implements IMenuManager { ...@@ -65,7 +67,9 @@ public class MenuManagerImpl implements IMenuManager {
Role role= roleManager.get(roleId); Role role= roleManager.get(roleId);
if(role!=null){ if(role!=null){
Criteria c = Criteria.where("id").in(role.getMenus()); Criteria c = Criteria.where("id").in(role.getMenus());
c.and("type").ne(2);
Query query = new Query(c); Query query = new Query(c);
query.with(Sort.by(Sort.Direction.ASC, "menuSort"));
List<Menu> menus= findByQuery(query); List<Menu> menus= findByQuery(query);
return buildTree(menus); return buildTree(menus);
} }
...@@ -76,13 +80,7 @@ public class MenuManagerImpl implements IMenuManager { ...@@ -76,13 +80,7 @@ public class MenuManagerImpl implements IMenuManager {
public List<Menu> findByUserId(String currentUserId) { public List<Menu> findByUserId(String currentUserId) {
User user = userManager.get(currentUserId); User user = userManager.get(currentUserId);
if(user!=null){ if(user!=null){
Role role= roleManager.get(user.getRoleId()); return findByRoleId(user.getRoleId());
if(role!=null){
Criteria c = Criteria.where("id").in(role.getMenus());
Query query = new Query(c);
List<Menu> menus= findByQuery(query);
return buildTree(menus);
}
} }
return new ArrayList<Menu>(); return new ArrayList<Menu>();
} }
...@@ -115,7 +113,7 @@ public class MenuManagerImpl implements IMenuManager { ...@@ -115,7 +113,7 @@ public class MenuManagerImpl implements IMenuManager {
public List<MenuVo> buildMenus(List<MenuDto> menuDtos) { public List<MenuVo> buildMenus(List<MenuDto> menuDtos) {
List<MenuVo> list=new LinkedList<>() ; List<MenuVo> list=new LinkedList<>() ;
menuDtos.forEach(menuDto -> { menuDtos.forEach(menuDto -> {
if(menuDto!=null){ if(menuDto!=null && menuDto.getType()<=1){
List<MenuDto> menuDtoList=menuDto.getChildren(); List<MenuDto> menuDtoList=menuDto.getChildren();
MenuVo menuVo=new MenuVo(); MenuVo menuVo=new MenuVo();
menuVo.setName(ObjectUtil.isNotEmpty(menuDto.getComponentName())?menuDto.getComponentName():menuDto.getTitle()); menuVo.setName(ObjectUtil.isNotEmpty(menuDto.getComponentName())?menuDto.getComponentName():menuDto.getTitle());
...@@ -162,5 +160,76 @@ public class MenuManagerImpl implements IMenuManager { ...@@ -162,5 +160,76 @@ public class MenuManagerImpl implements IMenuManager {
return list; return list;
} }
@Override
public List<Menu> getMenusByPid(String pid) {
List<Menu> menus;
if(pid != null && !pid.equals("")){
menus = menuDao.findByPid(pid);
} else {
menus = menuDao.findByPid("");
}
return menus;
}
@Override
public List<Menu> getSuperior(Menu menu, List<Menu> menus) {
if(menu!=null&& menu.getPid().equals("")){
menus.addAll(menuDao.findByPid(menu.getPid()));
return menus;
}
menus.addAll(menuDao.findByPid(menu.getPid()));
return getSuperior(get(menu.getPid()), menus);
}
@Override
public void download(List<Menu> menuDtos, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>();
for (Menu menu : menuDtos) {
Map<String,Object> map = new LinkedHashMap<>();
map.put("菜单标题", menu.getTitle());
map.put("菜单类型", menu.getType() == null ? "目录" : menu.getType() == 1 ? "菜单" : "按钮");
map.put("权限标识", menu.getPermission());
map.put("外链菜单", menu.getIFrame() ? "是" : "否");
map.put("菜单可见", menu.getHidden() ? "否" : "是");
map.put("是否缓存", menu.getCache() ? "是" : "否");
list.add(map);
}
FileUtil.downloadExcel(list, response);
}
@Override
public Set<Menu> getChildMenus(List<Menu> menuList, Set<Menu> menuSet) {
for (Menu menu : menuList) {
menuSet.add(menu);
List<Menu> menus = menuDao.findByPid(menu.getId());
if(menus!=null && menus.size()!=0){
getChildMenus(menus, menuSet);
}
}
return menuSet;
}
@Override
public void delete(Set<Menu> menuSet) {
for (Menu menu : menuSet) {
// 清理缓存
// delCaches(menu.getId());
// roleService.untiedMenu(menu.getId());
// menuDao.removeOneById(menu.getId());
// updateSubCnt(menu.getPid());
}
}
// /**
// * 清理缓存
// * @param id 菜单ID
// */
// public void delCaches(Long id){
// List<User> users = userManager.findByMenuId(id);
// redisUtils.del(CacheKey.MENU_ID + id);
// redisUtils.delByKeys(CacheKey.MENU_USER, users.stream().map(User::getId).collect(Collectors.toSet()));
// // 清除 Role 缓存
// List<Role> roles = roleService.findInMenuId(new ArrayList<Long>(){{
// add(id);
// }});
// redisUtils.delByKeys(CacheKey.ROLE_ID, roles.stream().map(Role::getId).collect(Collectors.toSet()));
// }
} }
...@@ -12,7 +12,10 @@ import org.springframework.data.mongodb.core.query.Criteria; ...@@ -12,7 +12,10 @@ import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update; import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* Created by kangmor on 2015/12/1. * Created by kangmor on 2015/12/1.
...@@ -36,10 +39,41 @@ public class UserManagerImpl implements IUserManager { ...@@ -36,10 +39,41 @@ public class UserManagerImpl implements IUserManager {
Update update = Update.update("password","password"); Update update = Update.update("password","password");
userDao.updateFirst(query,update); userDao.updateFirst(query,update);
} }
@Override
public void update(User user) {
User dataUser=this.get(user.getId());
if(dataUser!=null){
// 如果用户被禁用,则清除用户登录信息
if(!user.getEnabled()){
}
dataUser.setUsername(user.getUsername());
dataUser.setEmail(user.getEmail());
dataUser.setEnabled(user.getEnabled());
dataUser.setIsAdmin(user.getIsAdmin());;
dataUser.setRoleId(user.getRoleId());
dataUser.setGroups(user.getGroups());
userDao.save(dataUser);
}
}
@Override @Override
public void updateCenter(User resources) { public void updateCenter(User resources) {
userDao.save(resources); User dataUser=this.get(resources.getId());
if(dataUser!=null){
dataUser.setEmail(resources.getEmail());
}
userDao.save(dataUser);
}
@Override
public void deleteUsers(Set<String> ids) throws ValidateException{
for (String id:ids
) {
User user=get(id);
if(user!=null){
this.delete(user);
}
}
} }
@Override @Override
......
package com.neotel.smfcore.security.service.po;
import com.neotel.smfcore.common.base.BasePo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Group extends BasePo implements Serializable {
private String groupName;
}
...@@ -20,6 +20,7 @@ import lombok.*; ...@@ -20,6 +20,7 @@ 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.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -102,4 +103,56 @@ public class Menu extends BasePo implements Serializable { ...@@ -102,4 +103,56 @@ public class Menu extends BasePo implements Serializable {
} }
public String getPermission(){return permission;} public String getPermission(){return permission;}
/**
* 此方法用于构建一级菜单,type=1
* @param children
* @param type
* @param permission
* @param title
* @param menuSort
* @param path
* @param component
* @param pid
* @param subCount
* @param icon
*/
public Menu(final List<Menu> children,final Integer type, final String permission, final String title, final Integer menuSort, final String path, final String component, final String pid, final Integer subCount, final String icon) {
this.children = children;
this.permission = permission;
this.type=type;
this.title = title;
this.menuSort = menuSort;
this.path = path;
this.component = component;
this.pid = pid;
this.subCount = subCount;
this.iFrame = false;
this.cache = false;
this.hidden = false;
this.componentName = title;
this.icon = icon;
}/**
* 此方法用于构建权限菜单,type=2
* @param permission
* @param title
* @param menuSort
* @param pid
*/
public Menu( final String permission, final String title, final Integer menuSort, final String pid ) {
this.children = new ArrayList<Menu>();
this.type = 2;
this.permission = permission;
this.title = title;
this.menuSort = menuSort;
this.path = "";
this.component = "";
this.pid = pid;
this.subCount = 0;
this.iFrame = false;
this.cache = false;
this.hidden = false;
this.componentName = title;
this.icon = "";
}
} }
...@@ -22,6 +22,7 @@ import org.springframework.data.mongodb.core.mapping.Document; ...@@ -22,6 +22,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.Set;
/** /**
* @author Zheng Jie * @author Zheng Jie
...@@ -50,4 +51,6 @@ public class User extends BasePo implements Serializable { ...@@ -50,4 +51,6 @@ public class User extends BasePo implements Serializable {
private Date pwdResetTime; private Date pwdResetTime;
private Set<String> groups;
} }
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!