view src/main/java/de/mpiwg/gazetteer/servlet/GetUser.java @ 12:c2e2d794847f

new: add config.properties file for gazetteer
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Wed, 30 Sep 2015 13:43:54 +0200
parents
children
line wrap: on
line source

package de.mpiwg.gazetteer.servlet;

import static edu.harvard.iq.dataverse.util.JsfHelper.JH;

import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.primefaces.json.JSONException;
import org.primefaces.json.JSONObject;

import edu.harvard.iq.dataverse.authorization.AuthenticationRequest;
import edu.harvard.iq.dataverse.authorization.CredentialsAuthenticationProvider;
import edu.harvard.iq.dataverse.authorization.exceptions.AuthenticationFailedException;
import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser;


public class GetUser extends AbstractMonographServlet{
	

	private static final Logger logger = Logger.getLogger(GetUser.class.getName());
	
	
	
	/*
	private List<FilledCredential> filledCredentials;
	
	public static class FilledCredential {
        CredentialsAuthenticationProvider.Credential credential;
        String value;

        public FilledCredential() {
        }

        public FilledCredential(CredentialsAuthenticationProvider.Credential credential, String value) {
            this.credential = credential;
            this.value = value;
        }
        
        public CredentialsAuthenticationProvider.Credential getCredential() {
            return credential;
        }

        public void setCredential(CredentialsAuthenticationProvider.Credential credential) {
            this.credential = credential;
        }

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }
        
    }
	
	public List<FilledCredential> getFilledCredentials() {
        return filledCredentials;
    }
	
	public String getCredentialsAuthProviderId() {
	       return credentialsAuthProviderId;
	}
	  
	public CredentialsAuthenticationProvider selectedCredentialsProvider() {
        return (CredentialsAuthenticationProvider) authSvc.getAuthenticationProvider(getCredentialsAuthProviderId());
    }
	
	public void setCredentialsAuthProviderId(String authProviderId) {
        this.credentialsAuthProviderId = authProviderId;
    }
	public void resetFilledCredentials() {
        if ( selectedCredentialsProvider()==null ) return;
        
        filledCredentials = new LinkedList<>();
        for ( CredentialsAuthenticationProvider.Credential c : selectedCredentialsProvider().getRequiredCredentials() ) {
            filledCredentials.add( new FilledCredential(c, ""));
        }
    }
	*/
	
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// Set response content type
		response.setContentType("application/json");
		JSONObject jsonResponse = new JSONObject();	
		
		String user = request.getParameter("user");
		String password = request.getParameter("password");
		
			
		if(StringUtils.isNotEmpty(user) && StringUtils.isNotEmpty(password)){
			
			AuthenticationRequest authReq = new AuthenticationRequest();
	        authReq.putCredential("Username", user);
	        authReq.putCredential("Password", password);
	        try {
	        	credentialsAuthProviderId = "builtin";
	            //AuthenticatedUser authUser = authSvc.authenticate(credentialsAuthProviderId, authReq);
	        	authUser = authSvc.authenticate(credentialsAuthProviderId, authReq);
	            
	        	System.out.println("User authenticated: " + authUser.getIdentifier());
				
	            if(authUser != null){
					JSONObject jsonUser = MonographUtils.jsonAuthenticatedUser(authUser);
					jsonResponse.put("state", "ok");
					jsonResponse.put("user", jsonUser);

				} else {
					jsonResponse.put("state", "error");
					jsonResponse.put("error", "User " + user + " no found.");
				}
	            
	        } catch (AuthenticationFailedException ex) {
	        	ex.printStackTrace();
	        } catch (JSONException e) {
				e.printStackTrace();
			}
			
			
		} else {
			try {
				jsonResponse.put("state", "error");
				jsonResponse.put("error", "Request error. Parameters 'user' and 'password' are mandatory");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
		// ======================
    
		
		java.io.PrintWriter out = response.getWriter();
		out.print(jsonResponse);
		out.flush();
		
		
		
	}
}