diff --git a/pom.xml b/pom.xml index a1c6652..8878bfe 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.tilman next-transactions - 1.9.1 + 1.9.2 org.springframework.boot diff --git a/src/main/java/de/tilman/transactions/SpringDataRestCustomization.java b/src/main/java/de/tilman/transactions/SpringDataRestCustomization.java index 23729e2..673bf82 100644 --- a/src/main/java/de/tilman/transactions/SpringDataRestCustomization.java +++ b/src/main/java/de/tilman/transactions/SpringDataRestCustomization.java @@ -7,7 +7,7 @@ import org.springframework.stereotype.Component; import de.tilman.transactions.domain.Account; import de.tilman.transactions.domain.Category; import de.tilman.transactions.domain.Transaction; -import de.tilman.transactions.domain.User; +import de.tilman.transactions.domain.Appuser; @Component public class SpringDataRestCustomization extends RepositoryRestConfigurerAdapter { @@ -15,6 +15,6 @@ public class SpringDataRestCustomization extends RepositoryRestConfigurerAdapter // TODO Ask someone who knows better how to do all of this without exposing the IDs. Parsing URLs can't be the answer. @Override public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { - config.exposeIdsFor(Account.class, Category.class, Transaction.class, User.class); + config.exposeIdsFor(Account.class, Category.class, Transaction.class, Appuser.class); } } diff --git a/src/main/java/de/tilman/transactions/domain/Account.java b/src/main/java/de/tilman/transactions/domain/Account.java index 4e5b02e..da1ed2e 100644 --- a/src/main/java/de/tilman/transactions/domain/Account.java +++ b/src/main/java/de/tilman/transactions/domain/Account.java @@ -21,14 +21,14 @@ public class Account { private String name; @ManyToOne(optional = false) - private User owner; + private Appuser owner; @OneToMany(mappedBy = "account") private List categories; @ManyToMany - @JoinTable(name = "account_user", joinColumns = @JoinColumn(name = "account_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id")) - private List users; + @JoinTable(name = "account_user", joinColumns = @JoinColumn(name = "account_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "appuser_id", referencedColumnName = "id")) + private List appusers; @@ -44,11 +44,11 @@ public class Account { this.name = name; } - public User getOwner() { + public Appuser getOwner() { return owner; } - public void setOwner(User owner) { + public void setOwner(Appuser owner) { this.owner = owner; } @@ -60,12 +60,12 @@ public class Account { this.categories = categories; } - public List getUsers() { - return users; + public List getAppusers() { + return appusers; } - public void setUsers(List users) { - this.users = users; + public void setAppusers(List appusers) { + this.appusers = appusers; } } diff --git a/src/main/java/de/tilman/transactions/domain/User.java b/src/main/java/de/tilman/transactions/domain/Appuser.java similarity index 81% rename from src/main/java/de/tilman/transactions/domain/User.java rename to src/main/java/de/tilman/transactions/domain/Appuser.java index 0d667dd..75f302d 100644 --- a/src/main/java/de/tilman/transactions/domain/User.java +++ b/src/main/java/de/tilman/transactions/domain/Appuser.java @@ -10,7 +10,7 @@ import javax.persistence.JoinTable; import javax.persistence.ManyToMany; @Entity -public class User { +public class Appuser { @Id @GeneratedValue @@ -22,7 +22,7 @@ public class User { private String username; @ManyToMany - @JoinTable(name = "account_user", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "account_id", referencedColumnName = "id")) + @JoinTable(name = "account_user", joinColumns = @JoinColumn(name = "appuser_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "account_id", referencedColumnName = "id")) private List accounts; diff --git a/src/main/java/de/tilman/transactions/domain/Transaction.java b/src/main/java/de/tilman/transactions/domain/Transaction.java index 524bcf9..27f5252 100644 --- a/src/main/java/de/tilman/transactions/domain/Transaction.java +++ b/src/main/java/de/tilman/transactions/domain/Transaction.java @@ -33,7 +33,7 @@ public class Transaction { private String description; @ManyToOne - private User creditor; + private Appuser creditor; @ManyToOne private Account account; @@ -77,11 +77,11 @@ public class Transaction { this.description = description; } - public User getCreditor() { + public Appuser getCreditor() { return creditor; } - public void setCreditor(User creditor) { + public void setCreditor(Appuser creditor) { this.creditor = creditor; } diff --git a/src/main/java/de/tilman/transactions/repository/AccountRepository.java b/src/main/java/de/tilman/transactions/repository/AccountRepository.java index 166ca6e..0f5ddac 100644 --- a/src/main/java/de/tilman/transactions/repository/AccountRepository.java +++ b/src/main/java/de/tilman/transactions/repository/AccountRepository.java @@ -12,7 +12,7 @@ import de.tilman.transactions.domain.Account; public interface AccountRepository extends CrudRepository { // http://localhost:8080/accounts/search/findByUserName?username=betty@mail.com - @Query("SELECT a FROM Account a INNER JOIN a.users u WHERE u.username = :username") + @Query("SELECT a FROM Account a INNER JOIN a.appusers u WHERE u.username = :username") @PreAuthorize("isFullyAuthenticated() && ((#username == principal.username) || hasRole('ROLE_ADMIN'))") // http://stackoverflow.com/q/23640487/3761783 //@PostFilter("filterObject.user.getId() == principal.id") // http://stackoverflow.com/a/30877376/3761783 List findByUserName(@Param("username") String username); diff --git a/src/main/java/de/tilman/transactions/repository/TransactionInlineProjection.java b/src/main/java/de/tilman/transactions/repository/TransactionInlineProjection.java index a9856c0..7eb5b34 100644 --- a/src/main/java/de/tilman/transactions/repository/TransactionInlineProjection.java +++ b/src/main/java/de/tilman/transactions/repository/TransactionInlineProjection.java @@ -7,7 +7,7 @@ import org.springframework.data.rest.core.config.Projection; import de.tilman.transactions.domain.Category; import de.tilman.transactions.domain.Transaction; -import de.tilman.transactions.domain.User; +import de.tilman.transactions.domain.Appuser; /** * @see http://docs.spring.io/spring-data/rest/docs/current/reference/html/#projections-excerpts.excerpting-commonly-accessed-data @@ -21,7 +21,7 @@ public interface TransactionInlineProjection { public Date getLastChange(); public String getDescription(); - public User getCreditor(); + public Appuser getCreditor(); public Category getCategory(); // --> account wird direkt per Parameter gefiltert diff --git a/src/main/java/de/tilman/transactions/repository/UserRepository.java b/src/main/java/de/tilman/transactions/repository/UserRepository.java index 0e1a3fb..c059c42 100644 --- a/src/main/java/de/tilman/transactions/repository/UserRepository.java +++ b/src/main/java/de/tilman/transactions/repository/UserRepository.java @@ -8,27 +8,27 @@ import org.springframework.data.repository.query.Param; import org.springframework.data.rest.core.annotation.RestResource; import org.springframework.security.access.prepost.PreAuthorize; -import de.tilman.transactions.domain.User; +import de.tilman.transactions.domain.Appuser; -public interface UserRepository extends PagingAndSortingRepository { +public interface UserRepository extends PagingAndSortingRepository { @PreAuthorize("isFullyAuthenticated() && ((#username == principal.username) || hasRole('ROLE_ADMIN'))") - @Query("SELECT u FROM User u WHERE u.username = :username") - User findByUsername(@Param("username") String username); + @Query("SELECT u FROM Appuser u WHERE u.username = :username") + Appuser findByUsername(@Param("username") String username); @PreAuthorize("hasRole('ROLE_ADMIN')") @Override - User save(User user); + Appuser save(Appuser user); @PreAuthorize("hasRole('ROLE_ADMIN')") @Override - void delete(User user); + void delete(Appuser user); @Override @PreAuthorize("hasRole('ROLE_ADMIN')") - public Page findAll(Pageable pageable); + public Page findAll(Pageable pageable); @RestResource(exported = false) - User findByName(String name); + Appuser findByName(String name); } \ No newline at end of file