Skip to content

Commit

Permalink
Initial PR feedback
Browse files Browse the repository at this point in the history
Signed-off-by: Peter Nied <petern@amazon.com>
  • Loading branch information
peternied committed Jan 11, 2023
1 parent c42fbe1 commit ba6f5cb
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,15 @@
import java.util.Objects;

public class Permission {
private final static String PERMISSION_DELIMITER = "\\.";
private final String[] permissionChunks;

public Permission(final String permission) {
this.permissionChunks = permission.split("\\.");
try {
this.permissionChunks = permission.split(PERMISSION_DELIMITER);
} catch (Exception) {
throw new InvalidPermissionName(permission);
}
}

public boolean matches(final String permissionRequired) {
Expand All @@ -26,4 +31,14 @@ public boolean matches(final String permissionRequired) {
}
return true;
}

public static void checkIsValid(final String permission) {
new Permission(permission);
}

public static class InvalidPermissionName extends RuntimeException {
public InvalidPermissionName(final String name) {
super("The name '" + name + "' is not a valid permission name");
}
}
}
8 changes: 8 additions & 0 deletions server/src/main/java/org/opensearch/action/ActionModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,7 @@
import org.opensearch.action.termvectors.TransportTermVectorsAction;
import org.opensearch.action.update.TransportUpdateAction;
import org.opensearch.action.update.UpdateAction;
import org.opensearch.authn.Permission;
import org.opensearch.client.node.NodeClient;
import org.opensearch.cluster.metadata.IndexNameExpressionResolver;
import org.opensearch.cluster.node.DiscoveryNodes;
Expand Down Expand Up @@ -441,6 +442,7 @@
import org.opensearch.usage.UsageService;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -540,6 +542,12 @@ class ActionRegistry extends NamedRegistry<ActionHandler<?, ?>> {
}

public void register(ActionHandler<?, ?> handler) {
// Ensure all permissions are valid
handler.getTransportAction().requiredPermissions()
.stream()
.flatMap(Collection::stream)
.forEach(Permission::checkIsValid);
// TODO: AuthenticationManager gets a list of permission for permission validity / error messaging
register(handler.getAction().name(), handler);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@

import org.opensearch.common.io.stream.StreamInput;
import org.opensearch.common.io.stream.StreamOutput;
import org.opensearch.authn.Permission;
import org.opensearch.transport.TransportRequest;

import java.io.IOException;
Expand Down
2 changes: 0 additions & 2 deletions server/src/main/java/org/opensearch/action/ActionType.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@

package org.opensearch.action;

import java.util.List;

import org.opensearch.common.io.stream.Writeable;
import org.opensearch.common.settings.Settings;
import org.opensearch.transport.TransportRequestOptions;
Expand Down

0 comments on commit ba6f5cb

Please sign in to comment.