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.
44 lines
1.6 KiB
44 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");
|
|
}
|
|
}
|
|
}
|