164 lines
5.4 KiB
Java
164 lines
5.4 KiB
Java
package org.gcube.portal.social.networking.ws.methods.v1;
|
|
|
|
import javax.ws.rs.GET;
|
|
import javax.ws.rs.Path;
|
|
import javax.ws.rs.Produces;
|
|
import javax.ws.rs.QueryParam;
|
|
import javax.ws.rs.core.MediaType;
|
|
import javax.ws.rs.core.Response;
|
|
import javax.ws.rs.core.Response.Status;
|
|
|
|
import org.gcube.common.authorization.library.provider.AuthorizationProvider;
|
|
import org.gcube.common.authorization.library.utils.Caller;
|
|
import org.gcube.portal.social.networking.liferay.ws.UserManagerWSBuilder;
|
|
import org.gcube.portal.social.networking.ws.utils.ErrorMessages;
|
|
import org.gcube.portal.social.networking.ws.utils.TokensUtils;
|
|
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
/**
|
|
* REST interface for the social networking library (users).
|
|
* @author Costantino Perciante at ISTI-CNR
|
|
*/
|
|
@Path("/users")
|
|
@Deprecated
|
|
public class Users {
|
|
|
|
// Logger
|
|
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(Users.class);
|
|
|
|
private static final String NOT_USER_TOKEN_CONTEXT_USED = "User's information can only be retrieved through a user token (not qualified)";
|
|
|
|
@GET
|
|
@Path("readCustomAttr/")
|
|
@Produces(MediaType.TEXT_PLAIN)
|
|
/**
|
|
* A wrapper for the user management library 's readCustomAttr method
|
|
* @return Response (OK, BAD REQUEST, ...)
|
|
*/
|
|
public Response readCustomAttr(
|
|
@QueryParam("attribute") String attributeKey
|
|
) {
|
|
|
|
if(attributeKey == null || attributeKey.isEmpty()){
|
|
logger.error("Missing/wrong request parameters");
|
|
return Response.status(Status.BAD_REQUEST).entity(ErrorMessages.MISSING_PARAMETERS).build();
|
|
}
|
|
|
|
Caller caller = AuthorizationProvider.instance.get();
|
|
String username = caller.getClient().getId();
|
|
String toReturn;
|
|
if(!TokensUtils.isUserTokenDefault(caller)){
|
|
logger.warn(NOT_USER_TOKEN_CONTEXT_USED);
|
|
return Response.status(Status.FORBIDDEN).entity("User's information can only be retrieved through a user token").build();
|
|
}else{
|
|
try{
|
|
GCubeUser user = UserManagerWSBuilder.getInstance().getUserManager().getUserByUsername(username);
|
|
toReturn = (String)UserManagerWSBuilder.getInstance().getUserManager().readCustomAttr(user.getUserId(), attributeKey);
|
|
}catch(Exception e){
|
|
logger.error("Unable to retrieve attribute for user.", e);
|
|
return Response.status(Status.NOT_FOUND).build();
|
|
}
|
|
}
|
|
logger.info("Attribute " + attributeKey + " retrieved for user " + username);
|
|
return Response.status(Status.OK).entity(toReturn).build();
|
|
}
|
|
|
|
// @PUT
|
|
// @Path("updateCustomAttr")
|
|
// @Produces(MediaType.TEXT_PLAIN)
|
|
// /**
|
|
// * A wrapper for the user management library 's saveCustomAttr method
|
|
// * @return
|
|
// */
|
|
// public Response updateCustomAttr(
|
|
// @FormParam("attribute") String attributeKey,
|
|
// @FormParam("value") String newValue
|
|
// ){
|
|
//
|
|
// if(attributeKey == null || attributeKey.isEmpty() || newValue == null){
|
|
//
|
|
// logger.error("Missing/wrong request parameters");
|
|
// return Response.status(Status.BAD_REQUEST).entity(ErrorMessages.missingParameters).build();
|
|
//
|
|
// }
|
|
//
|
|
// Caller caller = AuthorizationProvider.instance.get();
|
|
// String username = caller.getClient().getId();
|
|
//
|
|
// try{
|
|
//
|
|
// GCubeUser user = userManager.getUserByUsername(username);
|
|
// userManager.saveCustomAttr(user.getUserId(), attributeKey, newValue);
|
|
//
|
|
// }catch(Exception e){
|
|
//
|
|
// logger.error("Unable to set attribute for user.", e);
|
|
// return Response.status(Status.NOT_MODIFIED).build();
|
|
//
|
|
// }
|
|
//
|
|
// return Response.status(Status.OK).build();
|
|
//
|
|
// }
|
|
|
|
@GET
|
|
@Path("getUserFullname")
|
|
@Produces(MediaType.TEXT_PLAIN)
|
|
/**
|
|
* Retrieve user's fullname
|
|
* @return
|
|
*/
|
|
public Response getUserUsername(){
|
|
|
|
Caller caller = AuthorizationProvider.instance.get();
|
|
String username = caller.getClient().getId();
|
|
String toReturn = null;
|
|
if(!TokensUtils.isUserTokenDefault(caller)){
|
|
logger.warn(NOT_USER_TOKEN_CONTEXT_USED);
|
|
return Response.status(Status.FORBIDDEN).entity("User's information can only be retrieved through a user token").build();
|
|
}else{
|
|
try{
|
|
GCubeUser user = UserManagerWSBuilder.getInstance().getUserManager().getUserByUsername(username);
|
|
toReturn = user.getFullname();
|
|
logger.info("Found fullname " + toReturn + " for user " + username);
|
|
}catch(Exception e){
|
|
logger.error("Unable to retrieve attribute for user.", e);
|
|
return Response.status(Status.INTERNAL_SERVER_ERROR).entity(e.toString()).build();
|
|
}
|
|
}
|
|
return Response.status(Status.OK).entity(toReturn).build();
|
|
}
|
|
|
|
@GET
|
|
@Path("getUserEmail")
|
|
@Produces(MediaType.TEXT_PLAIN)
|
|
/**
|
|
* Retrieve user's email
|
|
* @return
|
|
*/
|
|
public Response getUserEmail(){
|
|
|
|
Caller caller = AuthorizationProvider.instance.get();
|
|
String username = caller.getClient().getId();
|
|
String toReturn = null;
|
|
if(!TokensUtils.isUserTokenDefault(caller)){
|
|
logger.warn(NOT_USER_TOKEN_CONTEXT_USED);
|
|
return Response.status(Status.FORBIDDEN).entity("User's information can only be retrieved through a user token").build();
|
|
}else{
|
|
try{
|
|
|
|
GCubeUser user = UserManagerWSBuilder.getInstance().getUserManager().getUserByUsername(username);
|
|
toReturn = user.getEmail();
|
|
logger.info("Found email " + toReturn + " for user " + username);
|
|
|
|
}catch(Exception e){
|
|
|
|
logger.error("Unable to retrieve attribute for user.", e);
|
|
return Response.status(Status.INTERNAL_SERVER_ERROR).entity(e.toString()).build();
|
|
}
|
|
}
|
|
return Response.status(Status.OK).entity(toReturn).build();
|
|
}
|
|
}
|