package com.huixinpn.dionysus.authorize.aspect; import lombok.extern.slf4j.Slf4j; import org.springframework.data.rest.core.annotation.HandleBeforeCreate; import org.springframework.data.rest.core.annotation.HandleBeforeDelete; import org.springframework.data.rest.core.annotation.HandleBeforeLinkDelete; import org.springframework.data.rest.core.annotation.HandleBeforeSave; import org.springframework.data.rest.core.annotation.RepositoryEventHandler; import org.springframework.security.access.prepost.PreAuthorize; import com.huixinpn.dionysus.domain.article.Article; @RepositoryEventHandler(Article.class) @Slf4j public class ArticleEventHandler { @HandleBeforeCreate @PreAuthorize("hasRole('ROLE_ADMIN')") public void checkCreateAuthority(Article article) { log.debug("Creating article {}", article); } @HandleBeforeSave @PreAuthorize("hasRole('ROLE_ADMIN')") public void checkUpdateAuthority(Article article) { log.debug("Updating article {}", article); } @HandleBeforeDelete @PreAuthorize("hasRole('ROLE_ADMIN')") public void checkDeleteAuthority(Article article) { log.debug("Deleting article {}", article); } @HandleBeforeLinkDelete @PreAuthorize("denyAll()") public void deleteCredentialForbidden(Article article) { //deny all, cannot be called } }