您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

100 行
3.9 KiB

  1. package com.simple.controller;
  2. import org.apache.shiro.SecurityUtils;
  3. import org.apache.shiro.authc.UsernamePasswordToken;
  4. import org.apache.shiro.subject.Subject;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.util.StringUtils;
  7. import org.springframework.web.bind.annotation.GetMapping;
  8. import org.springframework.web.bind.annotation.PostMapping;
  9. import org.springframework.web.bind.annotation.RequestBody;
  10. import org.springframework.web.bind.annotation.RestController;
  11. import com.github.pagehelper.PageInfo;
  12. import com.simple.common.ResultData;
  13. import com.simple.domain.po.MallRolePermission;
  14. import com.simple.domain.po.MallUserInfo;
  15. import com.simple.domain.po.MallUserRole;
  16. import com.simple.service.MallRolePermissionService;
  17. import com.simple.service.MallUserRoleService;
  18. import com.simple.shiro.UserSession;
  19. import io.swagger.annotations.Api;
  20. import io.swagger.annotations.ApiOperation;
  21. @RestController
  22. @Api(description="登录相关接口")
  23. public class HomeController {
  24. // @Autowired
  25. // private MallRoleService sysRoleService;
  26. //
  27. // @Autowired
  28. // private MallPermissionService sysPermissionService;
  29. @Autowired
  30. private MallUserRoleService mallUserRoleService;
  31. @Autowired
  32. private MallRolePermissionService mallRolePermissionService;
  33. // @GetMapping("login")
  34. // public ResultData login() {
  35. // return new ResultData(Result.UNLOGIN, "用户未登录");
  36. // }
  37. @ApiOperation("登录")
  38. @PostMapping("/doLogin")
  39. public ResultData login(@RequestBody MallUserInfo user) {
  40. ResultData data = new ResultData();
  41. if (StringUtils.isEmpty(user.getUsername()) || StringUtils.isEmpty(user.getPassword())) {
  42. // throw new SystemException(ErrorCode.LOGIN_USER_OR_PWD_ERROR);
  43. return new ResultData(ResultData.ERROR,"用户名或者密码错误");
  44. }
  45. try {
  46. Subject subject = SecurityUtils.getSubject();
  47. UsernamePasswordToken token = new UsernamePasswordToken(user.getUsername(), user.getPassword());
  48. subject.login(token);
  49. // List<MallRole> roleList = sysRoleService.findRoleByUserId(user.getId());
  50. // if (null != roleList && roleList.size() > 0) {
  51. // List<MallPermission> permissionList = sysPermissionService
  52. // .findPermissionByRoleIds(roleList.stream().map(MallRole::getId).collect(Collectors.toList()));
  53. // user.setRole(roleList);
  54. // user.setPermission(permissionList);
  55. // }
  56. MallUserInfo info =(MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute(UserSession.userInfo);
  57. info.setPassword("保密");
  58. // System.out.println("id:"+ SecurityUtils.getSubject().getSession().getId());
  59. MallUserRole ur = new MallUserRole();
  60. ur.setUid(info.getId());
  61. PageInfo<MallUserRole> page = mallUserRoleService.listAsPage(ur, 1, 1);
  62. if(page.getSize()>0) {
  63. Long roleId = page.getList().get(0).getRoleId();
  64. MallRolePermission p = new MallRolePermission();
  65. p.setRoleId(roleId);
  66. p.setTenantId(info.getTenantId());
  67. PageInfo<MallRolePermission> listAsPage = mallRolePermissionService.listAsPage(p, 1, 100);
  68. String menus = "";
  69. for(MallRolePermission rp :listAsPage.getList()) {
  70. menus+=rp.getPermissionId()+",";
  71. }
  72. if(menus.length()>0) {
  73. menus = menus.substring(0, menus.length()-1);
  74. }
  75. info.setMenus(menus);
  76. }
  77. data.data=info;
  78. }catch(Exception e) {
  79. return new ResultData(ResultData.ERROR,"用户名或者密码错误");
  80. }
  81. return data;
  82. }
  83. @ApiOperation("登出")
  84. @GetMapping("/logout")
  85. public ResultData login() {
  86. ResultData data = new ResultData();
  87. SecurityUtils.getSubject().logout();
  88. return data;
  89. }
  90. }