| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- package nju.seec.helper.controller;
- import nju.seec.helper.aspect.auth.Auth;
- import nju.seec.helper.dto.LoginDTO;
- import nju.seec.helper.dto.LoginUser;
- import nju.seec.helper.dto.RegisterDTO;
- import nju.seec.helper.dto.ResetPasswordDTO;
- import nju.seec.helper.dto.modify.ModifyUserDTO;
- import nju.seec.helper.service.UserService;
- import nju.seec.helper.util.Consts;
- import nju.seec.helper.util.enums.UserType;
- import nju.seec.helper.vo.UserVO;
- import org.springframework.http.ResponseEntity;
- import org.springframework.web.bind.annotation.*;
- import javax.servlet.http.HttpSession;
- import javax.validation.Valid;
- /**
- * 用户
- *
- * @author cst
- */
- @RestController
- @RequestMapping("/api/user")
- public class UserController {
- private final UserService userService;
- public UserController(UserService userService) {
- this.userService = userService;
- }
- /**
- * 注册
- */
- @PostMapping("/register")
- public UserVO register(@Valid @RequestBody RegisterDTO registerDTO) {
- return userService.createUser(registerDTO);
- }
- /**
- * 邮箱登录
- */
- @PostMapping("/login/email")
- public UserVO loginByEmail(@Valid @RequestBody LoginDTO loginDTO,
- HttpSession session) {
- UserVO userVO = userService.getUserByEmailAndPassword(loginDTO.getUsername(), loginDTO.getPassword());
- LoginUser user = new LoginUser()
- .setId(userVO.getId())
- .setName(userVO.getName())
- .setType(userVO.getType());
- session.setAttribute(Consts.SESSION_USER_NAME, user);
- // 20分钟有效期
- session.setMaxInactiveInterval(1200);
- return userVO;
- }
- /**
- * 登出
- */
- @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "登出")
- @PostMapping("/logout")
- public void logout(HttpSession session) {
- session.removeAttribute(Consts.SESSION_USER_NAME);
- }
- /**
- * 修改个人信息
- */
- @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "修改个人信息")
- @PutMapping
- public UserVO modifyUser(LoginUser user,
- @Valid @RequestBody ModifyUserDTO modifyUserDTO,
- HttpSession session) {
- UserVO userVO = userService.modifyUser(user, modifyUserDTO);
- user = ((LoginUser) session.getAttribute(Consts.SESSION_USER_NAME))
- .setId(userVO.getId())
- .setName(userVO.getName())
- .setType(userVO.getType());
- session.setAttribute(Consts.SESSION_USER_NAME, user);
- return userVO;
- }
- /**
- * 重设密码
- */
- @PutMapping("/resetPassword/email")
- public void resetPasswordByEmail(@Valid @RequestBody ResetPasswordDTO resetPasswordDTO) {
- userService.resetPasswordByEmail(resetPasswordDTO);
- }
- /**
- * 获取个人信息
- */
- @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "获取个人信息")
- @GetMapping
- public UserVO getUserInfo(LoginUser user) {
- return userService.getUserById(user.getId());
- }
- }
|