You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by mr...@apache.org on 2015/12/08 23:13:02 UTC
usergrid git commit: Add endpoint that allows fixing of admin user
accounts.
Repository: usergrid
Updated Branches:
refs/heads/1.x 98658fded -> aa1ae7455
Add endpoint that allows fixing of admin user accounts.
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/aa1ae745
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/aa1ae745
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/aa1ae745
Branch: refs/heads/1.x
Commit: aa1ae7455fd13acdc0503cbce744d4df7f55f377
Parents: 98658fd
Author: Michael Russo <mi...@gmail.com>
Authored: Tue Dec 8 14:13:00 2015 -0800
Committer: Michael Russo <mi...@gmail.com>
Committed: Tue Dec 8 14:13:00 2015 -0800
----------------------------------------------------------------------
.../rest/management/users/UsersResource.java | 73 +++++++++++++++++---
1 file changed, 64 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/aa1ae745/stack/rest/src/main/java/org/apache/usergrid/rest/management/users/UsersResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/management/users/UsersResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/management/users/UsersResource.java
index 816905c..50f0a4e 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/management/users/UsersResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/management/users/UsersResource.java
@@ -17,19 +17,12 @@
package org.apache.usergrid.rest.management.users;
+import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.UUID;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DefaultValue;
-import javax.ws.rs.FormParam;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
+import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriInfo;
@@ -37,8 +30,14 @@ import javax.ws.rs.core.UriInfo;
import net.tanesha.recaptcha.ReCaptchaException;
import org.apache.commons.lang.StringUtils;
import org.apache.usergrid.management.exceptions.ManagementException;
+import org.apache.usergrid.persistence.EntityManager;
+import org.apache.usergrid.persistence.EntityRef;
+import org.apache.usergrid.persistence.Identifier;
+import org.apache.usergrid.persistence.cassandra.CassandraService;
+import org.apache.usergrid.persistence.entities.User;
import org.apache.usergrid.rest.RootResource;
import org.apache.usergrid.rest.management.ManagementResource;
+import org.apache.usergrid.rest.security.annotations.RequireSystemAccess;
import org.apache.usergrid.services.exceptions.ServiceResourceNotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -58,6 +57,7 @@ import net.tanesha.recaptcha.ReCaptchaResponse;
import static org.apache.commons.lang.StringUtils.isBlank;
import static org.apache.usergrid.rest.exceptions.SecurityException.mappableSecurityException;
+import static org.apache.usergrid.utils.ConversionUtils.string;
@Component( "org.apache.usergrid.rest.management.users.UsersResource" )
@@ -114,6 +114,61 @@ public class UsersResource extends AbstractContextResource {
return getUserResource(management.getAdminUserByEmail( email ), "email", email);
}
+ @PUT
+ @RequireSystemAccess
+ @Path(RootResource.EMAIL_PATH+"/override")
+ public JSONWithPadding setUserInfo( @Context UriInfo ui, Map<String, Object> json,
+ @PathParam ("email") String emailFromPath,
+ @QueryParam( "callback" ) @DefaultValue( "callback" ) String callback )
+ throws Exception {
+
+ if ( json == null ) {
+ return null;
+ }
+
+ String emailFromBody = string( json.remove( "email" ) );
+
+ if(emailFromBody == null){
+ throw new IllegalArgumentException( "Email json body parameter required." );
+ }
+
+ if(!emailFromBody.equalsIgnoreCase(emailFromPath)){
+ throw new IllegalArgumentException( "Email provided in path must match email provided in body" );
+ }
+
+ String username = string( json.remove( "username" ) );
+ String name = string( json.remove( "name" ) );
+
+ EntityManager em = emf.getEntityManager(CassandraService.MANAGEMENT_APPLICATION_ID);
+ EntityRef entity = em.getUserByIdentifier(Identifier.fromEmail(emailFromPath));
+ if(entity == null){
+ entity = em.getUserByIdentifier(Identifier.fromName(emailFromPath));
+ }
+ if(entity == null){
+ logger.error("Entity id parameter {} with {} value does not exist", "email", emailFromPath);
+ throw new IllegalArgumentException("Entity not found.");
+ }
+
+ Map<String, Object> properties = new HashMap<String, Object>();
+ properties.put("email", emailFromPath);
+ properties.put("username", username);
+ properties.put("name", name);
+ properties.put("uuid", entity.getUuid());
+ properties.put("confirmed", true);
+ properties.put("activated", true);
+
+
+
+ // Re-create the user entity with the existing UUID found in the index
+ em.create(entity.getUuid(), User.ENTITY_TYPE, properties);
+
+
+ ApiResponse response = createApiResponse();
+ response.setAction( "update user info" );
+
+ return new JSONWithPadding( response, callback );
+ }
+
@POST
@Consumes( MediaType.APPLICATION_FORM_URLENCODED )