Author: chathura
Date: Mon Jan 7 03:08:57 2008
New Revision: 11948
Log:
Added authorizations for tagging, commenting, rating and versioning actions.
Users should have GET permission to tag, rate, comment or browse versions of
resources.
Users should have OUT permission to restore resources to old versions.
Modified:
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/realm/RegistryAccessControlAdmin.java
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/realm/RegistryUserStoreAdmin.java
trunk/registry/modules/core/src/main/java/org/wso2/registry/secure/SecureRegistry.java
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/RemoveRoleAction.java
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/RemoveUserAction.java
trunk/registry/modules/webapps/src/main/webapp/admin/user.jsp
Modified:
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/realm/RegistryAccessControlAdmin.java
==============================================================================
---
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/realm/RegistryAccessControlAdmin.java
(original)
+++
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/realm/RegistryAccessControlAdmin.java
Mon Jan 7 03:08:57 2008
@@ -35,7 +35,7 @@
userName.equals(RegistryConstants.ADMIN_USER)) {
String msg = "Could not change authorizations of the system
defined user: " + userName;
- throw new UserManagerException(msg);
+ throw new UserManagerException(msg, false);
}
super.clearUserAuthorization(userName, resourceId, action);
@@ -48,7 +48,7 @@
userName.equals(RegistryConstants.ADMIN_USER)) {
String msg = "Could not change authorizations of the system
defined user: " + userName;
- throw new UserManagerException(msg);
+ throw new UserManagerException(msg, false);
}
super.denyUser(userName, resourceId, action);
@@ -61,7 +61,7 @@
if (roleName.equals(RegistryConstants.ADMIN_ROLE)) {
String msg = "Could not change authorizations of the system
defined role: " + roleName;
- throw new UserManagerException(msg);
+ throw new UserManagerException(msg, false);
}
super.clearRoleAuthorization(roleName, resourceId, action);
@@ -74,7 +74,7 @@
if (roleName.equals(RegistryConstants.ADMIN_ROLE)) {
String msg = "Could not change authorizations of the system
defined role: " + roleName;
- throw new UserManagerException(msg);
+ throw new UserManagerException(msg, false);
}
super.denyRole(roleName, resourceId, action);
Modified:
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/realm/RegistryUserStoreAdmin.java
==============================================================================
---
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/realm/RegistryUserStoreAdmin.java
(original)
+++
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/realm/RegistryUserStoreAdmin.java
Mon Jan 7 03:08:57 2008
@@ -41,7 +41,7 @@
userName.equals(RegistryConstants.ANONYMOUS_USER)) {
String msg = "Could not remove the system defined user: " +
userName;
- throw new UserManagerException(msg);
+ throw new UserManagerException(msg, false);
}
super.deleteUser(userName);
@@ -54,9 +54,22 @@
roleName.equals(RegistryConstants.EVERYONE_ROLE)) {
String msg = "Could not remove the system defined role: " +
roleName;
- throw new UserManagerException(msg);
+ throw new UserManagerException(msg, false);
}
super.deleteRole(roleName);
}
+
+
+ public void removeUserFromRole(String userName, String roleName) throws
UserManagerException {
+
+ if (roleName.equals(RegistryConstants.EVERYONE_ROLE)) {
+
+ String msg = "Could not remove the everyone role from the user: " +
+ userName + ". All users belong to the everyone role.";
+ throw new UserManagerException(msg, false);
+ }
+
+ super.removeUserFromRole(userName, roleName);
+ }
}
Modified:
trunk/registry/modules/core/src/main/java/org/wso2/registry/secure/SecureRegistry.java
==============================================================================
---
trunk/registry/modules/core/src/main/java/org/wso2/registry/secure/SecureRegistry.java
(original)
+++
trunk/registry/modules/core/src/main/java/org/wso2/registry/secure/SecureRegistry.java
Mon Jan 7 03:08:57 2008
@@ -165,9 +165,32 @@
return registry.get(path);
}
- public boolean resourceExists(String path) throws RegistryException {
+ public boolean resourceExists(String resourcePath) throws
RegistryException {
+
+ // if the user has permission to the current version, he will get
permission to all
+ // previous versions of the same resource
+ String authorizationPath = resourcePath;
+ if (resourcePath.indexOf("?") > 0) {
+ authorizationPath = resourcePath.split("\\?")[0];
+ } else if (resourcePath.indexOf(";")>0) {
+ authorizationPath = resourcePath.split("\\;")[0];
+ }
+
+ try {
+ if (!authorizer.isUserAuthorized(userID, authorizationPath,
ActionConstants.GET)) {
+ String msg = "User: " + userID + " is not authorized to check
the existence of the resource: " +
+ authorizationPath;
+ log.info(msg);
+ throw new AuthorizationFailedException(msg);
+ }
+ } catch (UserManagerException e) {
+ String msg = "Could not check authorization. \nCaused by " +
e.getMessage();
+ log.error(msg, e);
+ throw new RegistryException(msg);
+ }
+
User.setCurrentUser(userID);
- return registry.resourceExists(path);
+ return registry.resourceExists(resourcePath);
}
/**
@@ -264,23 +287,86 @@
}
- public String[] getVersions(String path) throws RegistryException {
+ public String[] getVersions(String resourcePath) throws RegistryException {
+
+ // if the user has permission to the current version, he will get
permission to all
+ // previous versions of the same resource
+ String authorizationPath = resourcePath;
+ if (resourcePath.indexOf("?") > 0) {
+ authorizationPath = resourcePath.split("\\?")[0];
+ } else if (resourcePath.indexOf(";")>0) {
+ authorizationPath = resourcePath.split("\\;")[0];
+ }
- // TODO: check authorizations
+ try {
+ if (!authorizer.isUserAuthorized(userID, authorizationPath,
ActionConstants.GET)) {
+ String msg = "User: " + userID + " is not authorized to get
versions of the resource: " +
+ authorizationPath;
+ log.info(msg);
+ throw new AuthorizationFailedException(msg);
+ }
+ } catch (UserManagerException e) {
+ String msg = "Could not check authorization. \nCaused by " +
e.getMessage();
+ log.error(msg, e);
+ throw new RegistryException(msg);
+ }
User.setCurrentUser(userID);
- return registry.getVersions(path);
+ return registry.getVersions(resourcePath);
}
public void restoreVersion(String versionPath) throws RegistryException {
- // TODO: check authorizations
+ // if the user has permission to the current version, he will get
permission to all
+ // previous versions of the same resource
+ String authorizationPath = versionPath;
+ if (versionPath.indexOf("?") > 0) {
+ authorizationPath = versionPath.split("\\?")[0];
+ } else if (versionPath.indexOf(";")>0) {
+ authorizationPath = versionPath.split("\\;")[0];
+ }
+
+ try {
+ if (!authorizer.isUserAuthorized(userID, authorizationPath,
ActionConstants.PUT)) {
+ String msg = "User: " + userID + " is not authorized to
restore the resource: " +
+ authorizationPath;
+ log.info(msg);
+ throw new AuthorizationFailedException(msg);
+ }
+ } catch (UserManagerException e) {
+ String msg = "Could not check authorization. \nCaused by " +
e.getMessage();
+ log.error(msg, e);
+ throw new RegistryException(msg);
+ }
User.setCurrentUser(userID);
registry.restoreVersion(versionPath);
}
public void applyTag(String resourcePath, String tag) throws
RegistryException {
+
+ // if the user has permission to the current version, he will get
permission to all
+ // previous versions of the same resource
+ String authorizationPath = resourcePath;
+ if (resourcePath.indexOf("?") > 0) {
+ authorizationPath = resourcePath.split("\\?")[0];
+ } else if (resourcePath.indexOf(";")>0) {
+ authorizationPath = resourcePath.split("\\;")[0];
+ }
+
+ try {
+ if (!authorizer.isUserAuthorized(userID, authorizationPath,
ActionConstants.GET)) {
+ String msg = "User: " + userID + " is not authorized to tag on
the resource: " +
+ authorizationPath;
+ log.info(msg);
+ throw new AuthorizationFailedException(msg);
+ }
+ } catch (UserManagerException e) {
+ String msg = "Could not check authorization. \nCaused by " +
e.getMessage();
+ log.error(msg, e);
+ throw new RegistryException(msg);
+ }
+
User.setCurrentUser(userID);
registry.applyTag(resourcePath, tag);
}
@@ -291,16 +377,85 @@
}
public Tag[] getTags(String resourcePath) throws RegistryException {
+
+ // if the user has permission to the current version, he will get
permission to all
+ // previous versions of the same resource
+ String authorizationPath = resourcePath;
+ if (resourcePath.indexOf("?") > 0) {
+ authorizationPath = resourcePath.split("\\?")[0];
+ } else if (resourcePath.indexOf(";")>0) {
+ authorizationPath = resourcePath.split("\\;")[0];
+ }
+
+ try {
+ if (!authorizer.isUserAuthorized(userID, authorizationPath,
ActionConstants.GET)) {
+ String msg = "User: " + userID + " is not authorized to get
tags of the resource: " +
+ authorizationPath;
+ log.info(msg);
+ throw new AuthorizationFailedException(msg);
+ }
+ } catch (UserManagerException e) {
+ String msg = "Could not check authorization. \nCaused by " +
e.getMessage();
+ log.error(msg, e);
+ throw new RegistryException(msg);
+ }
+
User.setCurrentUser(userID);
return registry.getTags(resourcePath);
}
- public void removeTag(String path, String tag) throws RegistryException {
+ public void removeTag(String resourcePath, String tag) throws
RegistryException {
+
+ // if the user has permission to the current version, he will get
permission to all
+ // previous versions of the same resource
+ String authorizationPath = resourcePath;
+ if (resourcePath.indexOf("?") > 0) {
+ authorizationPath = resourcePath.split("\\?")[0];
+ } else if (resourcePath.indexOf(";")>0) {
+ authorizationPath = resourcePath.split("\\;")[0];
+ }
+
+ try {
+ if (!authorizer.isUserAuthorized(userID, authorizationPath,
ActionConstants.GET)) {
+ String msg = "User: " + userID + " is not authorized to remove
tags of the resource: " +
+ authorizationPath;
+ log.info(msg);
+ throw new AuthorizationFailedException(msg);
+ }
+ } catch (UserManagerException e) {
+ String msg = "Could not check authorization. \nCaused by " +
e.getMessage();
+ log.error(msg, e);
+ throw new RegistryException(msg);
+ }
+
User.setCurrentUser(userID);
- registry.removeTag(path, tag);
+ registry.removeTag(resourcePath, tag);
}
public void addComment(String resourcePath, Comment comment) throws
RegistryException {
+
+ // if the user has permission to the current version, he will get
permission to all
+ // previous versions of the same resource
+ String authorizationPath = resourcePath;
+ if (resourcePath.indexOf("?") > 0) {
+ authorizationPath = resourcePath.split("\\?")[0];
+ } else if (resourcePath.indexOf(";")>0) {
+ authorizationPath = resourcePath.split("\\;")[0];
+ }
+
+ try {
+ if (!authorizer.isUserAuthorized(userID, authorizationPath,
ActionConstants.GET)) {
+ String msg = "User: " + userID + " is not authorized to
comment on the resource: " +
+ authorizationPath;
+ log.info(msg);
+ throw new AuthorizationFailedException(msg);
+ }
+ } catch (UserManagerException e) {
+ String msg = "Could not check authorization. \nCaused by " +
e.getMessage();
+ log.error(msg, e);
+ throw new RegistryException(msg);
+ }
+
User.setCurrentUser(userID);
registry.addComment(resourcePath, comment);
}
@@ -311,18 +466,87 @@
}
public void rateResource(String resourcePath, int rating) throws
RegistryException {
+
+ // if the user has permission to the current version, he will get
permission to all
+ // previous versions of the same resource
+ String authorizationPath = resourcePath;
+ if (resourcePath.indexOf("?") > 0) {
+ authorizationPath = resourcePath.split("\\?")[0];
+ } else if (resourcePath.indexOf(";")>0) {
+ authorizationPath = resourcePath.split("\\;")[0];
+ }
+
+ try {
+ if (!authorizer.isUserAuthorized(userID, authorizationPath,
ActionConstants.GET)) {
+ String msg = "User: " + userID + " is not authorized to rate
the resource: " +
+ authorizationPath;
+ log.info(msg);
+ throw new AuthorizationFailedException(msg);
+ }
+ } catch (UserManagerException e) {
+ String msg = "Could not check authorization. \nCaused by " +
e.getMessage();
+ log.error(msg, e);
+ throw new RegistryException(msg);
+ }
+
User.setCurrentUser(userID);
registry.rateResource(resourcePath, rating);
}
public float getAverageRating(String resourcePath) throws
RegistryException {
+
+ // if the user has permission to the current version, he will get
permission to all
+ // previous versions of the same resource
+ String authorizationPath = resourcePath;
+ if (resourcePath.indexOf("?") > 0) {
+ authorizationPath = resourcePath.split("\\?")[0];
+ } else if (resourcePath.indexOf(";")>0) {
+ authorizationPath = resourcePath.split("\\;")[0];
+ }
+
+ try {
+ if (!authorizer.isUserAuthorized(userID, authorizationPath,
ActionConstants.GET)) {
+ String msg = "User: " + userID + " is not authorized to get
average rating of the resource: " +
+ authorizationPath;
+ log.info(msg);
+ throw new AuthorizationFailedException(msg);
+ }
+ } catch (UserManagerException e) {
+ String msg = "Could not check authorization. \nCaused by " +
e.getMessage();
+ log.error(msg, e);
+ throw new RegistryException(msg);
+ }
+
User.setCurrentUser(userID);
return registry.getAverageRating(resourcePath);
}
- public int getRating(String path, String userName) throws
RegistryException {
+ public int getRating(String resourcePath, String userName) throws
RegistryException {
+
+ // if the user has permission to the current version, he will get
permission to all
+ // previous versions of the same resource
+ String authorizationPath = resourcePath;
+ if (resourcePath.indexOf("?") > 0) {
+ authorizationPath = resourcePath.split("\\?")[0];
+ } else if (resourcePath.indexOf(";")>0) {
+ authorizationPath = resourcePath.split("\\;")[0];
+ }
+
+ try {
+ if (!authorizer.isUserAuthorized(userID, authorizationPath,
ActionConstants.GET)) {
+ String msg = "User: " + userID + " is not authorized to get
ratings of the resource: " +
+ authorizationPath;
+ log.info(msg);
+ throw new AuthorizationFailedException(msg);
+ }
+ } catch (UserManagerException e) {
+ String msg = "Could not check authorization. \nCaused by " +
e.getMessage();
+ log.error(msg, e);
+ throw new RegistryException(msg);
+ }
+
User.setCurrentUser(userID);
- return registry.getRating(path, userName);
+ return registry.getRating(resourcePath, userName);
}
public Resource executeQuery(String path, Object[] parameters) throws
RegistryException {
Modified:
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/RemoveRoleAction.java
==============================================================================
---
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/RemoveRoleAction.java
(original)
+++
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/RemoveRoleAction.java
Mon Jan 7 03:08:57 2008
@@ -40,6 +40,7 @@
secureRegistry.getUserRealm().getUserStoreAdmin().deleteRole(roleName);
} catch (UserManagerException e) {
String msg = "Could not remove the role: " + roleName + ". Caused
by: " + e.getMessage();
+ throw new RegistryException(msg);
}
return SUCCESS;
Modified:
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/RemoveUserAction.java
==============================================================================
---
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/RemoveUserAction.java
(original)
+++
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/RemoveUserAction.java
Mon Jan 7 03:08:57 2008
@@ -42,6 +42,7 @@
userRealm.getUserStoreAdmin().deleteUser(userName);
} catch (UserManagerException e) {
String msg = "Could not remove the user: " + userName + ". Caused
by: " + e.getMessage();
+ throw new RegistryException(msg);
}
return SUCCESS;
Modified: trunk/registry/modules/webapps/src/main/webapp/admin/user.jsp
==============================================================================
--- trunk/registry/modules/webapps/src/main/webapp/admin/user.jsp
(original)
+++ trunk/registry/modules/webapps/src/main/webapp/admin/user.jsp Mon Jan
7 03:08:57 2008
@@ -14,100 +14,107 @@
<!-- START header content -->
<jsp:include page="header.jsp" />
- <%
- UserDetailsAction userDetailsAction = (UserDetailsAction)
request.getSession().getAttribute(UIConstants.USER_BEAN);
- %>
+<%
+ UserDetailsAction userDetailsAction = (UserDetailsAction)
request.getSession().getAttribute(UIConstants.USER_BEAN);
+
+ String errorMessage = (String)
request.getSession().getAttribute(UIConstants.ERROR_MESSAGE);
+ if (errorMessage != null) {
+ request.getSession().setAttribute(UIConstants.ERROR_MESSAGE, null);
+ }
+%>
<div class="content">
-<h1 class="headding-user-manage">People</h1>
-<div class="breadcrumb" style="margin-bottom:10px;"><a
href="/wso2registry/system/people">People</a> |
<%=userDetailsAction.getUserName()%> (Settings)</div>
+ <h1 class="headding-user-manage">People</h1>
+ <div class="breadcrumb" style="margin-bottom:10px;"><a
href="/wso2registry/system/people">People</a> |
<%=userDetailsAction.getUserName()%> (Settings)</div>
+
+ <% if (errorMessage != null) { %>
+ <div class="error-message"><%=errorMessage%></div>
+ <% } %>
+
+ <!-- Hear comes the box1 table -->
+ <div class="box1-head">
+ <table cellspacing="0" cellpadding="0" border="0" style="width:100%">
+ <tr>
+ <td valign="top" style="padding-top:0px;width:14px;"><img
src="/wso2registry/admin/images/box1-lefttop.jpg" /></td>
+ <td valign="top">
+ <h2><%=userDetailsAction.getUserName()%></h2>
+ </td>
+ <td align="right" valign="top">
+ <a href="#"
onclick="showHideCommon('userIconExpanded');showHideCommon('userIconMinimized');showHideCommon('userExpanded');showHideCommon('userMinimized');">
+ <img
src="/wso2registry/admin/images/icon-expanded.gif" border="0" align="top"
id="userIconExpanded" />
+ <img
src="/wso2registry/admin/images/icon-minimized.gif" border="0" align="top"
id="userIconMinimized" style="display:none;" />
+ </a>
+ </td>
+ <td valign="top" align="right" style="width:14px;
padding-top:0px;" ><img src="/wso2registry/admin/images/box1-righttop.jpg"
/></td>
+ </tr>
+ </table>
+ </div>
+ <div class="box1-mid" id="userMinimized" style="display:none;">
+ Expand to view details
+ </div>
+ <div class="box1-mid" id="userExpanded">
+ <!-- all the content goes here -->
+
+
+
+ <h3>Add roles to <%=userDetailsAction.getUserName()%></h3>
+
+ <form action="/wso2registry/system/addUserToRole" method="post">
+ <input type="hidden" name="userName"
value="<%=userDetailsAction.getUserName()%>"/>
+ <select name="roleToAdd">
+ <%
+ Iterator iRoles =
userDetailsAction.getAllRoles().iterator();
+ while (iRoles.hasNext()) {
+ String roleName = (String) iRoles.next();
+ %>
+ <option value="<%=roleName%>"><%=roleName%></option>
+ <% } %>
+ </select>
+ <input type="submit" class="button" value="Add"/>
+ </form>
+ <h3>Available roles to <%=userDetailsAction.getUserName()%></h3>
+ <table cellpadding="0" cellspacing="0" border="0" style="width:100%"
class="data-table">
+ <tr>
+ <th>Role Name</th>
+ <th style="width:100px;" align="left">Action</th>
+
+ </tr>
+ <%
+ Iterator iUserRoles =
userDetailsAction.getUserRoles().iterator();
+ while (iUserRoles.hasNext()) {
+ String userRole = (String) iUserRoles.next();
+ %>
+ <tr><td><%=userRole%></td><td><a
href="/wso2registry/system/removeUserFromRole?user=<%=userDetailsAction.getUserName()%>&role=<%=userRole%>"><img
src="/wso2registry/admin/images/icon-trash.gif" border="0" /></a></td></tr>
+ <% } %>
+
+ </table>
+ <h3 style="margin-top:10px;">Recent activity of
<%=userDetailsAction.getUserName()%></h3>
+
+ <table cellspacing="0" cellpadding="0" border="0" style="width:100%">
+ <%
+ Iterator iActivity =
userDetailsAction.getUserActivity().iterator();
+ while (iActivity.hasNext()) {
+ String activity = (String) iActivity.next();
+ %>
+ <tr><td><%=activity%></td></tr>
+ <% } %>
+ </table>
+ <!-- End box1-mid div -->
+ </div>
+ <div class="box1-bot">
+ <table cellspacing="0" cellpadding="0" border="0" style="width:100%" >
+ <tr>
+ <td><img src="/wso2registry/admin/images/box1-leftbot.jpg"
/></td>
+ <td align="right"><img
src="/wso2registry/admin/images/box1-rightbot.jpg" /></td>
+ </tr>
+ </table>
+ </div>
+
+
+
-
- <!-- Hear comes the box1 table -->
- <div class="box1-head">
- <table cellspacing="0" cellpadding="0"
border="0" style="width:100%">
- <tr>
- <td valign="top"
style="padding-top:0px;width:14px;"><img
src="/wso2registry/admin/images/box1-lefttop.jpg" /></td>
- <td valign="top">
-
<h2><%=userDetailsAction.getUserName()%></h2>
- </td>
- <td align="right" valign="top">
- <a href="#"
onclick="showHideCommon('userIconExpanded');showHideCommon('userIconMinimized');showHideCommon('userExpanded');showHideCommon('userMinimized');">
- <img
src="/wso2registry/admin/images/icon-expanded.gif" border="0" align="top"
id="userIconExpanded" />
- <img
src="/wso2registry/admin/images/icon-minimized.gif" border="0" align="top"
id="userIconMinimized" style="display:none;" />
- </a>
- </td>
- <td valign="top" align="right"
style="width:14px; padding-top:0px;" ><img
src="/wso2registry/admin/images/box1-righttop.jpg" /></td>
- </tr>
- </table>
- </div>
- <div class="box1-mid" id="userMinimized"
style="display:none;">
- Expand to view details
- </div>
- <div class="box1-mid" id="userExpanded">
- <!-- all the content goes here -->
-
-
-
- <h3>Add roles to
<%=userDetailsAction.getUserName()%></h3>
-
- <form action="/wso2registry/system/addUserToRole"
method="post">
- <input type="hidden" name="userName"
value="<%=userDetailsAction.getUserName()%>"/>
- <select name="roleToAdd">
- <%
- Iterator iRoles =
userDetailsAction.getAllRoles().iterator();
- while (iRoles.hasNext()) {
- String roleName = (String)
iRoles.next();
- %>
- <option
value="<%=roleName%>"><%=roleName%></option>
- <% } %>
- </select>
- <input type="submit" class="button"
value="Add"/>
- </form>
- <h3>Available roles to
<%=userDetailsAction.getUserName()%></h3>
- <table cellpadding="0" cellspacing="0"
border="0" style="width:100%" class="data-table">
- <tr>
- <th>Role Name</th>
- <th style="width:100px;"
align="left">Action</th>
-
- </tr>
- <%
- Iterator iUserRoles =
userDetailsAction.getUserRoles().iterator();
- while (iUserRoles.hasNext()) {
- String userRole = (String)
iUserRoles.next();
- %>
- <tr><td><%=userRole%></td><td><a
href="/wso2registry/system/removeUserFromRole?user=<%=userDetailsAction.getUserName()%>&role=<%=userRole%>"><img
src="/wso2registry/admin/images/icon-trash.gif" border="0" /></a></td></tr>
- <% } %>
-
- </table>
- <h3 style="margin-top:10px;">Recent activity of
<%=userDetailsAction.getUserName()%></h3>
-
- <table cellspacing="0" cellpadding="0" border="0"
style="width:100%">
- <%
- Iterator iActivity =
userDetailsAction.getUserActivity().iterator();
- while (iActivity.hasNext()) {
- String activity = (String)
iActivity.next();
- %>
- <tr><td><%=activity%></td></tr>
- <% } %>
- </table>
- <!-- End box1-mid div -->
- </div>
- <div class="box1-bot">
- <table cellspacing="0" cellpadding="0"
border="0" style="width:100%" >
- <tr>
- <td><img
src="/wso2registry/admin/images/box1-leftbot.jpg" /></td>
- <td align="right"><img
src="/wso2registry/admin/images/box1-rightbot.jpg" /></td>
- </tr>
- </table>
- </div>
-
-
-
-
-
</div>
<!-- START footer content -->
_______________________________________________
Registry-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/registry-dev