You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.6 KiB
35 lines
1.6 KiB
package org.ros.chatto.security;
|
|
|
|
import java.io.IOException;
|
|
import java.util.Collection;
|
|
|
|
import javax.servlet.ServletException;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import org.springframework.security.core.Authentication;
|
|
import org.springframework.security.core.GrantedAuthority;
|
|
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
|
import org.springframework.security.web.DefaultRedirectStrategy;
|
|
import org.springframework.security.web.RedirectStrategy;
|
|
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
@Component
|
|
public class AuthenticationSuccessHandlerImpl implements AuthenticationSuccessHandler {
|
|
|
|
private static final SimpleGrantedAuthority SUPER_USER_AUTHORITY = new SimpleGrantedAuthority("ROLE_SUPER_USER");
|
|
private static final SimpleGrantedAuthority ADMIN_AUTHORITY = new SimpleGrantedAuthority("ROLE_ADMIN");
|
|
private RedirectStrategy redirectStrategy = new DefaultRedirectStrategy();
|
|
|
|
@Override
|
|
public void onAuthenticationSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,
|
|
Authentication authentication) throws IOException, ServletException {
|
|
Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
|
|
if (authorities.contains(ADMIN_AUTHORITY) || authorities.contains(SUPER_USER_AUTHORITY)) {
|
|
redirectStrategy.sendRedirect(httpServletRequest, httpServletResponse, "/admin");
|
|
} else {
|
|
redirectStrategy.sendRedirect(httpServletRequest, httpServletResponse, "/user");
|
|
}
|
|
}
|
|
}
|