[jboss-cvs] JBossBlog SVN: r303 - in trunk: resources/WEB-INF and 13 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed May 7 10:39:18 EDT 2008


Author: adamw
Date: 2008-05-07 10:39:17 -0400 (Wed, 07 May 2008)
New Revision: 303

Added:
   trunk/src/action/org/jboss/blog/session/security/SecurityUserKeys.java
   trunk/view/security/account.xhtml
Removed:
   trunk/src/model/org/jboss/blog/model/security/RestrictedMode.java
Modified:
   trunk/resources/META-INF/security.drl
   trunk/resources/WEB-INF/pages.xml
   trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
   trunk/src/action/org/jboss/blog/session/feed/dao/AggregatedFeedDao.java
   trunk/src/action/org/jboss/blog/session/feed/dao/FeedDao.java
   trunk/src/action/org/jboss/blog/session/feed/dao/HighlightsFeedDao.java
   trunk/src/action/org/jboss/blog/session/feed/dao/IndividualPostsFeedDao.java
   trunk/src/action/org/jboss/blog/session/feed/dao/RemoteFeedDao.java
   trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedPosts.java
   trunk/src/action/org/jboss/blog/session/security/Authenticator.java
   trunk/src/action/org/jboss/blog/session/security/FeedsIdentity.java
   trunk/src/action/org/jboss/blog/session/security/RestrictedKeyGenerator.java
   trunk/src/action/org/jboss/blog/session/security/tools/FeedSecurityTools.java
   trunk/src/action/org/jboss/blog/session/view/LinkServiceImpl.java
   trunk/src/action/org/jboss/blog/session/xml/velocity/VelocityXmlService.java
   trunk/src/model/org/jboss/blog/model/security/SecurityUser.java
   trunk/src/services/org/jboss/blog/service/FeedsService.java
   trunk/src/shotoku/org/jboss/blog/session/feed/dao/ShotokuFeedDao.java
   trunk/view/layout/template.xhtml
   trunk/view/manage/feed_mod.xhtml
Log:


Modified: trunk/resources/META-INF/security.drl
===================================================================
--- trunk/resources/META-INF/security.drl	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/resources/META-INF/security.drl	2008-05-07 14:39:17 UTC (rev 303)
@@ -179,6 +179,14 @@
   c.grant();
 end;
 
+rule CanViewUserAccount
+when
+  c: PermissionCheck(name == "useraccount", action == "view") and
+  FeedsCombinedRole(role == FeedsSecurityRole.VIEW)
+then
+  c.grant();
+end;
+
 rule CanAddAnyFeed
 when
   c: PermissionCheck(name == "feed", action == "add_any") and

Modified: trunk/resources/WEB-INF/pages.xml
===================================================================
--- trunk/resources/WEB-INF/pages.xml	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/resources/WEB-INF/pages.xml	2008-05-07 14:39:17 UTC (rev 303)
@@ -32,6 +32,8 @@
         </navigation>
     </page>
 
+    <page view-id="/security/account.xhtml" login-required="true" />
+
     <!-- View feeds -->
 
     <page view-id="/home.xhtml" />

Modified: trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -4,7 +4,6 @@
 import org.jboss.blog.model.feed.RestrictedFeed;
 import org.jboss.blog.model.Post;
 import org.jboss.blog.model.RestrictedPost;
-import org.jboss.blog.model.security.RestrictedMode;
 import org.jboss.blog.service.FeedNotFoundException;
 import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.service.PostNotFoundException;
@@ -78,31 +77,29 @@
     }
 
     public List<? extends RestrictedPost> getPosts(RestrictedFeed feed, int from, int to) {
-        RestrictedMode restricted = RestrictedMode.IGNORE;
+        boolean restricted = false;
 
         // We want to get restricted feeds, if we are logged in, the current feed is restricted and
         // we have sufficient permissions to view the feed.
-        if (identity.isLoggedIn() && feed.getRestricted() && FeedSecurityTools.canViewFeed(feed,
-                RestrictedMode.CHECK_AND_INCLUDE)) {
-            restricted = RestrictedMode.CHECK_AND_INCLUDE;
+        if (identity.isLoggedIn() && feed.getRestricted() && FeedSecurityTools.canViewFeed(feed, true)) {
+            restricted = true;
         }
 
         return getPosts(feed, from, to, restricted);
     }
 
-    public List<? extends RestrictedPost> getPosts(RestrictedFeed feed, int from, int to, RestrictedMode restricted) {
+    public List<? extends RestrictedPost> getPosts(RestrictedFeed feed, int from, int to, boolean restricted) {
         boolean isFeedRestricted = feed.getRestricted();
 
         // If the feed isn't restricted, then we set the flag not to include restricted posts.
         if (!isFeedRestricted) {
-            restricted = RestrictedMode.IGNORE;
+            restricted = false;
         }
 
         // We return an empty list if:
         // - we don't want restricted posts, but this feed is restricted
         // - we want restricted posts, this feed is restricted, but we can't view it.
-        if ((restricted == RestrictedMode.IGNORE && isFeedRestricted) ||
-                (restricted != RestrictedMode.IGNORE && isFeedRestricted &&
+        if ((!restricted && isFeedRestricted) || (restricted && isFeedRestricted &&
                         !FeedSecurityTools.canViewFeed(feed, restricted))) {
             log.debug("Reading restricted feed '#0', returning an empty list.", feed.getName());
             return new ArrayList<RestrictedPost>();

Modified: trunk/src/action/org/jboss/blog/session/feed/dao/AggregatedFeedDao.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/dao/AggregatedFeedDao.java	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/src/action/org/jboss/blog/session/feed/dao/AggregatedFeedDao.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -4,7 +4,6 @@
 import org.jboss.blog.model.RestrictedPost;
 import org.jboss.blog.session.feed.posts.AggregatedFeedPosts;
 import org.jboss.blog.session.feed.type.FeedType;
-import org.jboss.blog.model.security.RestrictedMode;
 import org.jboss.seam.Component;
 
 import java.util.List;
@@ -24,7 +23,7 @@
         this.aggregatedFeed = aggregatedFeed;
     }
 
-    public List<? extends RestrictedPost> getPosts(int from, int to, RestrictedMode restricted) {
+    public List<? extends RestrictedPost> getPosts(int from, int to, boolean restricted) {
         return ((AggregatedFeedPosts) Component.getInstance("aggregatedFeedPosts")).getPosts(
                 aggregatedFeed, from, to, restricted);
     }

Modified: trunk/src/action/org/jboss/blog/session/feed/dao/FeedDao.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/dao/FeedDao.java	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/src/action/org/jboss/blog/session/feed/dao/FeedDao.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -2,7 +2,6 @@
 
 import org.jboss.blog.model.RestrictedPost;
 import org.jboss.blog.session.update.UpdateException;
-import org.jboss.blog.model.security.RestrictedMode;
 
 import java.util.List;
 
@@ -10,7 +9,7 @@
  * @author Adam Warski (adam at warski dot org)
  */
 public interface FeedDao {
-    public List<? extends RestrictedPost> getPosts(int from, int to, RestrictedMode restricted);
+    public List<? extends RestrictedPost> getPosts(int from, int to, boolean restricted);
 
     public void update() throws UpdateException;
 }

Modified: trunk/src/action/org/jboss/blog/session/feed/dao/HighlightsFeedDao.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/dao/HighlightsFeedDao.java	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/src/action/org/jboss/blog/session/feed/dao/HighlightsFeedDao.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -6,7 +6,6 @@
 import org.jboss.blog.session.feed.type.FeedType;
 import org.jboss.blog.session.update.UpdateException;
 import org.jboss.blog.session.security.tools.FeedSecurityTools;
-import org.jboss.blog.model.security.RestrictedMode;
 import org.jboss.blog.tools.GeneralTools;
 
 import java.util.List;
@@ -27,7 +26,7 @@
         this.highlightsFeed = highlightsFeed;
     }
 
-    public List<? extends RestrictedPost> getPosts(int from, int to, RestrictedMode restricted) {
+    public List<? extends RestrictedPost> getPosts(int from, int to, boolean restricted) {
         List<Post> posts = GeneralTools.subList(highlightsFeed.getSelectedPosts(), from, to);
         List<Post> ret = new ArrayList<Post>();
 

Modified: trunk/src/action/org/jboss/blog/session/feed/dao/IndividualPostsFeedDao.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/dao/IndividualPostsFeedDao.java	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/src/action/org/jboss/blog/session/feed/dao/IndividualPostsFeedDao.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -6,7 +6,6 @@
 import org.jboss.blog.session.feed.type.FeedType;
 import org.jboss.blog.session.feed.update.IndividualPostsFeedUpdate;
 import org.jboss.blog.session.update.UpdateException;
-import org.jboss.blog.model.security.RestrictedMode;
 import org.jboss.seam.Component;
 
 import java.util.List;
@@ -26,7 +25,7 @@
         this.individualPostsFeed = individualPostsFeed;
     }
 
-    public List<? extends RestrictedPost> getPosts(int from, int to, RestrictedMode restricted) {
+    public List<? extends RestrictedPost> getPosts(int from, int to, boolean restricted) {
         return ((DatabaseFeedPosts) Component.getInstance("databaseFeedPosts")).getPosts(
                 individualPostsFeed, from, to);
     }

Modified: trunk/src/action/org/jboss/blog/session/feed/dao/RemoteFeedDao.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/dao/RemoteFeedDao.java	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/src/action/org/jboss/blog/session/feed/dao/RemoteFeedDao.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -2,7 +2,6 @@
 
 import org.jboss.blog.model.feed.RemoteFeed;
 import org.jboss.blog.model.RestrictedPost;
-import org.jboss.blog.model.security.RestrictedMode;
 import org.jboss.blog.session.feed.posts.DatabaseFeedPosts;
 import org.jboss.blog.session.feed.type.FeedType;
 import org.jboss.blog.session.feed.update.RemoteFeedUpdate;
@@ -26,7 +25,7 @@
         this.remoteFeed = remoteFeed;
     }
 
-    public List<? extends RestrictedPost> getPosts(int from, int to, RestrictedMode restricted) {
+    public List<? extends RestrictedPost> getPosts(int from, int to, boolean restricted) {
         return ((DatabaseFeedPosts) Component.getInstance("databaseFeedPosts")).getPosts(
                 remoteFeed, from, to);
     }

Modified: trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedPosts.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedPosts.java	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedPosts.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -4,7 +4,6 @@
 import org.jboss.blog.model.feed.Feed;
 import org.jboss.blog.model.RestrictedPost;
 import org.jboss.blog.model.Group;
-import org.jboss.blog.model.security.RestrictedMode;
 import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.service.GroupsService;
 import org.jboss.blog.tools.GeneralTools;
@@ -34,7 +33,7 @@
 
     @SuppressWarnings("unchecked")
     public List<? extends RestrictedPost> getPosts(AggregatedFeed aggregatedFeed, int from, int to,
-                                                   RestrictedMode restricted) {
+                                                   boolean restricted) {
         if (aggregatedFeedStack.contains(aggregatedFeed)) {
             return null;
         }
@@ -51,7 +50,7 @@
                 feedsAndFilters.put(feedInGroup, groupFilter);
             }
 
-            if (restricted != RestrictedMode.IGNORE) {
+            if (restricted) {
                 for (Feed feedInGroup : groupsService.restrictedFeeds(group)) {
                     feedsAndFilters.put(feedInGroup, groupFilter);
                 }

Modified: trunk/src/action/org/jboss/blog/session/security/Authenticator.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/Authenticator.java	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/src/action/org/jboss/blog/session/security/Authenticator.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -32,9 +32,11 @@
         
         identity.removeAllFeedsRoles();
 
-        addFeedRolesFromMappings(user.getMappings());
-        for (SecurityGroup securityGroup : externalSecurityService.getGroupsOfUser(user)) {
-            addFeedRolesFromMappings(securityGroup.getMappings());
+        if (user != null) {
+            addFeedRolesFromMappings(user.getMappings());
+            for (SecurityGroup securityGroup : externalSecurityService.getGroupsOfUser(user)) {
+                addFeedRolesFromMappings(securityGroup.getMappings());
+            }
         }
     }
 

Modified: trunk/src/action/org/jboss/blog/session/security/FeedsIdentity.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/FeedsIdentity.java	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/src/action/org/jboss/blog/session/security/FeedsIdentity.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -23,6 +23,10 @@
 @Startup
 @AutoCreate
 public class FeedsIdentity extends RuleBasedIdentity {
+    public FeedsIdentity() {
+        System.out.println("NEW FEEDS IDENTITY");
+    }
+
     private SecurityUser securityUser;
     private boolean pretendedLogin;
 
@@ -127,4 +131,9 @@
 
         addFeedsRole(FeedsSecurityRole.ADMIN);
     }
+
+    public void loginAs(SecurityUser su) {
+        setSecurityUser(su);
+        pretendedLogin = true;
+    }
 }

Modified: trunk/src/action/org/jboss/blog/session/security/RestrictedKeyGenerator.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/RestrictedKeyGenerator.java	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/src/action/org/jboss/blog/session/security/RestrictedKeyGenerator.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -25,7 +25,7 @@
             return false;
         }
         
-        List results = entityManager.createQuery("select f from Feed f where f.restrictedKey = ?1")
+        List results = entityManager.createQuery("select su from SecurityUser su where su.restrictedKey = ?1")
                 .setParameter(1, key).getResultList();
 
         if (results.size() == 0) {

Added: trunk/src/action/org/jboss/blog/session/security/SecurityUserKeys.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/SecurityUserKeys.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/security/SecurityUserKeys.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -0,0 +1,62 @@
+package org.jboss.blog.session.security;
+
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.AutoCreate;
+import org.jboss.seam.ScopeType;
+import org.jboss.blog.tools.StringTools;
+import org.jboss.blog.model.security.SecurityUser;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+ at Name("securityUserKeys")
+ at Scope(ScopeType.STATELESS)
+ at AutoCreate
+public class SecurityUserKeys {
+    @In
+    private FeedsIdentity identity;
+
+    @In
+    private RestrictedKeyGenerator restrictedKeyGenerator;
+
+    @In
+    private EntityManager entityManager;
+
+    public void generateKeyForCurrentUser() {
+        SecurityUser su = identity.getSecurityUser();
+        su = entityManager.merge(su);
+
+        su.setRestrictedKey(restrictedKeyGenerator.generate());        
+        identity.setSecurityUser(su);
+
+        entityManager.flush();
+    }
+
+    public String getKeyOfCurrentUser() {
+        if (identity.getSecurityUser() == null) {
+            return null;
+        }
+
+        if (StringTools.isEmpty(identity.getSecurityUser().getRestrictedKey())) {
+            generateKeyForCurrentUser();
+        }
+
+        return identity.getSecurityUser().getRestrictedKey();
+    }
+
+    public SecurityUser seachForSecurityUserByKey(String key) {
+        try {
+            return (SecurityUser) entityManager
+                    .createQuery("select su from SecurityUser su where su.restrictedKey = ?1")
+                    .setParameter(1, key)
+                    .getSingleResult();
+        } catch (NoResultException e) {
+            return null;
+        }
+    }
+}

Modified: trunk/src/action/org/jboss/blog/session/security/tools/FeedSecurityTools.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/tools/FeedSecurityTools.java	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/src/action/org/jboss/blog/session/security/tools/FeedSecurityTools.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -1,7 +1,6 @@
 package org.jboss.blog.session.security.tools;
 
 import org.jboss.blog.model.feed.RestrictedFeed;
-import org.jboss.blog.model.security.RestrictedMode;
 import org.jboss.seam.security.Identity;
 import org.jboss.seam.Component;
 
@@ -9,19 +8,15 @@
  * @author Adam Warski (adam at warski dot org)
  */
 public class FeedSecurityTools {
-    public static boolean canViewFeed(RestrictedFeed feed, RestrictedMode restricted) {
+    public static boolean canViewFeed(RestrictedFeed feed, boolean restricted) {
         if (!feed.getRestricted()) {
             return true;
         }
 
-        if (restricted == RestrictedMode.IGNORE) {
+        if (!restricted) {
             return false;
         }
 
-        if (restricted == RestrictedMode.INCLUDE) {
-            return true;
-        }
-
         Identity identity = (Identity) Component.getInstance(Identity.class);
         return identity.hasPermission("feed", "view", feed);
     }

Modified: trunk/src/action/org/jboss/blog/session/view/LinkServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/view/LinkServiceImpl.java	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/src/action/org/jboss/blog/session/view/LinkServiceImpl.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -4,9 +4,11 @@
 import org.jboss.blog.model.Post;
 import org.jboss.blog.model.XmlType;
 import org.jboss.blog.service.LinkService;
+import org.jboss.blog.session.security.SecurityUserKeys;
 import org.jboss.seam.annotations.AutoCreate;
 import org.jboss.seam.annotations.Name;
 import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.In;
 import org.jboss.seam.ScopeType;
 
 /**
@@ -16,6 +18,9 @@
 @Scope(ScopeType.STATELESS)
 @Name("linkService")
 public class LinkServiceImpl implements LinkService {
+    @In
+    private SecurityUserKeys securityUserKeys;
+
     private String serverAddress;
     private String contextName;
 
@@ -40,8 +45,7 @@
                 + "?type=" + type.toString().toLowerCase();
         
         if (feed.getRestricted()) {
-            // TODO
-            return "";
+            return base + "&key=" + securityUserKeys.getKeyOfCurrentUser();
         } else {
             return base;
         }

Modified: trunk/src/action/org/jboss/blog/session/xml/velocity/VelocityXmlService.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/xml/velocity/VelocityXmlService.java	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/src/action/org/jboss/blog/session/xml/velocity/VelocityXmlService.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -16,7 +16,10 @@
 import org.jboss.blog.session.xml.velocity.tools.Rss2XmlTools;
 import org.jboss.blog.session.cache.CacheManager;
 import org.jboss.blog.session.tools.PostToToolsBean;
-import org.jboss.blog.model.security.RestrictedMode;
+import org.jboss.blog.session.security.SecurityUserKeys;
+import org.jboss.blog.session.security.FeedsIdentity;
+import org.jboss.blog.session.security.Authenticator;
+import org.jboss.blog.model.security.SecurityUser;
 import org.jboss.blog.tools.GeneralTools;
 import org.jboss.seam.annotations.*;
 import org.jboss.seam.log.Log;
@@ -46,6 +49,15 @@
     @In
     private PostToToolsBean postToTools;
 
+    @In
+    private SecurityUserKeys securityUserKeys;
+
+    @In
+    private Authenticator authenticator;
+
+    @In
+    private FeedsIdentity identity;
+
     @Logger
     private Log log;
 
@@ -88,14 +100,23 @@
             Feed feed = feedsService.getFeed(feedName);
 
             boolean isRestricted = feed.getRestricted();
-            // TODO: key
+            if (isRestricted) {
+                SecurityUser su = securityUserKeys.seachForSecurityUserByKey(feedKey);
 
+                if (su == null) {
+                    throw new FeedNotFoundException();
+                } else {
+                    // "Loggging in" the found user
+                    identity.loginAs(su);
+                    authenticator.flushRoles();
+                }
+            }
+
             if (feed.getTemplates().get(xmlType) == null) {
                 throw new InvalidTemplateTypeException();
             }
 
-            List<? extends RestrictedPost> posts = feedsService.getPosts(feed, 0, feed.getMaxPostsInFeed(),
-                    RestrictedMode.INCLUDE);
+            List<? extends RestrictedPost> posts = feedsService.getPosts(feed, 0, feed.getMaxPostsInFeed(), true);
 
             inCache.setContentType(xmlType.contentType());
             inCache.setCharacterEncoding("utf-8");

Deleted: trunk/src/model/org/jboss/blog/model/security/RestrictedMode.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/security/RestrictedMode.java	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/src/model/org/jboss/blog/model/security/RestrictedMode.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -1,10 +0,0 @@
-package org.jboss.blog.model.security;
-
-/**
- * @author Adam Warski (adam at warski dot org)
- */
-public enum RestrictedMode {
-    CHECK_AND_INCLUDE,
-    INCLUDE,
-    IGNORE
-}

Modified: trunk/src/model/org/jboss/blog/model/security/SecurityUser.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/security/SecurityUser.java	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/src/model/org/jboss/blog/model/security/SecurityUser.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -15,10 +15,11 @@
     @Column(updatable = false)
     private Integer id;
 
-    @Column
     @NotNull
     private String externalId;
 
+    private String restrictedKey;
+
     @ManyToMany(mappedBy = "users")
     private List<SecurityMapping> mappings;
 
@@ -64,6 +65,14 @@
         this.mappings = mappings;
     }
 
+    public String getRestrictedKey() {
+        return restrictedKey;
+    }
+
+    public void setRestrictedKey(String restrictedKey) {
+        this.restrictedKey = restrictedKey;
+    }
+
     public boolean equals(Object o) {
         if (this == o) return true;
         if (!(o instanceof SecurityUser)) return false;

Modified: trunk/src/services/org/jboss/blog/service/FeedsService.java
===================================================================
--- trunk/src/services/org/jboss/blog/service/FeedsService.java	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/src/services/org/jboss/blog/service/FeedsService.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -4,7 +4,6 @@
 import org.jboss.blog.model.feed.RestrictedFeed;
 import org.jboss.blog.model.Post;
 import org.jboss.blog.model.RestrictedPost;
-import org.jboss.blog.model.security.RestrictedMode;
 
 import java.util.List;
 
@@ -23,10 +22,10 @@
      * @param feed Feed of which posts to get.
      * @param from Starting post.
      * @param to Ending post.
-     * @param restricted How restricted posts should be handled.
+     * @param restricted Should restricted posts be included.
      * @return A list of posts of the given feed, of length max. to-from.
      */
-    List<? extends RestrictedPost> getPosts(RestrictedFeed feed, int from, int to, RestrictedMode restricted);
+    List<? extends RestrictedPost> getPosts(RestrictedFeed feed, int from, int to, boolean restricted);
 
     List<? extends RestrictedPost> getPosts(int from, int to);
 }

Modified: trunk/src/shotoku/org/jboss/blog/session/feed/dao/ShotokuFeedDao.java
===================================================================
--- trunk/src/shotoku/org/jboss/blog/session/feed/dao/ShotokuFeedDao.java	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/src/shotoku/org/jboss/blog/session/feed/dao/ShotokuFeedDao.java	2008-05-07 14:39:17 UTC (rev 303)
@@ -1,7 +1,6 @@
 package org.jboss.blog.session.feed.dao;
 
 import org.jboss.blog.model.RestrictedPost;
-import org.jboss.blog.model.security.RestrictedMode;
 import org.jboss.blog.model.shotoku.ShotokuFeed;
 import org.jboss.blog.session.feed.posts.DatabaseFeedPosts;
 import org.jboss.blog.session.feed.type.FeedType;
@@ -26,7 +25,7 @@
         this.shotokuFeed = shotokuFeed;
     }
 
-    public List<? extends RestrictedPost> getPosts(int from, int to, RestrictedMode restricted) {
+    public List<? extends RestrictedPost> getPosts(int from, int to, boolean restricted) {
         return ((DatabaseFeedPosts) Component.getInstance("databaseFeedPosts")).getPosts(
                 shotokuFeed, from, to);
     }

Modified: trunk/view/layout/template.xhtml
===================================================================
--- trunk/view/layout/template.xhtml	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/view/layout/template.xhtml	2008-05-07 14:39:17 UTC (rev 303)
@@ -5,7 +5,8 @@
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
       xmlns:s="http://jboss.com/products/seam/taglib"
-                xmlns:a="http://richfaces.org/a4j">
+      xmlns:mamut="http://mamut.net.pl/jsf"
+      xmlns:a="http://richfaces.org/a4j">
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     <title>JBoss.ORG Feeds</title>
@@ -22,12 +23,22 @@
     <div id="contentcontainer">
         <div id="ORGContent">
             <div id='orgprojectdetailstriple'>
-                <s:fragment rendered="#{identity.hasPermission('management', 'view')}">
-                    <div class="adminlinks">
-                        <s:link view="/home.xhtml" value="Feeds home" propagation="none" />&#160;&#160;&#160;
-                        <s:link view="/manage/index.xhtml" value="Manage home" propagation="none" />
-                    </div>
-                </s:fragment>
+                <mamut:let var="canViewManagement" value="#{identity.hasPermission('management', 'view')}">
+                    <s:fragment rendered="#{canViewManagement}">
+                        <div class="adminlinks">
+                            <s:fragment rendered="#{identity.hasPermission('useraccount', 'view')}">
+                                <s:link view="/security/account.xhtml" value="User account" propagation="none" />&#160;&#160;&#160;
+                            </s:fragment>
+                            <s:link view="/home.xhtml" value="Feeds home" propagation="none" />&#160;&#160;&#160;
+                            <s:link view="/manage/index.xhtml" value="Manage home" propagation="none" />
+                        </div>
+                    </s:fragment>
+                    <s:fragment rendered="#{identity.hasPermission('useraccount', 'view') and !canViewManagement}">
+                        <div class="adminlinks">
+                            <s:link view="/security/account.xhtml" value="User account" propagation="none" />
+                        </div>
+                    </s:fragment>
+                </mamut:let>
 
                 <h3 id="majorsectiontitle" style="margin-bottom: 0"><ui:insert name="header"/></h3>
             </div>

Modified: trunk/view/manage/feed_mod.xhtml
===================================================================
--- trunk/view/manage/feed_mod.xhtml	2008-05-07 11:41:36 UTC (rev 302)
+++ trunk/view/manage/feed_mod.xhtml	2008-05-07 14:39:17 UTC (rev 303)
@@ -146,24 +146,9 @@
     This is a restricted feed, viewable only by authorized users:
 </h:outputLabel>
 <h:panelGroup rendered="#{advanced}">
-    <h:selectBooleanCheckbox id="restricted" value="#{feedMod.feed.restricted}">
-        <a:support event="onclick" reRender="restrictedKeyLabel,restrictedKeyForm" ajaxSingle="true" />
-    </h:selectBooleanCheckbox>
+    <h:selectBooleanCheckbox id="restricted" value="#{feedMod.feed.restricted}" />
 </h:panelGroup>
 
-<h:panelGroup rendered="#{advanced}" id="restrictedKeyLabel">
-    <s:div rendered="#{feedMod.feed.restricted}">
-        Key to view the atom feed:
-    </s:div>
-</h:panelGroup>
-<h:panelGroup rendered="#{advanced}" id="restrictedKeyForm">
-    <s:div rendered="#{feedMod.feed.restricted}">
-        #{feedMod.feed.restrictedKey}&#160;
-        <a:commandLink value="Generate new key" action="#{feedMod.reGenerateFeedKey}" reRender="restrictedKeyForm"
-                       ajaxSingle="true" bypassUpdates="true"/>
-    </s:div>
-</h:panelGroup>
-
 <!--<h:outputLabel><span class="required">*</span> Xml templates:</h:outputLabel>
 <h:panelGroup>
     <h:dataTable var="templateType" value="#{feedMod.templateTypes}">

Added: trunk/view/security/account.xhtml
===================================================================
--- trunk/view/security/account.xhtml	                        (rev 0)
+++ trunk/view/security/account.xhtml	2008-05-07 14:39:17 UTC (rev 303)
@@ -0,0 +1,44 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:s="http://jboss.com/products/seam/taglib"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:rich="http://richfaces.org/rich"
+                template="../layout/template.xhtml">
+    <ui:define name="header">
+        Account for user #{identity.username}
+    </ui:define>
+
+    <ui:define name="body">
+        <div class="TwoColumnBlogSubnav">
+            <h4>Tips</h4>
+            <ul>
+                <li class="last">
+                    The security key is used to view restricted feeds, without the need to log in.
+                    Don't distribute it, or addresses to restricted feeds viewed using this key!
+                </li>
+            </ul>
+        </div>
+
+        <div class="adminforms">
+            <h:form>
+                <h:panelGrid columns="2">
+                    <h:outputLabel for="username">Security key:</h:outputLabel>
+                    <h:inputText id="username" value="#{identity.securityUser.restrictedKey}" disabled="true" />
+                </h:panelGrid>
+
+                <div class="formbuttons">
+                    <ul>
+                        <li>
+                            <h:commandButton value="Re-generate the security key"
+                                             action="#{securityUserKeys.generateKeyForCurrentUser()}"
+                                             styleClass="submit" />
+                        </li>
+                    </ul>
+                </div>
+            </h:form>
+        </div>
+    </ui:define>
+</ui:composition>




More information about the jboss-cvs-commits mailing list