package codeine.servlets.api_servlets.angular; import java.lang.reflect.Type; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import codeine.jsons.global.UserPermissionsJsonStore; import codeine.permissions.PermissionsConfJson; import codeine.permissions.UserPermissions; import codeine.servlet.AbstractApiServlet; import com.google.common.reflect.TypeToken; import com.google.inject.Inject; @SuppressWarnings("serial") public class CodeinePermissionsApiServlet extends AbstractApiServlet { private static final Logger log = Logger.getLogger(CodeinePermissionsApiServlet.class); private static final long serialVersionUID = 1L; private @Inject UserPermissionsJsonStore permissionsJsonStore; @Override protected boolean checkPermissions(HttpServletRequest request) { if (request.getMethod().equals("POST")) { if (!isAdministrator(request)) { log.info("User can not define new project"); return false; } return true; } return true; } @Override protected void myGet(HttpServletRequest request, HttpServletResponse response) { List<UserPermissions> permissions = permissionsJsonStore.get().permissions(); writeResponseJson(response, permissions); } @Override protected void myPut(HttpServletRequest request, HttpServletResponse response) { Type listType = new TypeToken<List<UserPermissions>>() { }.getType(); List<UserPermissions> data = readBodyJson(request, listType); log.info("Will update codeine configuration. New Config is: " + data); permissionsJsonStore.store(new PermissionsConfJson(data)); writeResponseJson(response, data); } }