[Registry-dev] svn commit r11948 - in trunk/registry/modules:
core/src/main/java/org/wso2/registry/jdbc/realm
core/src/main/java/org/wso2/registry/secure
webapps/src/main/java/org/wso2/registry/web/actions
webapps/src/main/webapp/admin
svn at wso2.org
svn at wso2.org
Mon Jan 7 03:09:22 PST 2008
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 -->
More information about the Registry-dev
mailing list