package info.bukova.isspst.security;

import org.springframework.security.access.prepost.PostFilter;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.Authentication;

/**
 * Rozhraní vyhodnocovačů práv.
 * 
 * @author pepa
 *
 */
public interface Evaluator {
	
	/**
	 * Metoda se zavolá pro vyhodnocení práv k danému objektu. Volá ji Spring security
	 * na základě anotace {@link PreAuthorize}, případně {@link PostFilter}.
	 * 
	 * @param authentication		objekt přihlášeného uživatele
	 * @param targetDomainObject	objekt ke kterému se vyhodnocují práva
	 * @param permission			práva potřebná k vykonání anotované metody
	 * @return						true, pokud je dovoleno metodu vykonat
	 */
	public boolean evaluate(Authentication authentication,
			Object targetDomainObject, String permission);

}
