Commit 5e0ff5ae authored by xiaozhe.chen's avatar xiaozhe.chen

添加role相关的类

parent 16c9f9af
package cn.quantgroup.cashloanflowboss.api.log.service;
import cn.quantgroup.cashloanflowboss.api.role.entity.boss.Permission;
import cn.quantgroup.cashloanflowboss.api.user.dictionary.UserStatus;
import cn.quantgroup.cashloanflowboss.api.user.entity.boss.User;
import cn.quantgroup.cashloanflowboss.api.user.service.UserService;
import cn.quantgroup.cashloanflowboss.component.security.Authority;
import cn.quantgroup.cashloanflowboss.api.user.service.UserSessionService;
import cn.quantgroup.cashloanflowboss.core.asserts.Assert;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationDictionary;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus;
import cn.quantgroup.cashloanflowboss.utils.JSONTools;
import cn.quantgroup.cashloanflowboss.utils.MD5Tools;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Arrays;
/**
* Created by WeiWei on 2019/7/22.
......@@ -27,6 +23,8 @@ public class LogService {
@Autowired
private UserService userService;
@Autowired
private UserSessionService userSessionService;
@Autowired
private HttpServletRequest request;
......@@ -51,13 +49,8 @@ public class LogService {
// 检查密码是否正确
Assert.isFalse(user.getPassword().equalsIgnoreCase(MD5Tools.md5(password)), ApplicationStatus.USERNAME_OR_PASSWORD_ERROR);
HttpSession session = this.request.getSession(true);
Permission permission = new Permission();
permission.setId("Log.logout");
permission.setAuthorities(Arrays.asList(Authority.READ));
session.setAttribute(ApplicationDictionary.SECURITY_KEY, JSONTools.serialize(Arrays.asList(permission)));
// set user session info
userSessionService.setUserSessionInfo(user);
return true;
......
......@@ -3,6 +3,7 @@ package cn.quantgroup.cashloanflowboss.api.role.entity.boss;
import cn.quantgroup.cashloanflowboss.core.persistence.Primary;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
......@@ -11,8 +12,9 @@ import javax.persistence.Table;
@Table(name = "role_user")
public class RoleUser extends Primary {
@Column(name = "role_id")
private Long roleId;
@Column(name = "user_id")
private Long userId;
......
......@@ -20,6 +20,9 @@ public class RoleService {
public Role findRoleByUserId(Long userId) {
RoleUser roleUser = roleUserRepository.findByUserId(userId);
if (null == roleUser) {
return null;
}
Long roleId = roleUser.getRoleId();
Role role = findRoleByRoleId(roleId);
return role;
......
package cn.quantgroup.cashloanflowboss.api.test.controller;
import cn.quantgroup.cashloanflowboss.api.user.entity.boss.User;
import cn.quantgroup.cashloanflowboss.api.user.model.UserSessionInfo;
import cn.quantgroup.cashloanflowboss.api.user.service.UserService;
import cn.quantgroup.cashloanflowboss.api.user.service.UserSessionService;
import cn.quantgroup.cashloanflowboss.core.base.Result;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -15,10 +16,12 @@ public class TestController {
@Autowired
private UserService userService;
@Autowired
private UserSessionService userSessionService;
@GetMapping("/user/info")
public Result findUserFromSession() {
User currentUser = userService.findCurrentUser();
return new Result<>(ApplicationStatus.SUCCESS, currentUser);
UserSessionInfo userSessionInfo = userService.findUserSessionInfo();
return new Result<>(ApplicationStatus.SUCCESS, userSessionInfo);
}
}
package cn.quantgroup.cashloanflowboss.api.user.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
@AllArgsConstructor
public class RoleInfo {
private Long roleId;
private String roleName;
}
package cn.quantgroup.cashloanflowboss.api.user.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
@AllArgsConstructor
public class UserInfo {
private Long userId;
private String userName;
}
package cn.quantgroup.cashloanflowboss.api.user.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
@AllArgsConstructor
public class UserSessionInfo {
private String userName;
private String roleName;
private UserInfo userInfo;
private RoleInfo roleInfo;
private Long channelId;
}
......@@ -2,6 +2,7 @@ package cn.quantgroup.cashloanflowboss.api.user.service;
import cn.quantgroup.cashloanflowboss.api.user.dictionary.UserStatus;
import cn.quantgroup.cashloanflowboss.api.user.entity.boss.User;
import cn.quantgroup.cashloanflowboss.api.user.model.UserSessionInfo;
import cn.quantgroup.cashloanflowboss.api.user.repository.boss.UserRepository;
import cn.quantgroup.cashloanflowboss.core.asserts.Assert;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationDictionary;
......@@ -137,12 +138,12 @@ public class UserService {
}
public User findCurrentUser() {
public UserSessionInfo findUserSessionInfo() {
HttpSession session = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest().getSession();
Assert.isNull(session.getAttribute(ApplicationDictionary.USER_KEY), ApplicationStatus.INVALID_USER);
User user = JSONTools.deserialize(String.valueOf(session.getAttribute(ApplicationDictionary.USER_KEY)), new TypeReference<User>() {
UserSessionInfo userSessionInfo = JSONTools.deserialize(String.valueOf(session.getAttribute(ApplicationDictionary.USER_KEY)), new TypeReference<UserSessionInfo>() {
});
return user;
return userSessionInfo;
}
}
package cn.quantgroup.cashloanflowboss.api.user.service;
import cn.quantgroup.cashloanflowboss.api.role.entity.boss.Permission;
import cn.quantgroup.cashloanflowboss.api.role.entity.boss.Role;
import cn.quantgroup.cashloanflowboss.api.role.service.RoleService;
import cn.quantgroup.cashloanflowboss.api.user.entity.boss.User;
import cn.quantgroup.cashloanflowboss.api.user.model.RoleInfo;
import cn.quantgroup.cashloanflowboss.api.user.model.UserInfo;
import cn.quantgroup.cashloanflowboss.api.user.model.UserSessionInfo;
import cn.quantgroup.cashloanflowboss.component.security.Authority;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationDictionary;
import cn.quantgroup.cashloanflowboss.utils.JSONTools;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpSession;
import java.util.Arrays;
@Slf4j
@Service
public class UserSessionService {
@Autowired
private RoleService roleService;
public void setUserSessionInfo(User user) {
HttpSession session = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest().getSession();
session.setAttribute(ApplicationDictionary.USER_KEY, JSONTools.serialize(user));
//query user role info
//set user,role,channel or permission info
Role role = roleService.findRoleByUserId(user.getId());
String roleName = null, userName = user.getUsername();
Long roleId = null, userId = user.getId();
if (null != role) {
roleName = role.getName();
roleId = role.getId();
}
//UserSessionInfo.builder()
// .userName(user.getUsername())
// .roleName()
UserSessionInfo userSessionInfo = UserSessionInfo.builder()
.roleInfo(RoleInfo.builder().roleId(roleId).roleName(roleName).build())
.userInfo(UserInfo.builder().userId(userId).userName(userName).build())
.build();
HttpSession session = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest().getSession();
session.setAttribute(ApplicationDictionary.USER_KEY, JSONTools.serialize(userSessionInfo));
//todo permission后续放入UserSessionInfo结构中吧
Permission permission = new Permission();
permission.setId("Log.logout");
permission.setAuthorities(Arrays.asList(Authority.READ));
session.setAttribute(ApplicationDictionary.SECURITY_KEY, JSONTools.serialize(Arrays.asList(permission)));
}
......
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