| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package nju.seec.helper.controller;
- import nju.seec.helper.aspect.auth.Auth;
- import nju.seec.helper.dto.*;
- 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.validation.annotation.Validated;
- 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(@Validated @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);
- // 3小时有效期
- session.setMaxInactiveInterval(3 * 60 * 60);
- 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());
- }
- }
|