Package org.dspace.app.cris.ws

Source Code of org.dspace.app.cris.ws.WSTokenAuthService

/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* https://github.com/CILEA/dspace-cris/wiki/License
*/
package org.dspace.app.cris.ws;


import javax.servlet.http.HttpServletRequest;
import javax.xml.soap.SOAPException;

import org.dspace.app.cris.discovery.CrisSearchService;
import org.dspace.app.cris.model.ws.User;
import org.dspace.core.ConfigurationManager;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.xpath.XPath;
import org.springframework.ws.transport.context.TransportContext;
import org.springframework.ws.transport.context.TransportContextHolder;
import org.springframework.ws.transport.http.HttpServletConnection;

public class WSTokenAuthService extends AWSAuthService
{

    private XPath tokenExpression;

    public WSTokenAuthService()
            throws JDOMException
    {
        Namespace namespace = Namespace.getNamespace(WSConstants.NAMESPACE_PREFIX_CRIS,
                WSConstants.NAMESPACE_CRIS);
        tokenExpression = XPath.newInstance("//cris:Token");
        tokenExpression.addNamespace(namespace);
    }

    @Override
    protected Element invokeInternal(Element arg0) throws Exception
    {
       
        TransportContext context = TransportContextHolder.getTransportContext();
        HttpServletConnection connection = (HttpServletConnection) context
                .getConnection();
        HttpServletRequest request = connection.getHttpServletRequest();
        String ipAddress = request.getRemoteAddr();

        String token = tokenExpression.valueOf(arg0);
        String type = typeExpression.valueOf(arg0);
        type = type.trim();
        User userWS = null;
        try
        {
            userWS = authenticationWS.authenticateToken(ipAddress, token);
        }
        catch (RuntimeException e)
        {
            throw new SOAPException(e.getMessage());
        }
        if (userWS == null)
        {
            throw new RuntimeException("User not found!");
        }

        if (!userWS.isEnabled())
        {
            throw new RuntimeException(
                    "User disabled! Please Contact Admnistrator");
        }
       
        if(!AuthorizationWS.authorize(userWS, type)) {
            throw new SOAPException("User not allowed to retrieve those informations. Contact Administrator");
        }
        return buildResult(userWS, arg0, "TokenAuthQueryResponse");

    }

}
TOP

Related Classes of org.dspace.app.cris.ws.WSTokenAuthService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.