| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- package nju.seec.helper.controller;
- import nju.seec.helper.aspect.auth.Auth;
- import nju.seec.helper.dto.groups.Create;
- import nju.seec.helper.dto.groups.Modify;
- import nju.seec.helper.dto.user.LoginDTO;
- import nju.seec.helper.dto.user.LoginUser;
- import nju.seec.helper.dto.user.ResetPasswordDTO;
- import nju.seec.helper.dto.user.UserDTO;
- 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;
- /**
- * 用户
- *
- * @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(Create.class) @RequestBody UserDTO userDTO) {
- return userService.createUser(userDTO);
- }
- /**
- * 邮箱登录
- */
- @PostMapping("/login/email")
- public UserVO loginByEmail(@Validated @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,
- @Validated(Modify.class) @RequestBody UserDTO userDTO,
- HttpSession session) {
- UserVO userVO = userService.modifyUser(user, userDTO);
- 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(@Validated @RequestBody ResetPasswordDTO resetPasswordDTO) {
- userService.resetPasswordByEmail(resetPasswordDTO);
- }
- /**
- * 获取个人信息
- */
- @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "获取个人信息")
- @GetMapping
- public UserVO getUserInfo(LoginUser user) {
- return userService.getUserById(user.getId());
- }
- }
|