package ru.ulstu.user.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import ru.ulstu.configuration.Constants; import ru.ulstu.odin.controller.OdinController; import ru.ulstu.user.model.*; import ru.ulstu.user.service.UserService; import ru.ulstu.user.service.UserSessionService; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; @Controller @RequestMapping(value = "/users") public class UserControllerV2 extends OdinController { public static final String URL = Constants.API_1_0 + "users"; public static final String ROLES_URL = "/roles"; public static final String ROLES_META_URL = ROLES_URL + OdinController.META_LIST_URL; public static final String SESSIONS_URL = "/sessions"; public static final String SESSIONS_META_URL = SESSIONS_URL + OdinController.META_LIST_URL; public static final String REGISTER_URL = "/register"; public static final String ACTIVATE_URL = "/activate"; public static final String PASSWORD_RESET_REQUEST_URL = "/password-reset-request"; public static final String PASSWORD_RESET_URL = "/password-reset"; private final Logger log = LoggerFactory.getLogger(UserController.class); private final UserService userService; private final UserSessionService userSessionService; public UserControllerV2(UserService userService, UserSessionService userSessionService) { super(UserListDto.class, UserDto.class); this.userService = userService; this.userSessionService = userSessionService; } @GetMapping("/profile") public void getUserProfile(ModelMap modelMap, HttpServletRequest request) { HttpSession session = request.getSession(false); final String sessionId = session.getAttribute(Constants.SESSION_ID_ATTR).toString(); modelMap.addAttribute("userDto", new UserDto(userSessionService.getUserBySessionId(sessionId))); } @PostMapping("/profile") public void updateUserProfile(ModelMap modelMap, HttpServletRequest request, UserDto userDto) { HttpSession session = request.getSession(false); final String sessionId = session.getAttribute(Constants.SESSION_ID_ATTR).toString(); User user = userSessionService.getUserBySessionId(sessionId); modelMap.addAttribute("userDto", userService.updateUserInformation(user, userDto)); } @PostMapping("/invite" ) public String inviteUser(@RequestParam(value = "email") String email){ userService.inviteUser(email); return "redirect:/"; } }