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 " ) ;
2020-05-24 21:51:40 +02:00
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
}
2020-05-24 21:51:40 +02: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 ) {
2020-05-24 21:51:40 +02:00
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
}