package org.lognavigator.service;
import java.util.Set;
import org.lognavigator.bean.LogAccessConfig;
import org.lognavigator.exception.AuthorizationException;
import org.springframework.security.core.Authentication;
/**
* Service which manages user authorizations to log access configurations
*/
public interface AuthorizationService {
/**
* Check if <code>authenticatedUser</code> is authorized for <code>logAccessConfig</code>, and raises an exception if not
* @param logAccessConfig log access config that user wants to access
* @param authenticatedUser current authenticated user
* @throws AuthorizationException if user is not authorized for <code>logAccessConfig</code>
*/
void checkUserAuthorizationFor(LogAccessConfig logAccessConfig, Authentication authenticatedUser) throws AuthorizationException;
/**
* Filter <code>allLogAccessConfigs</code> set to return only authorized log access configs for <code>authenticatedUser</code>
* @param allLogAccessConfigs complete list of available log access configs
* @param authenticatedUser current authenticated user
* @return only authorized log access configs
*/
Set<LogAccessConfig> getAuthorizedLogAccessConfigs(Set<LogAccessConfig> allLogAccessConfigs, Authentication authenticatedUser);
}