package com.simple.controller; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.subject.Subject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import com.github.pagehelper.PageInfo; import com.simple.common.ResultData; import com.simple.domain.po.MallRolePermission; import com.simple.domain.po.MallUserInfo; import com.simple.domain.po.MallUserRole; import com.simple.service.MallRolePermissionService; import com.simple.service.MallUserRoleService; import com.simple.shiro.UserSession; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @RestController @Api(description="登录相关接口") public class HomeController { // @Autowired // private MallRoleService sysRoleService; // // @Autowired // private MallPermissionService sysPermissionService; @Autowired private MallUserRoleService mallUserRoleService; @Autowired private MallRolePermissionService mallRolePermissionService; // @GetMapping("login") // public ResultData login() { // return new ResultData(Result.UNLOGIN, "用户未登录"); // } @ApiOperation("登录") @PostMapping("/doLogin") public ResultData login(@RequestBody MallUserInfo user) { ResultData data = new ResultData(); if (StringUtils.isEmpty(user.getUsername()) || StringUtils.isEmpty(user.getPassword())) { // throw new SystemException(ErrorCode.LOGIN_USER_OR_PWD_ERROR); return new ResultData(ResultData.ERROR,"用户名或者密码错误"); } try { Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken(user.getUsername(), user.getPassword()); subject.login(token); // List roleList = sysRoleService.findRoleByUserId(user.getId()); // if (null != roleList && roleList.size() > 0) { // List permissionList = sysPermissionService // .findPermissionByRoleIds(roleList.stream().map(MallRole::getId).collect(Collectors.toList())); // user.setRole(roleList); // user.setPermission(permissionList); // } MallUserInfo info =(MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute(UserSession.userInfo); info.setPassword("保密"); // System.out.println("id:"+ SecurityUtils.getSubject().getSession().getId()); MallUserRole ur = new MallUserRole(); ur.setUid(info.getId()); PageInfo page = mallUserRoleService.listAsPage(ur, 1, 1); if(page.getSize()>0) { Long roleId = page.getList().get(0).getRoleId(); MallRolePermission p = new MallRolePermission(); p.setRoleId(roleId); p.setTenantId(info.getTenantId()); PageInfo listAsPage = mallRolePermissionService.listAsPage(p, 1, 100); String menus = ""; for(MallRolePermission rp :listAsPage.getList()) { menus+=rp.getPermissionId()+","; } if(menus.length()>0) { menus = menus.substring(0, menus.length()-1); } info.setMenus(menus); } data.data=info; }catch(Exception e) { return new ResultData(ResultData.ERROR,"用户名或者密码错误"); } return data; } @ApiOperation("登出") @GetMapping("/logout") public ResultData login() { ResultData data = new ResultData(); SecurityUtils.getSubject().logout(); return data; } }