package com.greglturnquist.springagram.backend; import java.util.List; import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import org.springframework.security.access.prepost.PreAuthorize; // tag::top-level[] @PreAuthorize("hasRole('ROLE_USER')") public interface ItemRepository extends PagingAndSortingRepository<Item, Long> { // end::top-level[] List<Item> findByGalleryIsNull(); // tag::save-item[] @Override @PreAuthorize("#item?.user == null or #item?.user?.name == authentication?.name") Item save(@Param("item") Item item); // end::save-item[] @Override @PreAuthorize("#item?.user?.name == authentication?.name or hasRole('ROLE_ADMIN')") void delete(@Param("item") Item item); // tag::delete[] @Override @PreAuthorize("@itemRepository.findOne(#id)?.user?.name == authentication?.name or hasRole('ROLE_ADMIN')") void delete(@Param("id") Long id); // end::delete[] }