| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package nju.seec.helper.controller;
- import nju.seec.helper.aspect.auth.Auth;
- import nju.seec.helper.controller.response.EmptyResponse;
- import nju.seec.helper.controller.response.ResourceResponse;
- import nju.seec.helper.dto.LoginDTO;
- import nju.seec.helper.dto.LoginUser;
- import nju.seec.helper.dto.RegisterDTO;
- 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.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 ResourceResponse<UserVO> register(@Valid @RequestBody RegisterDTO registerDTO) {
- UserVO userVO = userService.createUser(registerDTO);
- return ResourceResponse.of(userVO);
- }
- /**
- * 邮箱登录
- */
- @PostMapping("/login/email")
- public ResourceResponse<UserVO> emailLogin(@Valid @RequestBody LoginDTO loginDTO,
- HttpSession session) {
- UserVO userVO = userService.getUserByEmailAndPassword(loginDTO.getUsername(), loginDTO.getPassword());
- LoginUser user = new LoginUser();
- user.setId(userVO.getId());
- user.setName(userVO.getName());
- user.setType(userVO.getType());
- session.setAttribute(Consts.SESSION_USER_NAME, user);
- // 20分钟有效期
- session.setMaxInactiveInterval(1200);
- return ResourceResponse.of(userVO);
- }
- /**
- * 登出
- */
- @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "登出")
- @PostMapping("/logout")
- public EmptyResponse logout(HttpSession session) {
- session.removeAttribute(Consts.SESSION_USER_NAME);
- return EmptyResponse.getInstance();
- }
- /**
- * 获取自身用户信息
- */
- @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "获取自身用户信息")
- @GetMapping
- public ResourceResponse<UserVO> getUserInfo(LoginUser user) {
- UserVO userVO = userService.getUserById(user.getId());
- return ResourceResponse.of(userVO);
- }
- }
|