package com.lstznkj.groundstation.controller; import com.fasterxml.jackson.databind.ObjectMapper; import com.lstznkj.groundstation.model.Result; import com.lstznkj.groundstation.model.User; import com.lstznkj.groundstation.security.jwt.JWTUtils; import com.lstznkj.groundstation.service.UserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; @Api("用户") @RestController public class UserController { @Autowired private JWTUtils jwtUtils; @Autowired private UserService userService; @Autowired private ObjectMapper objectMapper; @Autowired private BCryptPasswordEncoder passwordEncoder; private Logger logger= LoggerFactory.getLogger(getClass()); @ApiOperation("获取用户信息") @GetMapping("/users/{username}") public Object getUser(HttpServletRequest request, @PathVariable String username) { Result result=new Result<>(); String token = request.getHeader("Authorization"); String realUsername=jwtUtils.getUsername(token); if(realUsername!= username) { result.setSuccess(false); result.setInfo("非法请求!"); } return userService.findUserByAccount(realUsername); } @DeleteMapping("/users/{username}") public Object deleteUser(HttpServletRequest request,@PathVariable String username) { String token = request.getHeader("Authorization"); String realUsername=jwtUtils.getUsername(token); Result result=new Result<>(); logger.info(realUsername+" start to delete user:"+username); result=userService.deleteUser(username); return result; } @PutMapping("/users/{username}") public Object updateUser(HttpServletRequest request,@PathVariable String username,@RequestBody User user){ String token = request.getHeader("Authorization"); String realUsername=jwtUtils.getUsername(token); Result result=new Result<>(); try { logger.info(jwtUtils.getUsername(token)+" update user:"+objectMapper.writeValueAsString(user)); result=userService.updateUser(user); }catch (Exception ex){ ex.printStackTrace(); result.setSuccess(false); result.setInfo("修改用户信息失败!!!"); } return result; } @PutMapping("/users/{username}/password") public Object updateUserPassword(HttpServletRequest request,@PathVariable String username,@RequestBody User user) { String token = request.getHeader("Authorization"); try { logger.info(jwtUtils.getUsername(token)+" change user:"+user.getUsername()+"'s password"+objectMapper.writeValueAsString(user)); return userService.adminUpdateUserPassword(user); }catch (Exception ex){ ex.printStackTrace(); } return null; } @ApiOperation("获取所有用户信息") @GetMapping("/users") // @PreAuthorize("hasRole('ROLE_ADMIN')") public Object getAllUser(HttpServletRequest request) { return userService.findAllUsers(); } @ApiOperation("用户注册") @PutMapping("/users/register") public Object addUser(HttpServletRequest request, @RequestBody User user) { // String token = request.getHeader("Authorization"); // String realUsername=jwtUtils.getUsername(token); try { logger.info(" start to add user"); } catch (Exception ex){ ex.printStackTrace(); } return userService.adduser(user); } @RequestMapping(value = "/users",method = RequestMethod.POST) public Object createUser(HttpServletRequest request, @RequestBody User user) { Result result=new Result<>(); String token = request.getHeader("Authorization"); try { logger.info(jwtUtils.getUsername(token)+" create user:"+objectMapper.writeValueAsString(user)); user.setPassword(passwordEncoder.encode(user.getPassword())); result=userService.createUser(user,user.getSysRoles()); }catch (Exception ex){ ex.printStackTrace(); result.setSuccess(false); result.setInfo("创建用户失败!!!"); } return result; } /*** * 退出业务逻辑未完成 * @param request * @return */ @ApiOperation("用户退出登录") @PostMapping("/user/logout") public Object logout(HttpServletRequest request) { String token = request.getHeader("Authorization"); if(token!=null) { String realUsername=jwtUtils.getUsername(token); logger.info(realUsername+" logout!"); } return null; } }