/** * */ package com.thinkbiganalytics.security; /*- * #%L * thinkbig-security-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 com.thinkbiganalytics.security.action.Action; import com.thinkbiganalytics.security.action.AllowedActions; import java.util.Set; /** * Defines the component responsible for making access control checks. Access checks * should be inserted into places before attempting a particular action. Each access check * is made against the context of the current authenticated user executing the code. */ public interface AccessController { /** * The default services module name */ String SERVICES = AllowedActions.SERVICES; /** * Checks whether permission is granted to perform the given action(s) defined in the named module. * * @param moduleName the module name * @param action the action being checked * @param others additional actions that are being checked */ void checkPermission(String moduleName, Action action, Action... others); /** * Checks whether permission is granted to perform the given actions defined in the named module. * * @param moduleName the module name * @param actions the actions being checked */ void checkPermission(String moduleName, Set<Action> actions); /** * Check to see if the user has an service permission for a given module * @param moduleName the service module to check * @param action the permission to check * @param others additional permissions * @return true if valid, false if not */ boolean hasPermission(String moduleName, Action action, Action... others); /** * Returns true if setup to use Entity access control, false if not * @return true if using entity access control, false if not */ boolean isEntityAccessControlled(); }