package fr.openwide.core.jpa.security.service; import java.util.Collection; import java.util.List; import java.util.concurrent.Callable; import org.springframework.security.acls.model.Permission; import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.context.SecurityContext; import fr.openwide.core.jpa.security.business.person.model.IUser; public interface ISecurityService { boolean hasPermission(Authentication authentication, Permission requirePermission); boolean hasPermission(IUser person, Permission requirePermission); boolean hasPermission(Authentication authentication, Object securedObject, Permission requirePermission); boolean hasPermission(IUser person, Object securedObject, Permission requirePermission); boolean hasRole(Authentication authentication, String role); boolean hasRole(IUser person, String role); boolean hasSystemRole(Authentication authentication); boolean hasSystemRole(IUser person); boolean hasAdminRole(Authentication authentication); boolean hasAdminRole(IUser person); boolean hasAuthenticatedRole(Authentication authentication); boolean hasAuthenticatedRole(IUser person); boolean isAnonymousAuthority(String grantedAuthoritySid); List<GrantedAuthority> getAuthorities(Authentication authentication); List<GrantedAuthority> getAuthorities(IUser person); SecurityContext buildSecureContext(String userName); void clearAuthentication(); <T> T runAsSystem(Callable<T> task); <T> T runAs(Callable<T> task, String userName, String... additionalAuthorities); Collection<? extends Permission> getPermissions(Authentication authentication); boolean isSuperUser(Authentication authentication); }