This repository has been archived on 2020-08-02. You can view files and clone it, but cannot push or open issues or pull requests.
e-commerce/web_backend/src/main/java/org/hso/ecommerce/components/LoginIntercepter.java

82 lines
2.6 KiB
Java
Raw Normal View History

2020-01-25 22:13:26 +01:00
package org.hso.ecommerce.components;
2020-04-29 23:07:47 +02:00
import org.hso.ecommerce.repos.user.UserRepository;
2020-04-29 22:44:16 +02:00
import org.hso.ecommerce.entities.user.User;
2020-04-08 18:27:46 +02:00
import org.springframework.beans.factory.annotation.Autowired;
2020-01-25 22:13:26 +01:00
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
2020-04-08 18:27:46 +02:00
import javax.servlet.http.HttpSession;
import java.util.Optional;
2020-01-25 22:13:26 +01:00
@Component
public class LoginIntercepter implements HandlerInterceptor {
2020-04-08 18:27:46 +02:00
@Autowired
private final UserRepository userRepository = null;
2020-01-25 22:13:26 +01:00
@Override
public boolean preHandle(
HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
2020-04-08 18:27:46 +02:00
HttpSession session = request.getSession();
Object userId = session.getAttribute("userId");
Optional<User> user = null;
2020-04-08 18:27:46 +02:00
2020-04-27 09:48:24 +02:00
if (request.getRequestURI().startsWith("/user/")) {
2020-04-08 18:27:46 +02:00
System.out.println("USER");
2020-04-27 09:48:24 +02:00
if (userId == null) {
2020-04-08 18:27:46 +02:00
session.setAttribute("afterLogin", request.getRequestURI());
response.sendRedirect("/login");
return false;
}
}
2020-04-27 09:48:24 +02:00
if (request.getRequestURI().startsWith("/intern/")) {
2020-04-08 18:27:46 +02:00
System.out.println("intern");
2020-04-27 09:48:24 +02:00
if (userId == null) {
2020-04-08 18:27:46 +02:00
session.setAttribute("afterLogin", request.getRequestURI());
response.sendRedirect("/login");
return false;
2020-01-25 22:13:26 +01:00
}
user = userRepository.findById((Long) userId);
if(user.isPresent() && !user.get().isEmployee)
{
session.setAttribute("afterLogin", request.getRequestURI());
response.sendRedirect("/");
return false;
}
}
if (!request.getRequestURI().startsWith("/login")) {
session.removeAttribute("afterLogin");
2020-01-25 22:13:26 +01:00
}
2020-04-08 18:27:46 +02:00
2020-04-27 09:48:24 +02:00
if (userId != null) {
if (user == null)
user = userRepository.findById((Long) userId);
2020-04-08 18:27:46 +02:00
user.ifPresent(value -> request.setAttribute("user", value));
}
2020-01-25 22:13:26 +01:00
return true;
}
2020-04-08 18:27:46 +02:00
2020-01-25 22:13:26 +01:00
@Override
public void postHandle(
HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
2020-04-27 09:48:24 +02:00
Object handler, Exception exception) throws Exception {
}
2020-01-25 22:13:26 +01:00
}