package com.sztzjy.linkCommerce.controller.stu; import cn.hutool.system.UserInfo; import com.sztzjy.linkCommerce.annotation.AnonymousAccess; import com.sztzjy.linkCommerce.config.security.JwtUser; import com.sztzjy.linkCommerce.config.security.TokenProvider; import com.sztzjy.linkCommerce.entity.Userinfo; import com.sztzjy.linkCommerce.entity.UserinfoExample; import com.sztzjy.linkCommerce.mapper.UserinfoMapper; import com.sztzjy.linkCommerce.util.ResultEntity; import com.sztzjy.linkCommerce.util.RsaUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @RestController @RequestMapping("/api/user") @Api(tags = "yz-登录相关") public class LoginController { @Resource private AuthenticationManagerBuilder authenticationManagerBuilder; @Autowired UserinfoMapper userinfoMapper; @PostMapping("/login") @ApiOperation("登录接口") @AnonymousAccess public ResultEntity login(@RequestParam(required = false) String passwordEncode, @RequestParam(required = false) String userName, HttpServletRequest request, @RequestParam(required = false) String TOKEN) { JwtUser jwtUser; String passWord; if (StringUtils.isBlank(TOKEN)) { try { passWord = RsaUtil.decryptByPrivateKey(passwordEncode); } catch (Exception e) { return new ResultEntity(HttpStatus.BAD_REQUEST, "密码错误"); } try{ UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(userName, passWord); Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken); SecurityContextHolder.getContext().setAuthentication(authentication); jwtUser = (JwtUser) authentication.getPrincipal(); String token = TokenProvider.createToken(jwtUser); // 1、子系统直接登录 UserinfoExample stuUserExample = new UserinfoExample(); stuUserExample.createCriteria().andUsernameEqualTo(userName).andPasswordEqualTo(passWord); List userinfos = userinfoMapper.selectByExample(stuUserExample); //不存在返回错误,正确放行 if (userinfos.isEmpty()) { return new ResultEntity(HttpStatus.BAD_REQUEST, "密码错误"); } // 保存用户的登录信息 Map map = new HashMap<>(); Userinfo user = userinfos.get(0); map.put("name", user.getName()); map.put("username", user.getUsername()); map.put("roleId", String.valueOf(user.getRole())); map.put("schoolId", user.getSchoolId()); map.put("classId", user.getSchoolClassId()); map.put("userId", user.getUserId()); map.put("token", token); return new ResultEntity(HttpStatus.OK, map); }catch (Exception e){ return new ResultEntity(HttpStatus.BAD_REQUEST, "账号不存在"); } }else { return new ResultEntity(HttpStatus.BAD_REQUEST, "暂不支持智云跳转"); } } }