Commit d4daeb38 authored by sml's avatar sml

登录认证及权限

parent 8aead7d8
......@@ -11,7 +11,11 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import com.jz.dmp.modules.model.DmpMember;
import com.jz.dmp.modules.model.DmpPermission;
import com.jz.dmp.modules.model.DmpRole;
import com.jz.dmp.modules.service.sys.DmpMemberService;
import com.jz.dmp.modules.service.sys.DmpPermissionService;
import com.jz.dmp.modules.service.sys.DmpRoleService;
@Service
public class CustomUserService implements UserDetailsService {
......@@ -20,7 +24,13 @@ public class CustomUserService implements UserDetailsService {
//DmpMemberprojectrole projectMemberRoleDao;
@Autowired
DmpMemberService dmpMemberService;
@Autowired
DmpRoleService dmpRoleService;
@Autowired
DmpPermissionService dmpPermissionService;
@Override
public UserDetails loadUserByUsername(String userName) {
DmpMember user = null;
......@@ -30,6 +40,21 @@ public class CustomUserService implements UserDetailsService {
e.printStackTrace();
}
if (user != null) {
//设置登录用户默认项目
Integer defaultProjectId = dmpMemberService.getDefProjectByUserName(user.getUsername());
user.setCurrentProjectId(defaultProjectId);
//设置UserRole
List<DmpRole> memberRoles = dmpRoleService.findMemberRolesByUserId(user.getUserId());
user.setMemberRoleList(memberRoles);
//设置当前默认项目用户所拥有的角色
List<DmpRole> memberProjectRoles = dmpRoleService.findMemberProjRolesByUser(user);
user.setMemberProjectRoleList(memberProjectRoles);
//设置用户的资源
List<DmpPermission> memberPermissions = dmpPermissionService.findPermissionByRoles(memberRoles);
user.setMemberPermissionList(memberPermissions);
//设置用户在当前默认项目的资源
List<DmpPermission> memberProjPermissions = dmpPermissionService.findPermissionByRoles(memberProjectRoles);
user.setMemberProjectPermissionList(memberProjPermissions);
List<GrantedAuthority> grantedAuthorities = new ArrayList<>();
//List<DmpPermission> permissions = permissionDao.getDmpDefaultPermission();
......
......@@ -3,8 +3,11 @@ package com.jz.dmp.modules.dao.sys;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
import com.jz.dmp.modules.controller.sys.bean.DmpPermissionDto;
import com.jz.dmp.modules.model.DmpPermission;
import com.jz.dmp.modules.model.DmpRole;
/**资源表 mapper
* @author ybz
......@@ -73,5 +76,16 @@ public interface DmpPermissionMapper {
* @throws Exception
*/
public void insertBatch(List<DmpPermission> dmpPermissions)throws Exception;
/**
* @Title: findByRoles
* @Description: TODO(根据角色获取资源)
* @param @param dmpRoles
* @param @return
* @param @throws Exception 参数
* @return List<DmpPermission> 返回类型
* @throws
*/
public List<DmpPermission> findByRoles(@Param("dmpRoles")List<DmpRole> dmpRoles)throws Exception;
}
......@@ -3,6 +3,8 @@ package com.jz.dmp.modules.dao.sys;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
import com.jz.dmp.modules.controller.sys.bean.DmpRoleDto;
import com.jz.dmp.modules.model.DmpRole;
......@@ -73,5 +75,28 @@ public interface DmpRoleMapper {
* @throws Exception
*/
public void insertBatch(List<DmpRole> dmpRoles)throws Exception;
/**
* @Title: findMemberRolesByUserId
* @Description: TODO(获取用户的用户角色)
* @param @param userId
* @param @return
* @param @throws Exception 参数
* @return List<DmpRole> 返回类型
* @throws
*/
public List<DmpRole> findMemberRolesByUserId(@Param("userId")Integer userId)throws Exception;
/**
* @Title: findMemberProjRoles
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param @param userId
* @param @param projectId
* @param @return
* @param @throws Exception 参数
* @return List<DmpRole> 返回类型
* @throws
*/
public List<DmpRole> findMemberProjRoles(@Param("userId")Integer userId, @Param("projectId")Integer projectId)throws Exception;
}
......@@ -106,6 +106,22 @@ public class DmpMember implements UserDetails{
@ApiModelProperty(value = "修改时间")
private Date updateTime;
@ApiModelProperty(value = "用户当前所在工作空间(项目)")
private Integer currentProjectId;
@ApiModelProperty(value = "用户角色")
private List<DmpRole> memberRoleList;
@ApiModelProperty(value = "用户当前项目角色")
private List<DmpRole> memberProjectRoleList;
@ApiModelProperty(value = "用户资源")
private List<DmpPermission> memberPermissionList;
@ApiModelProperty(value = "用户当前项目资源")
private List<DmpPermission> memberProjectPermissionList;
@ApiModelProperty(value = "权限")
private List<? extends GrantedAuthority> authorities;
public Integer getUserId() {
......@@ -228,6 +244,46 @@ public class DmpMember implements UserDetails{
this.updateTime = updateTime;
}
public Integer getCurrentProjectId() {
return currentProjectId;
}
public void setCurrentProjectId(Integer currentProjectId) {
this.currentProjectId = currentProjectId;
}
public List<DmpRole> getMemberRoleList() {
return memberRoleList;
}
public void setMemberRoleList(List<DmpRole> memberRoleList) {
this.memberRoleList = memberRoleList;
}
public List<DmpRole> getMemberProjectRoleList() {
return memberProjectRoleList;
}
public void setMemberProjectRoleList(List<DmpRole> memberProjectRoleList) {
this.memberProjectRoleList = memberProjectRoleList;
}
public List<DmpPermission> getMemberPermissionList() {
return memberPermissionList;
}
public void setMemberPermissionList(List<DmpPermission> memberPermissionList) {
this.memberPermissionList = memberPermissionList;
}
public List<DmpPermission> getMemberProjectPermissionList() {
return memberProjectPermissionList;
}
public void setMemberProjectPermissionList(List<DmpPermission> memberProjectPermissionList) {
this.memberProjectPermissionList = memberProjectPermissionList;
}
public void setAuthorities(List<? extends GrantedAuthority> authorities) {
this.authorities = authorities;
}
......
......@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.util.List;
/**资源表
* @author ybz
......@@ -94,6 +95,9 @@ public class DmpPermission {
*/
@ApiModelProperty(value = "修改时间")
private Date updateTime;
@ApiModelProperty(value = "所有孩子节点")
private List<DmpPermission> children;
public Integer getPermissionId() {
return permissionId;
......@@ -206,4 +210,13 @@ public class DmpPermission {
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public List<DmpPermission> getChildren() {
return children;
}
public void setChildren(List<DmpPermission> children) {
this.children = children;
}
}
......@@ -78,4 +78,15 @@ public interface DmpMemberService {
*/
public DmpMember findByUserName(String userName)throws Exception;
/**
* @Title: getDefProjectByUserName
* @Description: TODO(获取用户默认的项目)
* @param @param username
* @param @return 参数
* @return Integer 返回类型
* @throws
*/
public Integer getDefProjectByUserName(String username);
}
package com.jz.dmp.modules.service.sys;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.jz.common.bean.BaseBeanResponse;
......@@ -9,6 +11,7 @@ import com.jz.dmp.modules.controller.sys.bean.DmpPermissionBatch;
import com.jz.dmp.modules.controller.sys.bean.DmpPermissionDto;
import com.jz.dmp.modules.controller.sys.bean.DmpPermissionRequest;
import com.jz.dmp.modules.model.DmpPermission;
import com.jz.dmp.modules.model.DmpRole;
/**
* 资源表服务接口
......@@ -66,4 +69,15 @@ public interface DmpPermissionService {
*/
public BaseBeanResponse<DmpPermissionBatch> addBatch(DmpPermissionBatch dmpPermissionBatch, HttpServletRequest httpRequest)throws Exception;
/**
* @Title: findPermissionByRoles
* @Description: TODO(根据角色获取所有资源)
* @param @param dmpRoles
* @param @return 参数
* @return List<DmpPermission> 返回类型
* @throws
*/
public List<DmpPermission> findPermissionByRoles(List<DmpRole> dmpRoles);
}
package com.jz.dmp.modules.service.sys;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.jz.common.bean.BaseBeanResponse;
......@@ -8,6 +10,7 @@ import com.jz.common.bean.PageInfoResponse;
import com.jz.dmp.modules.controller.sys.bean.DmpRoleBatch;
import com.jz.dmp.modules.controller.sys.bean.DmpRoleDto;
import com.jz.dmp.modules.controller.sys.bean.DmpRoleRequest;
import com.jz.dmp.modules.model.DmpMember;
import com.jz.dmp.modules.model.DmpRole;
/**
......@@ -66,4 +69,26 @@ public interface DmpRoleService {
*/
public BaseBeanResponse<DmpRoleBatch> addBatch(DmpRoleBatch dmpRoleBatch, HttpServletRequest httpRequest)throws Exception;
/**
* @Title: findMemberRolesByUserId
* @Description: TODO(根据用户主键获取用户角色)
* @param @param userId
* @param @return 参数
* @return List<DmpRole> 返回类型
* @throws
*/
public List<DmpRole> findMemberRolesByUserId(Integer userId);
/**
* @Title: findMemberProjRolesByUser
* @Description: TODO(获取用户默认项目的项目角色)
* @param @param userName
* @param @return 参数
* @return List<DmpRole> 返回类型
* @throws
*/
public List<DmpRole> findMemberProjRolesByUser(DmpMember user);
}
......@@ -27,8 +27,10 @@ import com.jz.common.persistence.BaseService;
import com.jz.dmp.modules.controller.sys.bean.DmpMemberBatch;
import com.jz.dmp.modules.controller.sys.bean.DmpMemberDto;
import com.jz.dmp.modules.controller.sys.bean.DmpMemberRequest;
import com.jz.dmp.modules.dao.DmpProjectDao;
import com.jz.dmp.modules.dao.sys.DmpMemberMapper;
import com.jz.dmp.modules.model.DmpMember;
import com.jz.dmp.modules.model.DmpProject;
import com.jz.dmp.modules.service.sys.DmpMemberService;
/**
......@@ -43,6 +45,9 @@ public class DmpMemberServiceImpl extends BaseService implements DmpMemberServic
@Autowired
private DmpMemberMapper dmpMemberMapper;
@Autowired
private DmpProjectDao dmpProjectDao;
/* (non-Javadoc)
* @see com.ycxc.vmts.service.DmpMemberService#findList(com.ycxc.vmts.controller.bean.DmpMemberRequest, javax.servlet.http.HttpServletRequest)
......@@ -265,5 +270,21 @@ public class DmpMemberServiceImpl extends BaseService implements DmpMemberServic
DmpMember dmpMember = dmpMemberMapper.findByUserName(userName);
return dmpMember;
}
/**
*根据用户获取默认项目ID
*/
@Override
public Integer getDefProjectByUserName(String username) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("ownerId", username);
List<DmpProject> projects = dmpProjectDao.getExampleQuery(params);
if (CollectionUtils.isEmpty(projects)) {
logger.info("该用户没有项目");
return null;
}
return projects.get(0).getId();
}
}
package com.jz.dmp.modules.service.sys.impl;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
......@@ -29,6 +31,7 @@ import com.jz.dmp.modules.controller.sys.bean.DmpPermissionDto;
import com.jz.dmp.modules.controller.sys.bean.DmpPermissionRequest;
import com.jz.dmp.modules.dao.sys.DmpPermissionMapper;
import com.jz.dmp.modules.model.DmpPermission;
import com.jz.dmp.modules.model.DmpRole;
import com.jz.dmp.modules.service.sys.DmpPermissionService;
/**
......@@ -247,5 +250,72 @@ public class DmpPermissionServiceImpl extends BaseService implements DmpPermissi
return baseBeanResponse;
}
/**
*根据角色获取所有的资源
*/
@Override
public List<DmpPermission> findPermissionByRoles(List<DmpRole> dmpRoles) {
List<DmpPermission> permissions = new ArrayList<DmpPermission>();
try {
List<DmpPermission> dmpPermissions = dmpPermissionMapper.findByRoles(dmpRoles);
//整理资源为树形结构
permissions = permissionArrangeTree(dmpPermissions);
} catch (Exception e) {
logger.info("根据角色查询资源异常:{}", e);
}
return permissions;
}
/**
* @Title: permissionArrangeTree
* @Description: TODO(将所有的资源整理成树形结构)
* @param @param dmpPermissions
* @param @return
* @param @throws Exception 参数
* @return List<DmpPermission> 返回类型
* @throws
*/
private List<DmpPermission> permissionArrangeTree(List<DmpPermission> dmpPermissions)throws Exception{
Map<String, List<DmpPermission>> dictMap = dmpPermissions.stream().collect(Collectors.groupingBy(DmpPermission::getParentCode));
List<DmpPermission> permissionTree = dictMap.get("0");//获取顶层资源
if (!CollectionUtils.isEmpty(permissionTree)) {
for (DmpPermission dmpPermission : permissionTree) {
dmpPermission = arrangeChildren(dmpPermission, dictMap);
}
}
return permissionTree;
}
/**
* @Title: arrangeChildren
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param @param permission
* @param @param dictMap
* @param @return
* @param @throws Exception 参数
* @return DmpPermission 返回类型
* @throws
*/
private DmpPermission arrangeChildren(DmpPermission permission, Map<String, List<DmpPermission>> dictMap)throws Exception{
String permissionCode = permission.getPermissionCode();
List<DmpPermission> children = dictMap.get(permissionCode);
if (!CollectionUtils.isEmpty(children)) {
for (DmpPermission dmpPermission : children) {
dmpPermission = arrangeChildren(dmpPermission, dictMap);
}
permission.setChildren(children);
}
return permission;
}
}
package com.jz.dmp.modules.service.sys.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
......@@ -27,7 +28,10 @@ import com.jz.common.persistence.BaseService;
import com.jz.dmp.modules.controller.sys.bean.DmpRoleBatch;
import com.jz.dmp.modules.controller.sys.bean.DmpRoleDto;
import com.jz.dmp.modules.controller.sys.bean.DmpRoleRequest;
import com.jz.dmp.modules.dao.DmpProjectDao;
import com.jz.dmp.modules.dao.sys.DmpRoleMapper;
import com.jz.dmp.modules.model.DmpMember;
import com.jz.dmp.modules.model.DmpProject;
import com.jz.dmp.modules.model.DmpRole;
import com.jz.dmp.modules.service.sys.DmpRoleService;
......@@ -43,6 +47,8 @@ public class DmpRoleServiceImpl extends BaseService implements DmpRoleService {
@Autowired
private DmpRoleMapper dmpRoleMapper;
@Autowired
private DmpProjectDao dmpProjectDao;
/* (non-Javadoc)
* @see com.ycxc.vmts.service.DmpRoleService#findList(com.ycxc.vmts.controller.bean.DmpRoleRequest, javax.servlet.http.HttpServletRequest)
......@@ -235,5 +241,43 @@ public class DmpRoleServiceImpl extends BaseService implements DmpRoleService {
return baseBeanResponse;
}
/**
*获取用户的用户角色
*/
@Override
public List<DmpRole> findMemberRolesByUserId(Integer userId) {
List<DmpRole> dmpRoles = new ArrayList<DmpRole>();
try {
dmpRoles = dmpRoleMapper.findMemberRolesByUserId(userId);
} catch (Exception e) {
e.printStackTrace();
logger.info("获取用户的用户角色异常:{}", e);
}
return dmpRoles;
}
/**
*获取用户默认项目的项目角色
*/
@Override
public List<DmpRole> findMemberProjRolesByUser(DmpMember user) {
List<DmpRole> dmpRoles = new ArrayList<DmpRole>();
try {
dmpRoles = dmpRoleMapper.findMemberProjRoles(user.getUserId(), user.getCurrentProjectId());
} catch (Exception e) {
e.printStackTrace();
logger.info("获取用户的用户角色异常:{}", e);
}
return dmpRoles;
}
}
......@@ -305,5 +305,27 @@
from dmp_permission
where permission_id = #{permissionId,jdbcType=INTEGER}
</select>
<!-- 根据角色获取所有资源 -->
<select id="findByRoles" resultMap="BaseResultMap">
select
permission.permission_id, permission.permission_code, permission.permission_name, permission.permission_desc, permission.permission_url,
permission.permission_type, permission.permission_sort, permission.parent_code, permission.remark, permission.data_status,
permission.create_user_id, permission.create_time, permission.update_user_id, permission.update_time
from dmp_permission permission
left join dmp_role_permission rolePermission on permission.permission_id=rolePermission.permission_id
where
<choose>
<when test="dmpRoles.size>0">
rolePermission.role_id in
<foreach collection="dmpRoles" item="item" index="index" open="(" separator ="," close=")">
#{item.roleId,jdbcType=INTEGER}
</foreach>
</when>
<otherwise>
1 <![CDATA[ <> ]]> 1
</otherwise>
</choose>
</select>
</mapper>
......@@ -263,5 +263,30 @@
from dmp_role
where role_id = #{roleId,jdbcType=INTEGER}
</select>
<!-- 用户主键获取用户角色 -->
<select id="findMemberRolesByUserId" resultMap="BaseResultMap">
select
role.role_id, role.role_code, role.role_name, role.role_desc, role.role_type,
role.remark, role.data_status, role.create_user_id, role.create_time, role.update_user_id,
role.update_time
from dmp_role role
left join dmp_member_role memberRole
on role.role_id=memberRole.role_id
where memberRole.user_id = #{userId,jdbcType=INTEGER}
</select>
<!-- 根据用户主键和项目主键获取用户在该项目上的角色 -->
<select id="findMemberProjRoles" resultMap="BaseResultMap">
select
role.role_id, role.role_code, role.role_name, role.role_desc, role.role_type,
role.remark, role.data_status, role.create_user_id, role.create_time, role.update_user_id,
role.update_time
from dmp_role role
left join dmp_member_project_role memberProjRole
on role.role_id=memberProjRole.role_id
where memberProjRole.user_id = #{userId,jdbcType=INTEGER}
and memberProjRole.project_id = #{projectId,jdbcType=INTEGER}
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment