KB49 Add private news feeds.

Change-Id: Ib9488351b9734795e02ddaeb26aa81eeb79c0b4d
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java b/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java
index fc0f76f..3a02e4e 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java
@@ -6,7 +6,6 @@
 import eu.mulk.mulkcms2.benki.users.User;
 import eu.mulk.mulkcms2.benki.users.User_;
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
-import io.quarkus.security.identity.SecurityIdentity;
 import java.time.OffsetDateTime;
 import java.util.ArrayList;
 import java.util.List;
@@ -60,6 +59,7 @@
 
   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "owner", referencedColumnName = "id")
+  @CheckForNull
   @JsonbTransient
   public User owner;
 
@@ -108,7 +108,7 @@
 
   protected static <T extends Post> CriteriaQuery<T> queryViewable(
       Class<T> entityClass,
-      SecurityIdentity readerIdentity,
+      @CheckForNull User reader,
       @CheckForNull User owner,
       @CheckForNull Integer cursor,
       CriteriaBuilder cb,
@@ -118,16 +118,13 @@
     var conditions = new ArrayList<Predicate>();
 
     From<?, T> post;
-    if (readerIdentity.isAnonymous()) {
+    if (reader == null) {
       post = query.from(entityClass);
       var target = post.join(Post_.targets);
       conditions.add(cb.equal(target, Role.getWorld()));
     } else {
-      var userName = readerIdentity.getPrincipal().getName();
-      var user = User.findByNickname(userName);
-
       var root = query.from(User.class);
-      conditions.add(cb.equal(root, user));
+      conditions.add(cb.equal(root, reader));
       if (entityClass.isAssignableFrom(Post.class)) {
         post = (From<?, T>) root.join(User_.visiblePosts);
       } else if (entityClass.isAssignableFrom(Bookmark.class)) {
@@ -189,14 +186,14 @@
   }
 
   public static List<Post> findViewable(
-      PostFilter postFilter, Session session, SecurityIdentity viewer, @CheckForNull User owner) {
+      PostFilter postFilter, Session session, @CheckForNull User viewer, @CheckForNull User owner) {
     return findViewable(postFilter, session, viewer, owner, null, null).posts;
   }
 
   public static PostPage<Post> findViewable(
       PostFilter postFilter,
       Session session,
-      SecurityIdentity viewer,
+      @CheckForNull User viewer,
       @CheckForNull User owner,
       @CheckForNull Integer cursor,
       @CheckForNull Integer count) {
@@ -217,7 +214,7 @@
   protected static <T extends Post> PostPage<T> findViewable(
       Class<? extends T> entityClass,
       Session session,
-      SecurityIdentity viewer,
+      @CheckForNull User viewer,
       @CheckForNull User owner,
       @CheckForNull Integer cursor,
       @CheckForNull Integer count) {