Commit 45f47bde LN

用户和角色功能修改

1 个父辈 78ab7c2b
......@@ -107,7 +107,7 @@ public class DataInitManager {
role= roleManager.save(role);
log.info("创建默认角色:" + role.toString());
admin = new User( userName, "","",role.getId(), "$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa", true, true, new Date(), groupIds );
admin = new User( userName, "admin@qq.com","zh",role.getId(), "$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa", true, true, new Date(), groupIds );
userManager.save(admin);
log.info("创建默认用户:" + admin.toString());
......
package com.neotel.smfcore.security.rest;
import com.neotel.smfcore.common.exception.BadRequestException;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.PageUtil;
import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.core.storage.service.manager.IStorageManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.security.rest.bean.dto.MenuDto;
import com.neotel.smfcore.security.rest.bean.mapstruct.GroupMapper;
import com.neotel.smfcore.security.rest.bean.query.GroupQueryCriteria;
import com.neotel.smfcore.security.rest.bean.query.MenuQueryCondition;
import com.neotel.smfcore.security.service.manager.IGroupManager;
import com.neotel.smfcore.security.service.manager.IMenuManager;
import com.neotel.smfcore.security.service.manager.IUserManager;
import com.neotel.smfcore.security.service.po.Group;
import com.neotel.smfcore.security.service.po.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
......@@ -17,6 +22,7 @@ import lombok.extern.java.Log;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.http.HttpStatus;
......@@ -42,64 +48,81 @@ public class GroupController {
IGroupManager groupManager;
@Autowired
GroupMapper groupMapper;
@Autowired
IStorageManager storageManager;
@Autowired
IUserManager userManager;
@ApiOperation("导出分组数据")
@GetMapping(value = "/download")
@PreAuthorize("@el.check('menu:list')")
public void download(HttpServletResponse response, GroupQueryCriteria criteria) throws Exception {
Query query= QueryHelp.getQuery(criteria);
Query query = QueryHelp.getQuery(criteria);
groupManager.download(groupManager.findByQuery(query), response);
}
@GetMapping
@ApiOperation("查询组列表")
// @PreAuthorize("@el.check('groups:list')")
public ResponseEntity<Object> query(GroupQueryCriteria criteria, Pageable pageable) throws Exception {
Query query = QueryHelp.getQuery(criteria);
List<Group> groups = groupManager.findByPage(query,pageable);
Map<String,Object> data=PageUtil.toPage(groupMapper.toDto(groups),groups.size());
List<Group> groups = groupManager.findByPage(query, pageable);
Map<String, Object> data = PageUtil.toPage(groupMapper.toDto(groups), groups.size());
return new ResponseEntity<>(data, HttpStatus.OK);
}
@ApiOperation("返回全部的分组")
@GetMapping(value = "/all")
@PreAuthorize("@el.check('group:list','user:add','user:edit')")
public ResponseEntity<Object> query() {
Query query = new Query();
List<Group> groups = groupManager.findByQuery(query);
return new ResponseEntity<>(groupMapper.toDto(groups), HttpStatus.OK);
}
@ApiOperation("新增分组")
@PostMapping
@PreAuthorize("@el.check('group:add')")
public ResponseEntity<Object> create(@RequestBody Group resources){
if (resources.getGroupName() != null) {
// throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID");
log.info("新增分组: 组名称为空");
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
try {
groupManager.saveGroup(resources);
} catch (ValidateException e) {
log.error("新增分组["+resources.getGroupName()+"]出错:"+e);
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
public ResponseEntity<Object> create(@RequestBody Group resources) {
groupManager.saveGroup(resources);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@ApiOperation("修改分组")
@PutMapping
@PreAuthorize("@el.check('group:edit')")
public ResponseEntity<Object> update(@RequestBody Group resources){
try {
groupManager.save(resources);
} catch (ValidateException e) {
log.error("修改分组["+resources.getGroupName()+"]出错:"+e);
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
public ResponseEntity<Object> update(@RequestBody Group resources) {
if (resources.getId() == null) {
throw new BadRequestException("新增分组: 组ID不能为空");
}
groupManager.saveGroup(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@ApiOperation("删除分组")
@DeleteMapping
@PreAuthorize("@el.check('group:del')")
public ResponseEntity<Object> delete(@RequestBody Set<String> ids){
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
Set<Group> menuSet = new HashSet<>();
for (String id : ids) {
if (id == null) {
throw new BadRequestException("删除: 组ID不能为空");
}
Group group = groupManager.get(id);
//查找组下是否有设备
Query query = new Query(Criteria.where("groupId").is(id));
List<Storage> storages = storageManager.findByQuery(query);
if (storages != null && storages.size() >= 1) {
throw new BadRequestException("删除失败,组[" + group.getGroupName() + "]已和设备关联");
}
Query userQuery = new Query(Criteria.where("groups").all(id));
List<User> users = userManager.findByQuery(userQuery);
if (users != null && users.size() >= 1) {
throw new BadRequestException("删除失败,组[" + group.getGroupName() + "]已和用户关联");
}
groupManager.delete(group);
}
return new ResponseEntity<>(HttpStatus.OK);
}
......
......@@ -19,6 +19,7 @@ import cn.hutool.core.collection.CollectionUtil;
import com.neotel.smfcore.common.annotation.QueryCondition;
import com.neotel.smfcore.common.exception.BadRequestException;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.PageUtil;
import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.common.utils.SecurityUtils;
......@@ -96,7 +97,9 @@ public class MenuController {
@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);
List<Menu> menus=menuManager.getMenusByPid(pid);
List<MenuDto> dtos=menuMapper.toDto(menus);
return new ResponseEntity<>(dtos, HttpStatus.OK);
}
@ApiOperation("根据菜单ID返回所有子节点ID,包含自身ID")
......@@ -162,6 +165,9 @@ public class MenuController {
@DeleteMapping
@PreAuthorize("@el.check('menu:del')")
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
if(!SecurityUtils.getCurrentUsername().equals(Constants.SUPER_USERNAME)){
throw new BadRequestException("没有删除菜单的权限");
}
Set<Menu> menuSet = new HashSet<>();
for (String id : ids) {
List<Menu> menuList = menuManager.getMenusByPid(id);
......
......@@ -102,7 +102,7 @@ public class RoleController {
throw new BadRequestException("修改角色:ID不能为空");
}
roleManager.saveRole(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
return new ResponseEntity<>(HttpStatus.OK);
}
@ApiOperation("修改角色菜单")
......@@ -114,13 +114,14 @@ public class RoleController {
}
Role role = roleManager.get(resources.getId());
roleManager.updateMenu(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
return new ResponseEntity<>(HttpStatus.OK);
}
@ApiOperation("删除角色")
@DeleteMapping
@PreAuthorize("@el.check('roles:del')")
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
List<Role> roles = new ArrayList<Role>();
for (String id : ids) {
if (id == null) {
......
......@@ -45,9 +45,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
/**
* @author Zheng Jie
......@@ -92,8 +90,24 @@ public class UserController {
@PostMapping
@PreAuthorize("@el.check('user:add')")
public ResponseEntity<Object> create(@Validated @RequestBody User resources) {
if (resources.getId() != null) {
throw new BadRequestException("新增用户:ID已存在");
}
if(resources.getUsername()==null){
throw new BadRequestException("新增用户:用户名不能为空");
}
if(resources.getRoleId()==null){
throw new BadRequestException("新增用户:角色ID不能为空");
}
if(resources.getEnabled()==null){
resources.setEnabled(true);
}
if(resources.getGroups()==null){
resources.setGroups(new HashSet<String>());
}
resources.setPassword(passwordEncoder.encode("123456"));
resources.setUpdateDate(new Date());
resources.setPwdResetTime(new Date());
userManager.save(resources);
return new ResponseEntity<>(HttpStatus.CREATED);
}
......@@ -106,6 +120,12 @@ public class UserController {
if (resources.getId() == null) {
throw new BadRequestException("修改用户:ID不能为空");
}
if(resources.getUsername()==null){
throw new BadRequestException("修改用户:用户名不能为空");
}
if(resources.getRoleId()==null){
throw new BadRequestException("修改用户:角色ID不能为空");
}
if (resources.getUsername().equals(Constants.SUPER_USERNAME)) {
if (!resources.getId().equals(SecurityUtils.getCurrentUserId())) {
throw new BadRequestException("无权限修改此用户信息");
......@@ -141,7 +161,7 @@ public class UserController {
User user = userManager.get(id);
//admin的用户不让删除
if (user.getUsername().equals(Constants.SUPER_USERNAME)) {
if ( user.getUsername().equals(Constants.SUPER_USERNAME)) {
throw new BadRequestException("删除用户:此用户不能删除");
}
}
......@@ -177,4 +197,16 @@ public class UserController {
userManager.updateEmail(myUser.getUsername(), myUser.getEmail());
return new ResponseEntity<>(HttpStatus.OK);
}
@ApiOperation("修改用户组")
@PutMapping(value = "/updateGroup")
@PreAuthorize("@el.check('user:edit')")
public ResponseEntity<Object> updateGroup(@RequestBody User resources) {
if (resources.getId() == null) {
throw new BadRequestException("修改用户组:ID不能为空");
}
User user = userManager.get(resources.getId());
userManager.updateGroups(resources);
return new ResponseEntity<>(HttpStatus.OK);
}
}
......@@ -10,4 +10,8 @@ public class GroupDto implements Serializable
{
private String id;
private String groupName;
public String getLabel() {
return groupName;
}
}
......@@ -79,6 +79,9 @@ public class UserDetailsServiceImpl implements UserDetailsService {
if (user == null) {
throw new UsernameNotFoundException("");
} else {
if(user.getEnabled()==null){
throw new BadRequestException("账号未激活");
}
if (!user.getEnabled()) {
throw new BadRequestException("账号未激活!");
}
......
......@@ -68,4 +68,6 @@ public interface IUserManager extends IBaseManager<User> {
void updateEmail(String username, String email);
List<UserDto> listToDto(List<User> users);
void updateGroups(User resources);
}
package com.neotel.smfcore.security.service.manager.impl;
import com.neotel.smfcore.common.exception.BadRequestException;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.security.service.dao.IGroupDao;
......@@ -38,6 +39,9 @@ public class GroupManagerImpl implements IGroupManager {
c.and("id").ne(resources.getId());
logName="修改分组:";
}
if (resources.getGroupName() == null) {
throw new BadRequestException(logName+"组名称不能为空");
}
Query que = new Query(c);
List<Group> groups = findByQuery(que);
if (groups != null && groups.size() > 0) {
......
......@@ -2,6 +2,7 @@ package com.neotel.smfcore.security.service.manager.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.exception.BadRequestException;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.StringUtils;
......@@ -163,7 +164,7 @@ public class MenuManagerImpl implements IMenuManager {
@Override
public List<Menu> getMenusByPid(String pid) {
List<Menu> menus;
if(pid != null && !pid.equals("")){
if(pid != null && !pid.equals("")&&!pid.equals("0")){
menus = menuDao.findByPid(pid);
} else {
menus = menuDao.findByPid("");
......@@ -222,6 +223,13 @@ public class MenuManagerImpl implements IMenuManager {
@Override
public Menu saveMenu(Menu menu) throws ValidateException {
String logName="新增菜单:";
if(menu.getId()!=null){
logName="修改菜单:";
}
if(menu.getTitle()==null){
throw new BadRequestException(logName+ "标题不能为空");
}
if(menu.getChildren()==null){
menu.setChildren(new ArrayList<Menu>());
}
......
package com.neotel.smfcore.security.service.manager.impl;
import com.neotel.smfcore.common.exception.BadRequestException;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.security.service.dao.IRoleDao;
import com.neotel.smfcore.security.service.dao.IUserDao;
import com.neotel.smfcore.security.service.manager.IRoleManager;
......@@ -73,15 +76,13 @@ public class RoleManagerImpl implements IRoleManager {
@Override
public Role saveRole(Role role) throws ValidateException {
// if (role.getLevel() == null) {
// role.setLevel(99);
// }
if(role.getName()==null){
throw new BadRequestException("角色名称不能为空");
}
if (role.getMenus() == null) {
role.setMenus(new HashSet<String>());
}
// if (role.getDataScope() == null) {
// role.setDataScope("全部");
// }
if (role.getDescription() == null) {
role.setDescription("");
}
......@@ -101,12 +102,18 @@ public class RoleManagerImpl implements IRoleManager {
}
@Override
public void updateMenu(Role resources) throws ValidateException {
this.save(resources);
// List<User> users = userRepository.findByRoleId(role.getId());
// // 更新菜单
// role.setMenus(resources.getMenus());
// delCaches(resources.getId(), users);
// roleRepository.save(role);
Role role=this.get(resources.getId());
if(role==null){
throw new BadRequestException("请要修改的选择角色");
}
if(role.getName().equals("admin")){
if(!SecurityUtils.getCurrentUsername().equals(Constants.SUPER_USERNAME)){
throw new BadRequestException("只有超级管理员才能修改此角色的菜单");
}
}
role.setMenus(resources.getMenus());
this.save(role);
}
@Override
......
package com.neotel.smfcore.security.service.manager.impl;
import com.google.common.base.Strings;
import com.neotel.smfcore.common.exception.BadRequestException;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.FileUtil;
......@@ -56,8 +57,14 @@ public class UserManagerImpl implements IUserManager {
User dataUser=this.get(user.getId());
if(dataUser!=null){
// 如果用户被禁用,则清除用户登录信息
if(!user.getEnabled()){
if(user.getEnabled()==null){
user.setEnabled(true);
}
if(user.getGroups()==null){
user.setGroups(new HashSet<String>());
}
if(user.getUpdateDate()==null){
user.setUpdateDate(new Date());
}
//用户名admin不能修改
if(!dataUser.equals(Constants.SUPER_USERNAME)){
......@@ -170,4 +177,15 @@ public class UserManagerImpl implements IUserManager {
return dtos;
}
@Override
public void updateGroups(User resources) {
if(resources.getGroups()==null){
resources.setGroups(new HashSet<String>());
}
Criteria c = Criteria.where("id").is(resources.getId());
Query query = Query.query(c);
Update update = Update.update("groups",resources.getGroups());
userDao.updateFirst(query,update);
}
}
......@@ -12,4 +12,8 @@ import java.io.Serializable;
public class Group extends BasePo implements Serializable {
private String groupName;
public String getLabel() {
return groupName;
}
}
......@@ -37,11 +37,4 @@ public class Role extends BasePo implements Serializable {
private String name;
private String description;
// private Set<Dept> depts;
// private String dataScope;
// private Integer level;
}
......@@ -47,7 +47,7 @@ public class User extends BasePo implements Serializable {
@JSONField(serialize = false)
private String password;
private Boolean enabled;
private Boolean enabled=false;
@JSONField(serialize = false)
private Boolean isAdmin = false;
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!