Skip to content

Commit

Permalink
fix(FeedSourceController): fix FeedSource update, misc cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
landonreed committed Oct 17, 2019
1 parent f5a80c6 commit a2ced6e
Show file tree
Hide file tree
Showing 6 changed files with 145 additions and 132 deletions.
11 changes: 11 additions & 0 deletions src/main/java/com/conveyal/datatools/common/utils/SparkUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.io.ByteStreams;
import org.eclipse.jetty.http.HttpStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import spark.HaltException;
Expand Down Expand Up @@ -99,6 +100,16 @@ public static void logMessageAndHalt(Request request, int statusCode, String mes
logMessageAndHalt(request, statusCode, message, null);
}

/** Utility method to parse generic object from Spark request body. */
public static <T> T getPOJOFromRequestBody(Request req, Class<T> clazz) throws IOException {
try {
return mapper.readValue(req.body(), clazz);
} catch (IOException e) {
logMessageAndHalt(req, HttpStatus.BAD_REQUEST_400, "Error parsing JSON for " + clazz.getSimpleName(), e);
throw e;
}
}

/**
* Wrapper around Spark halt method that formats message as JSON using {@link SparkUtils#formatJSON}.
* Extra logic occurs for when the status code is >= 500. A Bugsnag report is created if
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.conveyal.datatools.manager.auth;

import com.conveyal.datatools.manager.DataManager;
import com.conveyal.datatools.manager.models.Project;
import com.conveyal.datatools.manager.persistence.Persistence;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
Expand Down Expand Up @@ -346,6 +347,22 @@ public boolean canAdministerProject(String projectID, String organizationId) {
return false;
}

public boolean canAdministerProject(String projectId) {
if(canAdministerApplication()) return true;
com.conveyal.datatools.manager.models.Project p = Persistence.projects.getById(projectId);
if(canAdministerOrganization(p.organizationId)) return true;
for(Project project : app_metadata.getDatatoolsInfo().projects) {
if (project.project_id.equals(projectId)) {
for(Permission permission : project.permissions) {
if(permission.type.equals("administer-project")) {
return true;
}
}
}
}
return false;
}

public boolean canViewFeed(String organizationId, String projectID, String feedID) {
if (canAdministerApplication() || canAdministerProject(projectID, organizationId)) {
return true;
Expand All @@ -358,6 +375,10 @@ public boolean canViewFeed(String organizationId, String projectID, String feedI
return false;
}

public boolean canManageOrViewFeed(String organizationId, String projectID, String feedID) {
return canManageFeed(organizationId, projectID, feedID) || canViewFeed(organizationId, projectID, feedID);
}

public boolean canManageFeed(String organizationId, String projectID, String feedID) {
if (canAdministerApplication() || canAdministerProject(projectID, organizationId)) {
return true;
Expand Down
Loading

0 comments on commit a2ced6e

Please sign in to comment.