Author: deepal
Date: Wed Feb 27 01:44:19 2008
New Revision: 14262

Log:

fixing issue 235
- adding a way to add users and assign user role from APP (requirement for PHP)

Modified:
   
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/APPConstants.java
   
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/AtomRegistry.java
   
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/VersionedResourceDAO.java

Modified: 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/APPConstants.java
==============================================================================
--- 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/APPConstants.java
   (original)
+++ 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/APPConstants.java
   Wed Feb 27 01:44:19 2008
@@ -28,6 +28,8 @@
     static final String PARAMETER_VERSION = "version";
     static final String PARAMETER_RESTORE = "restore";
     static final String PARAMETER_RENAME = "rename";
+    static final String PARAMETER_ADD_USER = "adduser";
+    static final String PARAMETER_ADD_ROLE = "addrole";
     static final String PARAMETER_TAGS = "tags";
     static final String PARAMETER_TAG_PATHS = "tagpaths";
     static final String PARAMETER_TAGS_REMOVED = "removeTags";

Modified: 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/AtomRegistry.java
==============================================================================
--- 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/AtomRegistry.java
   (original)
+++ 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/AtomRegistry.java
   Wed Feb 27 01:44:19 2008
@@ -36,6 +36,8 @@
 import org.apache.commons.logging.LogFactory;
 import org.wso2.registry.Comment;
 import org.wso2.registry.*;
+import org.wso2.registry.users.UserRealm;
+import org.wso2.registry.users.UserStoreException;
 import org.wso2.registry.exceptions.ResourceNotFoundException;
 import org.wso2.registry.i18n.Messages;
 import org.wso2.registry.jdbc.realm.RegistryRealm;
@@ -213,6 +215,24 @@
                                                         
Integer.parseInt(entryContent));
             } else if (PARAMETER_RENAME.equals(modifier)) {
                 getSecureRegistry(request).rename(resourcePath, entryContent);
+            } else if (PARAMETER_ADD_USER.equals(modifier)){
+                String userName = entry.getSimpleExtension(new QName(NAMESPACE,
+                        "username"));
+                String password = entry.getSimpleExtension(new QName(NAMESPACE,
+                        "password"));
+                String confirmPassword = entry.getSimpleExtension(new 
QName(NAMESPACE,
+                        "confirmpassword"));
+                String rolename = entry.getSimpleExtension(new QName(NAMESPACE,
+                        "rolename"));
+                String friendlyName = entry.getSimpleExtension(new 
QName(NAMESPACE,
+                        "friendlyName"));
+                addUser(userName ,password ,confirmPassword ,rolename 
,friendlyName ,request);
+            } else if (PARAMETER_ADD_ROLE.equals(modifier)){
+                String userName = entry.getSimpleExtension(new QName(NAMESPACE,
+                        "username"));
+                String rolename = entry.getSimpleExtension(new QName(NAMESPACE,
+                        "rolename"));
+                assignRole(userName ,rolename ,request);
             } else {
                 //TODO : We need to implement the other operation as well
                 return new EmptyResponseContext(500);
@@ -1031,4 +1051,45 @@
     private String sanitizeResourceName(String name) {
         return name.replaceAll("[\\?\\&\\(\\)]", "");
     }
+
+    private void addUser(String userName ,
+                         String password ,
+                         String confirmedPassword ,
+                         String roleName ,
+                         String friendlyName ,
+                         RequestContext request) throws Exception {
+        Registry registry = getSecureRegistry(request);
+        if (userName == null || password == null || confirmedPassword == null) 
{
+            throw new RegistryException("Required properties are null");
+        }
+        if (!password.equals(confirmedPassword)) {
+            throw new RegistryException("Password does not macth");
+        }
+        if (registry instanceof SecureRegistry) {
+            UserRealm userRealm  = ((SecureRegistry)registry).getUserRealm();
+
+            userRealm.getUserStoreAdmin().addUser(userName, password);
+
+            Map currentProperties = 
userRealm.getUserStoreAdmin().getUserProperties(userName);
+            currentProperties.put("friendlyName", friendlyName);
+            userRealm.getUserStoreAdmin().setUserProperties(userName, 
currentProperties);
+
+            if (roleName != null && !roleName.equalsIgnoreCase("1")) {
+                userRealm.getUserStoreAdmin().addUserToRole(userName, 
roleName);
+            }
+        }
+    }
+
+    private void assignRole(String userName , String roleName, RequestContext 
request) throws Exception{
+        Registry registry = getSecureRegistry(request);
+        if (registry instanceof SecureRegistry) {
+            UserRealm realm = ((SecureRegistry)registry).getUserRealm();
+            try {
+                realm.getUserStoreAdmin().addUserToRole(userName, roleName);
+            } catch (UserStoreException e) {
+                String msg = "Could not add the user " + userName + " to the 
role " + roleName + ". Caused by: " + e.getMessage();
+                throw new RegistryException(msg);
+            }
+        }
+    }
 }

Modified: 
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/VersionedResourceDAO.java
==============================================================================
--- 
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/VersionedResourceDAO.java
      (original)
+++ 
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/VersionedResourceDAO.java
      Wed Feb 27 01:44:19 2008
@@ -941,6 +941,18 @@
             addResourceVersion(resource, conn);
             resource.setPath(resourcePath);
             resource.setId(resourceID);
+            
+            long fromResourceId = getResourceID(oldPath , conn);
+            //copying the comments
+            CommentsDAO commentsDAO = new CommentsDAO();
+            commentsDAO.copyComments(oldPath ,resourceID ,conn);
+            //coping the tags
+            TagsDAO tags = new TagsDAO();
+            tags.copyTags(fromResourceId , resourceID ,conn);
+
+            // copy ratings
+            RatingsDAO ratingsDAO = new RatingsDAO();
+            ratingsDAO.copyRatings(fromResourceId ,resourceID ,conn);
             markDeleted(resourcePath, conn);
             deleteResource(resource, conn);
         }

_______________________________________________
Registry-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/registry-dev

Reply via email to