package auth.filter; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import auth.openidconnect.Utils; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; public abstract class AbstractFilter implements Filter { private static final String USER_ROLES_JSON = "user_roles.json"; private static final List<UserInRole> roles = new ArrayList<UserInRole>(); @Override public void doFilter(ServletRequest req, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { if(roles.isEmpty()){ Gson g = new Gson(); HttpServletRequest request = (HttpServletRequest) req; final BufferedReader userData = new BufferedReader(new InputStreamReader(request.getServletContext().getResourceAsStream(Utils.PATH_TO_PROVIDERS+USER_ROLES_JSON))); List<UserInRole> tempRead = g.fromJson(userData, new TypeToken<List<UserInRole>>(){}.getType()); roles.addAll(tempRead); } } private class UserInRole { private String userName; private String role; } protected List<String> getRolesForUser(String user) { List<String> result = new ArrayList<String>(); result.add("user"); for (UserInRole userInRole : roles) { if(userInRole.userName.equals(user)){ result.add(userInRole.role); } } return result; } }