/** * */ package com.thinkbiganalytics.metadata.api.feed.security; /*- * #%L * kylo-operational-metadata-api * %% * Copyright (C) 2017 ThinkBig Analytics * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ import java.security.Principal; import java.util.Set; import com.thinkbiganalytics.metadata.api.feed.Feed; /** * A provider for granting and revoking visibility to feed operations by certain users. */ public interface FeedOpsAccessControlProvider { /** * Grants access to operations of a feed to one or more principals. * @param feedId the feed ID * @param principal a principal * @param more any additional principals */ void grantAccess(Feed.ID feedId, Principal principal, Principal... more); /** * Grants access to operations of a feed to only the one or more principals * specified; revoking access to all others. * @param feedId the feed ID * @param principal a principal * @param more any additional principals */ void grantAccessOnly(Feed.ID feedId, Principal principal, Principal... more); /** * Grants access to operations of a feed to a set of principals. * @param feedId the feed ID * @param principals the principals */ void grantAccess(Feed.ID feedId, Set<Principal> principals); /** * Grants access to operations of a feed to only specified set of principals; * revoking access to all others. * @param feedId the feed ID * @param principals the principals */ void grantAccessOnly(Feed.ID feedId, Set<Principal> principals); /** * Revokes access to operations of a feed for one or more principals. * @param feedId the feed ID * @param principal a principal * @param more any additional principals */ void revokeAccess(Feed.ID feedId, Principal principal, Principal... more); /** * Revokes access to operations of a feed for a set of principals. * @param feedId the feed ID * @param principals the principals */ void revokeAccess(Feed.ID feedId, Set<Principal> principals); /** * Revokes access to operations of all feeds for one or more principals. * @param principal a principal * @param more any additional principals */ void revokeAllAccess(Principal principal, Principal... more); /** * Revokes access to operations of all feeds for a set of principals. * @param principals the principals */ void revokeAllAccess(Set<Principal> principals); /** * Revokes access to operations of a feed for all principals. * @param feedId the feed ID */ void revokeAllAccess(Feed.ID feedId); /** * Returns the set of all principals that have been granted * access to a feed's operations. * @param feedId the feed ID * @return all principals with access */ Set<Principal> getPrincipals(Feed.ID feedId); }