[jboss-cvs] JBossBlog SVN: r223 - in trunk: resources/WEB-INF and 8 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Feb 26 11:11:12 EST 2008
Author: adamw
Date: 2008-02-26 11:11:12 -0500 (Tue, 26 Feb 2008)
New Revision: 223
Added:
trunk/src/action/org/jboss/blog/session/security/SecurityObserver.java
trunk/src/action/org/jboss/blog/session/security/SecurityUserConverter.java
trunk/src/model/org/jboss/blog/model/security/RestrictedSecurityUser.java
trunk/view/security/security_user_add.xhtml
Modified:
trunk/resources/WEB-INF/pages.xml
trunk/resources/messages_en.properties
trunk/src/action/org/jboss/blog/session/cache/FeedsChangesObserver.java
trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java
trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java
trunk/src/action/org/jboss/blog/session/feed/mod/RemoteFeedModBean.java
trunk/src/action/org/jboss/blog/session/group/GroupModBean.java
trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java
trunk/src/action/org/jboss/blog/session/security/Authenticator.java
trunk/src/action/org/jboss/blog/session/security/ExternalSecurityService.java
trunk/src/action/org/jboss/blog/session/security/SecurityModBean.java
trunk/src/action/org/jboss/blog/session/view/PostViewBean.java
trunk/src/model/org/jboss/blog/model/security/SecurityMapping.java
trunk/src/model/org/jboss/blog/model/security/SecurityUser.java
trunk/view/security/security_manager.xhtml
Log:
Modified: trunk/resources/WEB-INF/pages.xml
===================================================================
--- trunk/resources/WEB-INF/pages.xml 2008-02-26 13:49:03 UTC (rev 222)
+++ trunk/resources/WEB-INF/pages.xml 2008-02-26 16:11:12 UTC (rev 223)
@@ -290,6 +290,7 @@
<page view-id="/security/security_manager.xhtml">
<param name="securityGroup" converterId="securityGroupConverter" value="#{securityMod.restrictedSecurityGroup}" />
+ <param name="securityUser" converterId="securityUserConverter" value="#{securityMod.restrictedSecurityUser}" />
<param name="group" converterId="groupConverter" value="#{securityMod.group}" />
<param name="feed" converterId="feedConverter" value="#{securityMod.feed}" />
<param name="role" converterId="securityRoleConverter" value="#{securityMod.role}" />
@@ -305,6 +306,16 @@
</navigation>
</page>
+ <page view-id="/security/security_user_add.xhtml">
+ <param name="group" converterId="groupConverter" value="#{securityMod.group}" />
+ <param name="feed" converterId="feedConverter" value="#{securityMod.feed}" />
+ <param name="role" converterId="securityRoleConverter" value="#{securityMod.role}" />
+
+ <navigation from-action="#{securityMod.addSecurityUser}">
+ <redirect view-id="/security/security_manager.xhtml" />
+ </navigation>
+ </page>
+
<!-- Exceptions -->
<exception class="org.jboss.seam.framework.EntityNotFoundException">
Modified: trunk/resources/messages_en.properties
===================================================================
--- trunk/resources/messages_en.properties 2008-02-26 13:49:03 UTC (rev 222)
+++ trunk/resources/messages_en.properties 2008-02-26 16:11:12 UTC (rev 223)
@@ -134,4 +134,13 @@
blog.security.group.group.deleted=Group {0} deleted from administrators of group {1}.
blog.security.group.feed.added=Group {0} added to administrators of feed {1}.
-blog.security.group.feed.deleted=Group {0} deleted from administrators of feed {1}.
\ No newline at end of file
+blog.security.group.feed.deleted=Group {0} deleted from administrators of feed {1}.
+
+blog.security.user.admin.added=User {0} added to administrators.
+blog.security.user.admin.deleted=User {0} deleted from administrators.
+
+blog.security.user.group.added=User {0} added to administrators of group {1}.
+blog.security.user.group.deleted=User {0} deleted from administrators of group {1}.
+
+blog.security.user.feed.added=User {0} added to administrators of feed {1}.
+blog.security.user.feed.deleted=User {0} deleted from administrators of feed {1}.
\ No newline at end of file
Modified: trunk/src/action/org/jboss/blog/session/cache/FeedsChangesObserver.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/cache/FeedsChangesObserver.java 2008-02-26 13:49:03 UTC (rev 222)
+++ trunk/src/action/org/jboss/blog/session/cache/FeedsChangesObserver.java 2008-02-26 16:11:12 UTC (rev 223)
@@ -3,6 +3,8 @@
import org.jboss.seam.annotations.Observer;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.In;
+import org.jboss.blog.model.feed.Feed;
+import org.jboss.blog.model.Post;
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
@@ -13,22 +15,22 @@
private CacheManager cacheManager;
@Observer({"org.jboss.blog.feed.updated", "org.jboss.blog.feed.deleted"})
- public void feedUpdated(String feedName) {
+ public void feedUpdated(Feed feed) {
cacheManager.evictAll();
}
@Observer({"org.jboss.blog.feed.added"})
- public void feedAdded(String feedName) {
+ public void feedAdded(Feed feed) {
cacheManager.evictAll();
}
@Observer({"org.jboss.blog.post.updated", "org.jboss.blog.post.deleted"})
- public void postUpdated(String postTitleAsId, String feedName) {
+ public void postUpdated(Post post) {
cacheManager.evictAll();
}
@Observer("org.jboss.blog.post.added")
- public void postAdded(String postTitleAsId, String feedName) {
+ public void postAdded(Post post) {
cacheManager.evictAll();
}
}
Modified: trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java 2008-02-26 13:49:03 UTC (rev 222)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java 2008-02-26 16:11:12 UTC (rev 223)
@@ -211,6 +211,6 @@
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.aggregated.updated",
getAggregatedFeed().getName());
- Events.instance().raiseEvent("org.jboss.blog.feed.updated", getAggregatedFeed().getName());
+ Events.instance().raiseEvent("org.jboss.blog.feed.updated", getAggregatedFeed());
}
}
Modified: trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java 2008-02-26 13:49:03 UTC (rev 222)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java 2008-02-26 16:11:12 UTC (rev 223)
@@ -102,7 +102,7 @@
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.added", getFeed().getName());
- Events.instance().raiseEvent("org.jboss.blog.feed.added", getFeed().getName());
+ Events.instance().raiseEvent("org.jboss.blog.feed.added", getFeed());
}
@Restrict("#{identity.hasPermission('feed', 'edit', feedMod.feed, feedMod.feed.group)}")
@@ -111,7 +111,7 @@
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.updated", getFeed().getName());
- Events.instance().raiseEvent("org.jboss.blog.feed.updated", getFeed().getName());
+ Events.instance().raiseEvent("org.jboss.blog.feed.updated", getFeed());
}
@Restrict("#{identity.hasPermission('feed', 'delete', feedMod.feed, feedMod.feed.group)}")
@@ -120,6 +120,6 @@
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.deleted", getFeed().getName());
- Events.instance().raiseEvent("org.jboss.blog.feed.deleted", getFeed().getName());
+ Events.instance().raiseEvent("org.jboss.blog.feed.deleted", getFeed());
}
}
Modified: trunk/src/action/org/jboss/blog/session/feed/mod/RemoteFeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/mod/RemoteFeedModBean.java 2008-02-26 13:49:03 UTC (rev 222)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/RemoteFeedModBean.java 2008-02-26 16:11:12 UTC (rev 223)
@@ -139,7 +139,7 @@
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.remote.address.updated",
getRemoteFeed().getName());
- Events.instance().raiseEvent("org.jboss.blog.feed.updated", getRemoteFeed().getName());
+ Events.instance().raiseEvent("org.jboss.blog.feed.updated", getRemoteFeed());
}
@Restrict("#{identity.hasPermission('feed', 'edit', feedMod.feed, feedMod.feed.group)}")
@@ -155,6 +155,6 @@
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.remote.postauthor.updated",
getRemoteFeed().getName());
- Events.instance().raiseEvent("org.jboss.blog.feed.updated", getRemoteFeed().getName());
+ Events.instance().raiseEvent("org.jboss.blog.feed.updated", getRemoteFeed());
}
}
Modified: trunk/src/action/org/jboss/blog/session/group/GroupModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/group/GroupModBean.java 2008-02-26 13:49:03 UTC (rev 222)
+++ trunk/src/action/org/jboss/blog/session/group/GroupModBean.java 2008-02-26 16:11:12 UTC (rev 223)
@@ -4,6 +4,7 @@
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.security.Restrict;
import org.jboss.seam.faces.FacesMessages;
+import org.jboss.seam.core.Events;
import org.jboss.blog.model.Group;
import org.jboss.blog.service.GroupsService;
@@ -45,6 +46,8 @@
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.group.added", group.getDisplayName(),
group.getName());
+
+ Events.instance().raiseEvent("org.jboss.blog.group.added", group);
}
@Restrict("#{identity.hasPermission('group', 'edit', groupMod.group)}")
@@ -53,6 +56,8 @@
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.group.updated", group.getDisplayName(),
group.getName());
+
+ Events.instance().raiseEvent("org.jboss.blog.group.updated", group);
}
@Restrict("#{identity.hasPermission('group', 'delete', groupMod.group)}")
@@ -68,6 +73,8 @@
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.group.deleted", group.getDisplayName(),
group.getName());
+
+ Events.instance().raiseEvent("org.jboss.blog.group.deleted", group);
}
// Marker actions
Modified: trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java 2008-02-26 13:49:03 UTC (rev 222)
+++ trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java 2008-02-26 16:11:12 UTC (rev 223)
@@ -54,7 +54,7 @@
entityManager.flush();
- Events.instance().raiseEvent("org.jboss.blog.post.added", post.getTitleAsId(), feed.getName());
+ Events.instance().raiseEvent("org.jboss.blog.post.added", post);
}
/**
@@ -72,11 +72,10 @@
*
* Also, in case of a title change, the titleAsId is not changed.
*
- * @param feed Feed to which the posts belong
* @param mergeTo Post to which to merge the changes.
* @param mergeFrom Post from which to merge the changes.
*/
- private void mergePosts(Feed feed, Post mergeTo, RestrictedPost mergeFrom) {
+ private void mergePosts(Post mergeTo, RestrictedPost mergeFrom) {
boolean changes = false;
if (!GeneralTools.objectsEqual(mergeTo.getAuthor(), mergeFrom.getAuthor())) {
@@ -119,7 +118,7 @@
entityManager.flush();
- Events.instance().raiseEvent("org.jboss.blog.post.updated", mergeTo.getTitleAsId(), feed.getName());
+ Events.instance().raiseEvent("org.jboss.blog.post.updated", mergeTo);
}
}
@@ -144,7 +143,7 @@
savePost(feed, mergeFrom.getCurrent());
mergeFrom.next();
} else if (compare == 0) {
- mergePosts(feed, feedsService.getPost(mergeTo.getCurrent().getTitleAsId()), mergeFrom.getCurrent());
+ mergePosts(feedsService.getPost(mergeTo.getCurrent().getTitleAsId()), mergeFrom.getCurrent());
mergeFrom.next();
mergeTo.next();
} else {
Modified: trunk/src/action/org/jboss/blog/session/security/Authenticator.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/Authenticator.java 2008-02-26 13:49:03 UTC (rev 222)
+++ trunk/src/action/org/jboss/blog/session/security/Authenticator.java 2008-02-26 16:11:12 UTC (rev 223)
@@ -40,6 +40,7 @@
List<SecurityGroup> securityGroups = externalSecurityService.getGroupsOfUser(user);
+ addFeedRolesFromMappings(user.getMappings());
for (SecurityGroup securityGroup : securityGroups) {
addFeedRolesFromMappings(securityGroup.getMappings());
}
Modified: trunk/src/action/org/jboss/blog/session/security/ExternalSecurityService.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/ExternalSecurityService.java 2008-02-26 13:49:03 UTC (rev 222)
+++ trunk/src/action/org/jboss/blog/session/security/ExternalSecurityService.java 2008-02-26 16:11:12 UTC (rev 223)
@@ -8,6 +8,7 @@
import org.jboss.blog.model.security.SecurityUser;
import org.jboss.blog.model.security.SecurityGroup;
import org.jboss.blog.model.security.RestrictedSecurityGroup;
+import org.jboss.blog.model.security.RestrictedSecurityUser;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
@@ -28,7 +29,7 @@
SecurityUser user = new SecurityUser();
user.setExternalId(Long.parseLong(username));
- return user;
+ return getUnrestrictedSecurityUser(user);
}
public SecurityGroup getUnrestrictedSecurityGroup(RestrictedSecurityGroup securityGroup) {
@@ -50,6 +51,25 @@
}
}
+ public SecurityUser getUnrestrictedSecurityUser(RestrictedSecurityUser securityUser) {
+ try {
+ SecurityUser entitySu = (SecurityUser) entityManager.createQuery(
+ "select su from SecurityUser su where su.externalId = ?1")
+ .setParameter(1, securityUser.getExternalId()).getSingleResult();
+ entitySu.setRealUser(securityUser.getRealUser());
+
+ return entitySu;
+ } catch (NoResultException e) {
+ SecurityUser su = new SecurityUser();
+ su.setExternalId(securityUser.getExternalId());
+ su.setRealUser(securityUser.getRealUser());
+
+ entityManager.persist(su);
+
+ return su;
+ }
+ }
+
public List<RestrictedSecurityGroup> getAllGroups() {
List<RestrictedSecurityGroup> groups = new ArrayList<RestrictedSecurityGroup>();
groups.add(new SecurityGroup("group1", 1l));
@@ -59,6 +79,15 @@
return groups;
}
+ public List<RestrictedSecurityUser> getAllUsers() {
+ List<RestrictedSecurityUser> users = new ArrayList<RestrictedSecurityUser>();
+ users.add(new SecurityUser("1", 1l));
+ users.add(new SecurityUser("2", 2l));
+ users.add(new SecurityUser("2", 3l));
+
+ return users;
+ }
+
public List<SecurityGroup> getGroupsOfUser(SecurityUser securityUser) {
List<SecurityGroup> groups = new ArrayList<SecurityGroup>();
groups.add(getUnrestrictedSecurityGroup(
@@ -67,6 +96,10 @@
return groups;
}
+ public String getDisplayName(RestrictedSecurityUser securityUser) {
+ return securityUser.getExternalId().toString();
+ }
+
public String getDisplayName(RestrictedSecurityGroup securityGroup) {
if (securityGroup.getRealGroup() == null) {
securityGroup.setRealGroup("group" + securityGroup.getExternalId());
Modified: trunk/src/action/org/jboss/blog/session/security/SecurityModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/SecurityModBean.java 2008-02-26 13:49:03 UTC (rev 222)
+++ trunk/src/action/org/jboss/blog/session/security/SecurityModBean.java 2008-02-26 16:11:12 UTC (rev 223)
@@ -33,6 +33,7 @@
private FacesMessages facesMessages;
private RestrictedSecurityGroup restrictedSecurityGroup;
+ private RestrictedSecurityUser restrictedSecurityUser;
private Group group;
private Feed feed;
private FeedsSecurityRole role;
@@ -45,6 +46,14 @@
this.restrictedSecurityGroup = restrictedSecurityGroup;
}
+ public RestrictedSecurityUser getRestrictedSecurityUser() {
+ return restrictedSecurityUser;
+ }
+
+ public void setRestrictedSecurityUser(RestrictedSecurityUser restrictedSecurityUser) {
+ this.restrictedSecurityUser = restrictedSecurityUser;
+ }
+
public Group getGroup() {
return group;
}
@@ -103,6 +112,18 @@
return getMapping(FeedsSecurityRole.FEED_ADMIN, feed.getId()).getGroups();
}
+ public List<SecurityUser> getAdministratorUsers() {
+ return getMapping(FeedsSecurityRole.ADMIN, null).getUsers();
+ }
+
+ public List<SecurityUser> getGroupAdministratorUsers(Group group) {
+ return getMapping(FeedsSecurityRole.GROUP_ADMIN, group.getId()).getUsers();
+ }
+
+ public List<SecurityUser> getFeedAdministratorUsers(Feed feed) {
+ return getMapping(FeedsSecurityRole.FEED_ADMIN, feed.getId()).getUsers();
+ }
+
private SecurityMapping getMapping() {
Integer idForRole;
@@ -154,4 +175,44 @@
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, bundleId,
externalSecurityService.getDisplayName(sg), param);
}
+
+ public void addSecurityUser() {
+ SecurityUser su = externalSecurityService.getUnrestrictedSecurityUser(getRestrictedSecurityUser());
+ SecurityMapping mapping = getMapping();
+
+ if (!mapping.getUsers().contains(su)) {
+ mapping.getUsers().add(su);
+ }
+
+ String bundleId;
+ Object param = null;
+ switch (getRole()) {
+ case ADMIN: bundleId = "blog.security.user.admin.added"; break;
+ case GROUP_ADMIN: bundleId = "blog.security.user.group.added"; param = getGroup().getDisplayName(); break;
+ case FEED_ADMIN: bundleId = "blog.security.user.feed.added"; param = getFeed().getName(); break;
+ default: return;
+ }
+
+ facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, bundleId,
+ externalSecurityService.getDisplayName(su), param);
+ }
+
+ public void deleteSecurityUser() {
+ SecurityUser su = externalSecurityService.getUnrestrictedSecurityUser(getRestrictedSecurityUser());
+ SecurityMapping mapping = getMapping();
+
+ mapping.getUsers().remove(su);
+
+ String bundleId;
+ Object param = null;
+ switch (getRole()) {
+ case ADMIN: bundleId = "blog.security.user.admin.deleted"; break;
+ case GROUP_ADMIN: bundleId = "blog.security.user.group.deleted"; param = getGroup().getDisplayName(); break;
+ case FEED_ADMIN: bundleId = "blog.security.user.feed.deleted"; param = getFeed().getName(); break;
+ default: return;
+ }
+
+ facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, bundleId,
+ externalSecurityService.getDisplayName(su), param);
+ }
}
Added: trunk/src/action/org/jboss/blog/session/security/SecurityObserver.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/SecurityObserver.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/security/SecurityObserver.java 2008-02-26 16:11:12 UTC (rev 223)
@@ -0,0 +1,52 @@
+package org.jboss.blog.session.security;
+
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Observer;
+import org.jboss.seam.annotations.In;
+import org.jboss.blog.model.Group;
+import org.jboss.blog.model.feed.Feed;
+import org.jboss.blog.model.security.FeedsSecurityRole;
+
+import javax.persistence.EntityManager;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("securityObserver")
+public class SecurityObserver {
+ @In
+ private FeedsIdentity identity;
+
+ @In
+ private EntityManager entityManager;
+
+ @Observer({"org.jboss.blog.group.updated"})
+ public void groupUpdated(Group group) { }
+
+ @Observer({"org.jboss.blog.group.added"})
+ public void groupAdded(Group group) {
+
+ }
+
+ @Observer({"org.jboss.blog.group.deleted"})
+ public void groupDeleted(Group group) {
+ entityManager.createQuery("delete from SecurityMapping sm where sm.idForRole = ?1 and sm.role = ?2")
+ .setParameter(1, group.getId()).setParameter(2, FeedsSecurityRole.GROUP_ADMIN)
+ .executeUpdate();
+ }
+
+ @Observer({"org.jboss.blog.feed.updated"})
+ public void feedUpdated(Feed feed) { }
+
+ @Observer({"org.jboss.blog.feed.added"})
+ public void feedAdded(Feed feed) {
+
+ }
+
+ @Observer({"org.jboss.blog.feed.deleted"})
+ public void feedDeleted(Feed feed) {
+ entityManager.createQuery("delete from SecurityMapping sm where sm.idForRole = ?1 and sm.role = ?2")
+ .setParameter(1, feed.getId()).setParameter(2, FeedsSecurityRole.FEED_ADMIN)
+ .executeUpdate();
+ }
+}
Copied: trunk/src/action/org/jboss/blog/session/security/SecurityUserConverter.java (from rev 221, trunk/src/action/org/jboss/blog/session/security/SecurityGroupConverter.java)
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/SecurityUserConverter.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/security/SecurityUserConverter.java 2008-02-26 16:11:12 UTC (rev 223)
@@ -0,0 +1,28 @@
+package org.jboss.blog.session.security;
+
+import org.jboss.blog.model.security.SecurityUser;
+import org.jboss.blog.model.security.RestrictedSecurityUser;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Transactional;
+import org.jboss.seam.annotations.faces.Converter;
+import org.jboss.seam.annotations.intercept.BypassInterceptors;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("securityUserConverter")
+ at BypassInterceptors
+ at Converter
+public class SecurityUserConverter implements javax.faces.convert.Converter {
+ @Transactional
+ public Object getAsObject(FacesContext context, UIComponent cmp, String value) {
+ return new SecurityUser(null, Long.parseLong(value));
+ }
+
+ public String getAsString(FacesContext context, UIComponent cmp, Object value) {
+ return ((RestrictedSecurityUser) value).getExternalId().toString();
+ }
+}
\ No newline at end of file
Modified: trunk/src/action/org/jboss/blog/session/view/PostViewBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/view/PostViewBean.java 2008-02-26 13:49:03 UTC (rev 222)
+++ trunk/src/action/org/jboss/blog/session/view/PostViewBean.java 2008-02-26 16:11:12 UTC (rev 223)
@@ -39,7 +39,6 @@
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.post.deleted", post.getTitle());
- Events.instance().raiseEvent("org.jboss.blog.post.deleted", post.getTitleAsId(),
- post.getFeed().getName());
+ Events.instance().raiseEvent("org.jboss.blog.post.deleted", post);
}
}
Added: trunk/src/model/org/jboss/blog/model/security/RestrictedSecurityUser.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/security/RestrictedSecurityUser.java (rev 0)
+++ trunk/src/model/org/jboss/blog/model/security/RestrictedSecurityUser.java 2008-02-26 16:11:12 UTC (rev 223)
@@ -0,0 +1,12 @@
+package org.jboss.blog.model.security;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public interface RestrictedSecurityUser {
+ Long getExternalId();
+
+ Object getRealUser();
+
+ void setRealUser(Object realUser);
+}
Modified: trunk/src/model/org/jboss/blog/model/security/SecurityMapping.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/security/SecurityMapping.java 2008-02-26 13:49:03 UTC (rev 222)
+++ trunk/src/model/org/jboss/blog/model/security/SecurityMapping.java 2008-02-26 16:11:12 UTC (rev 223)
@@ -26,6 +26,9 @@
@ManyToMany
private List<SecurityGroup> groups;
+ @ManyToMany
+ private List<SecurityUser> users;
+
public Integer getId() {
return id;
}
@@ -58,6 +61,14 @@
this.groups = groups;
}
+ public List<SecurityUser> getUsers() {
+ return users;
+ }
+
+ public void setUsers(List<SecurityUser> users) {
+ this.users = users;
+ }
+
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof SecurityMapping)) return false;
Modified: trunk/src/model/org/jboss/blog/model/security/SecurityUser.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/security/SecurityUser.java 2008-02-26 13:49:03 UTC (rev 222)
+++ trunk/src/model/org/jboss/blog/model/security/SecurityUser.java 2008-02-26 16:11:12 UTC (rev 223)
@@ -3,12 +3,13 @@
import org.hibernate.validator.NotNull;
import javax.persistence.*;
+import java.util.List;
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
@Entity
-public class SecurityUser {
+public class SecurityUser implements RestrictedSecurityUser {
@Id
@GeneratedValue
@Column(updatable = false)
@@ -18,6 +19,19 @@
@NotNull
private Long externalId;
+ @ManyToMany(mappedBy = "users")
+ private List<SecurityMapping> mappings;
+
+ @Transient
+ private Object realUser;
+
+ public SecurityUser() { }
+
+ public SecurityUser(Object realUser, Long externalId) {
+ this.externalId = externalId;
+ this.realUser = realUser;
+ }
+
public Integer getId() {
return id;
}
@@ -34,6 +48,22 @@
this.externalId = externalId;
}
+ public Object getRealUser() {
+ return realUser;
+ }
+
+ public void setRealUser(Object realUser) {
+ this.realUser = realUser;
+ }
+
+ public List<SecurityMapping> getMappings() {
+ return mappings;
+ }
+
+ public void setMappings(List<SecurityMapping> mappings) {
+ this.mappings = mappings;
+ }
+
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof SecurityUser)) return false;
Modified: trunk/view/security/security_manager.xhtml
===================================================================
--- trunk/view/security/security_manager.xhtml 2008-02-26 13:49:03 UTC (rev 222)
+++ trunk/view/security/security_manager.xhtml 2008-02-26 16:11:12 UTC (rev 223)
@@ -8,44 +8,120 @@
xmlns:rich="http://richfaces.org/rich"
xmlns:a="http://richfaces.org/a4j"
template="../layout/template.xhtml">
- <ui:define name="header">
- Security manager
- </ui:define>
- <ui:define name="body">
- <h3>Administrators:</h3>
+<ui:define name="header">
+ Security manager
+</ui:define>
+<ui:define name="body">
+<h3>Administrators:</h3>
- <ul>
- <ui:repeat var="securityGroup" value="#{securityMod.administratorGroups}">
- <li>
- #{externalSecurityService.getDisplayName(securityGroup)}
- (
- <s:link value="delete" action="#{securityMod.deleteSecurityGroup}">
- <f:param name="role" value="ADMIN" />
- <f:param name="securityGroup" value="#{securityGroup.externalId}" />
- </s:link>
- )
- </li>
- </ui:repeat>
- </ul>
+<table cellspacing="5" class="deftable" width="75%">
+ <tr>
+ <td class="term" width="15%" />
+ <td class="def">
+ <ul>
+ <ui:repeat var="securityGroup" value="#{securityMod.administratorGroups}">
+ <li>
+ #{externalSecurityService.getDisplayName(securityGroup)}
+ (
+ <s:link value="delete" action="#{securityMod.deleteSecurityGroup}">
+ <f:param name="role" value="ADMIN" />
+ <f:param name="securityGroup" value="#{securityGroup.externalId}" />
+ </s:link>
+ )
+ </li>
+ </ui:repeat>
- <s:link value="Add group" view="/security/security_group_add.xhtml">
- <f:param name="role" value="ADMIN" />
- </s:link>
+ <s:link value="Add group" view="/security/security_group_add.xhtml">
+ <f:param name="role" value="ADMIN" />
+ </s:link>
+ </ul>
+ </td>
+ <td class="def">
+ <ul>
+ <ui:repeat var="securityUser" value="#{securityMod.administratorUsers}">
+ <li>
+ #{externalSecurityService.getDisplayName(securityUser)}
+ (
+ <s:link value="delete" action="#{securityMod.deleteSecurityUser}">
+ <f:param name="role" value="ADMIN" />
+ <f:param name="securityUser" value="#{securityUser.externalId}" />
+ </s:link>
+ )
+ </li>
+ </ui:repeat>
- <h3>Feed groups administrators:</h3>
+ <s:link value="Add user" view="/security/security_user_add.xhtml">
+ <f:param name="role" value="ADMIN" />
+ </s:link>
+ </ul>
+ </td>
+ </tr>
+</table>
+<h3>Feed groups administrators:</h3>
+<table cellspacing="5" class="deftable" width="75%">
+ <ui:repeat var="group" value="#{groupsService.allGroups}">
+ <tr>
+ <td class="term" width="15%">#{group.displayName}</td>
+ <td class="def">
+ <ui:repeat var="securityGroup" value="#{securityMod.getGroupAdministratorGroups(group)}">
+ <li>
+ #{externalSecurityService.getDisplayName(securityGroup)}
+ (
+ <s:link value="delete" action="#{securityMod.deleteSecurityGroup}">
+ <f:param name="role" value="GROUP_ADMIN" />
+ <f:param name="group" value="#{group.id}" />
+ <f:param name="securityGroup" value="#{securityGroup.externalId}" />
+ </s:link>
+ )
+ </li>
+ </ui:repeat>
+
+ <s:link value="Add group" view="/security/security_group_add.xhtml">
+ <f:param name="role" value="GROUP_ADMIN" />
+ <f:param name="group" value="#{group.id}" />
+ </s:link>
+ </td>
+ <td class="def">
+ <ui:repeat var="securityUser" value="#{securityMod.getGroupAdministratorUsers(group)}">
+ <li>
+ #{externalSecurityService.getDisplayName(securityUser)}
+ (
+ <s:link value="delete" action="#{securityMod.deleteSecurityUser}">
+ <f:param name="role" value="GROUP_ADMIN" />
+ <f:param name="group" value="#{group.id}" />
+ <f:param name="securityUser" value="#{securityUser.externalId}" />
+ </s:link>
+ )
+ </li>
+ </ui:repeat>
+
+ <s:link value="Add user" view="/security/security_user_add.xhtml">
+ <f:param name="role" value="GROUP_ADMIN" />
+ <f:param name="group" value="#{group.id}" />
+ </s:link>
+ </td>
+ </tr>
+ </ui:repeat>
+</table>
+
+<h3>Feed administrators:</h3>
+
+<ui:repeat var="group" value="#{groupsService.allGroups}">
+ <s:fragment rendered="#{groupsService.acceptedFeeds(group).size() > 0}">
+ #{group.displayName}:
<table cellspacing="5" class="deftable" width="75%">
- <ui:repeat var="group" value="#{groupsService.allGroups}">
+ <ui:repeat var="feed" value="#{groupsService.acceptedFeeds(group)}">
<tr>
- <td class="term" width="15%">#{group.displayName}</td>
+ <td class="term" width="15%">#{feed.name}</td>
<td class="def">
- <ui:repeat var="securityGroup" value="#{securityMod.getGroupAdministratorGroups(group)}">
+ <ui:repeat var="securityGroup" value="#{securityMod.getFeedAdministratorGroups(feed)}">
<li>
#{externalSecurityService.getDisplayName(securityGroup)}
(
<s:link value="delete" action="#{securityMod.deleteSecurityGroup}">
- <f:param name="role" value="GROUP_ADMIN" />
- <f:param name="group" value="#{group.id}" />
+ <f:param name="role" value="FEED_ADMIN" />
+ <f:param name="feed" value="#{feed.name}" />
<f:param name="securityGroup" value="#{securityGroup.externalId}" />
</s:link>
)
@@ -53,46 +129,33 @@
</ui:repeat>
<s:link value="Add group" view="/security/security_group_add.xhtml">
- <f:param name="role" value="GROUP_ADMIN" />
- <f:param name="group" value="#{group.id}" />
+ <f:param name="role" value="FEED_ADMIN" />
+ <f:param name="feed" value="#{feed.name}" />
</s:link>
</td>
+ <td class="def">
+ <ui:repeat var="securityUser" value="#{securityMod.getFeedAdministratorUsers(feed)}">
+ <li>
+ #{externalSecurityService.getDisplayName(securityUser)}
+ (
+ <s:link value="delete" action="#{securityMod.deleteSecurityUser}">
+ <f:param name="role" value="FEED_ADMIN" />
+ <f:param name="feed" value="#{feed.name}" />
+ <f:param name="securityUser" value="#{securityUser.externalId}" />
+ </s:link>
+ )
+ </li>
+ </ui:repeat>
+
+ <s:link value="Add user" view="/security/security_user_add.xhtml">
+ <f:param name="role" value="FEED_ADMIN" />
+ <f:param name="feed" value="#{feed.name}" />
+ </s:link>
+ </td>
</tr>
</ui:repeat>
</table>
-
- <h3>Feed administrators:</h3>
-
- <ui:repeat var="group" value="#{groupsService.allGroups}">
- <s:fragment rendered="#{groupsService.acceptedFeeds(group).size() > 0}">
- #{group.displayName}:
- <table cellspacing="5" class="deftable" width="75%">
- <ui:repeat var="feed" value="#{groupsService.acceptedFeeds(group)}">
- <tr>
- <td class="term" width="15%">#{feed.name}</td>
- <td class="def">
- <ui:repeat var="securityGroup" value="#{securityMod.getFeedAdministratorGroups(feed)}">
- <li>
- #{externalSecurityService.getDisplayName(securityGroup)}
- (
- <s:link value="delete" action="#{securityMod.deleteSecurityGroup}">
- <f:param name="role" value="FEED_ADMIN" />
- <f:param name="feed" value="#{feed.name}" />
- <f:param name="securityGroup" value="#{securityGroup.externalId}" />
- </s:link>
- )
- </li>
- </ui:repeat>
-
- <s:link value="Add group" view="/security/security_group_add.xhtml">
- <f:param name="role" value="FEED_ADMIN" />
- <f:param name="feed" value="#{feed.name}" />
- </s:link>
- </td>
- </tr>
- </ui:repeat>
- </table>
- </s:fragment>
- </ui:repeat>
- </ui:define>
+ </s:fragment>
+</ui:repeat>
+</ui:define>
</ui:composition>
Copied: trunk/view/security/security_user_add.xhtml (from rev 222, trunk/view/security/security_group_add.xhtml)
===================================================================
--- trunk/view/security/security_user_add.xhtml (rev 0)
+++ trunk/view/security/security_user_add.xhtml 2008-02-26 16:11:12 UTC (rev 223)
@@ -0,0 +1,39 @@
+<!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"
+ xmlns:a="http://richfaces.org/a4j"
+ template="../layout/template.xhtml">
+ <ui:define name="header">
+ Select user to add:
+ </ui:define>
+ <ui:define name="body">
+ <h:form>
+ <div class="adminforms">
+ <br />
+ <h:panelGrid columns="1">
+ <h:selectOneListbox required="true" value="#{securityMod.restrictedSecurityUser}"
+ converter="securityUserConverter">
+ <s:selectItems var="user" value="#{externalSecurityService.allUsers}"
+ label="#{externalSecurityService.getDisplayName(user)}" />
+ </h:selectOneListbox>
+ </h:panelGrid>
+
+ <div class="formbuttons">
+ <ul>
+ <li>
+ <h:commandButton value="Add" styleClass="submit" action="#{securityMod.addSecurityUser}" />
+ </li>
+ <li>
+ <s:button value="Cancel" view="/security/security_manager.xhtml" styleClass="submit" />
+ </li>
+ </ul>
+ </div>
+ </div>
+ </h:form>
+ </ui:define>
+</ui:composition>
More information about the jboss-cvs-commits
mailing list