Changeset 25128


Ignore:
Timestamp:
2012-02-21T16:26:17+13:00 (12 years ago)
Author:
sjm84
Message:

Second round of changes adding in the login ability, also interface options are now returned whenever site metadata is returned

Location:
main/trunk/greenstone3/src/java/org/greenstone/gsdl3
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/LibraryServlet.java

    r25092 r25128  
    1414import javax.servlet.http.*;
    1515
    16 import java.security.Principal;
    1716import java.util.Collection;
    1817import java.util.Enumeration;
     
    9998     */
    10099    protected Hashtable session_ids_table = new Hashtable();
    101    
     100
    102101    /**
    103102     * the maximum interval that the cached info remains in session_ids_table
     
    722721            request.login(username[0], password[0]);
    723722        }
    724        
    725         if(request.getAuthType() != null)
     723
     724        if (request.getAuthType() != null)
    726725        {
    727726            Element userInformation = this.doc.createElement("userInformation");
    728727            xml_request.appendChild(userInformation);
    729728            userInformation.setAttribute("username", request.getUserPrincipal().getName());
    730         }
    731            
     729
     730            Element userInfoMessage = this.doc.createElement(GSXML.MESSAGE_ELEM);
     731            Element userInfoRequest = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_SECURITY, "GetUserInformation", userContext);
     732            userInfoMessage.appendChild(userInfoRequest);
     733
     734            Element paramList = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
     735            userInfoRequest.appendChild(paramList);
     736
     737            Element param = this.doc.createElement(GSXML.PARAM_ELEM);
     738            param.setAttribute(GSXML.NAME_ATT, "username");
     739            param.setAttribute(GSXML.VALUE_ATT, request.getUserPrincipal().getName());
     740            paramList.appendChild(param);
     741
     742            Element userInformationResponse = (Element) GSXML.getChildByTagName(this.recept.process(userInfoMessage), GSXML.RESPONSE_ELEM);
     743            Element responseParamList = (Element) GSXML.getChildByTagName(userInformationResponse, GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
     744            if (responseParamList == null)
     745            {
     746                logger.error("Can't get the groups for user " + request.getUserPrincipal().getName());
     747            }
     748
     749            HashMap responseParams = GSXML.extractParams(responseParamList, true);
     750            String groups = (String) responseParams.get("groups");
     751
     752            userInformation.setAttribute("groups", groups);
     753        }
    732754
    733755        //If we are in a collection-related page then make sure this user is allowed to access it
     
    771793                    Element paramList = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
    772794                    loginPageRequest.appendChild(paramList);
    773                    
     795
    774796                    Element messageParam = this.doc.createElement(GSXML.PARAM_ELEM);
    775797                    messageParam.setAttribute(GSXML.NAME_ATT, "loginMessage");
    776                     if(request.getAuthType() == null)
     798                    if (request.getAuthType() == null)
    777799                    {
    778800                        messageParam.setAttribute(GSXML.VALUE_ATT, "Please log in to view this page");
     
    780802                    else
    781803                    {
    782                         messageParam.setAttribute(GSXML.VALUE_ATT, "You are not in the correct group to view this page");
     804                        messageParam.setAttribute(GSXML.VALUE_ATT, "You are not in the correct group to view this page, would you like to log in as a different user?");
    783805                    }
    784806                    paramList.appendChild(messageParam);
    785                    
     807
    786808                    Element urlParam = this.doc.createElement(GSXML.PARAM_ELEM);
    787809                    urlParam.setAttribute(GSXML.NAME_ATT, "redirectURL");
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/Action.java

    r24993 r25128  
    255255    }
    256256
     257    protected void addInterfaceOptions(Element elem)
     258    {
     259        Element documentOptionList = this.doc.createElement("interfaceOptions");
     260        for(Object key : this.config_params.keySet())
     261        {
     262            Element option = this.doc.createElement("option");
     263            option.setAttribute(GSXML.NAME_ATT, (String)key);
     264            option.setAttribute(GSXML.VALUE_ATT, this.config_params.get(key).toString());
     265            documentOptionList.appendChild(option);
     266        }
     267        elem.appendChild(elem.getOwnerDocument().importNode(documentOptionList, true));
     268    }
    257269}
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/BrowseAction.java

    r24993 r25128  
    9292    //append site metadata
    9393    addSiteMetadata(page_response, userContext);
     94    addInterfaceOptions(page_response);
    9495
    9596    // if rt=d, then we are just displaying the service
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/DocumentAction.java

    r24993 r25128  
    147147        //append site metadata
    148148        addSiteMetadata(page_response, userContext);
     149        addInterfaceOptions(page_response);
    149150
    150151        // get the additional data needed for the page
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/GS2BrowseAction.java

    r24993 r25128  
    8686        //append site metadata
    8787        addSiteMetadata(page_response, userContext);
     88        addInterfaceOptions(page_response);
    8889
    8990        // if rt=d, then we are just displaying the service
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/GeneralAction.java

    r24993 r25128  
    22
    33import org.greenstone.gsdl3.util.*;
     4import org.greenstone.util.GlobalProperties;
    45// XML classes
     6import org.w3c.dom.Document;
    57import org.w3c.dom.Node;
    68import org.w3c.dom.Element;
     9import org.w3c.dom.NodeList;
    710
     11import java.io.File;
    812import java.util.HashMap;
     13
     14import javax.xml.parsers.DocumentBuilder;
     15import javax.xml.parsers.DocumentBuilderFactory;
     16import javax.xml.transform.Result;
     17import javax.xml.transform.Transformer;
     18import javax.xml.transform.TransformerFactory;
     19import javax.xml.transform.dom.DOMSource;
     20import javax.xml.transform.stream.StreamResult;
    921
    1022public class GeneralAction extends Action
     
    3143        Element cgi_param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
    3244        HashMap params = GSXML.extractParams(cgi_param_list, false);
     45
     46        if (params.get("configChangeName") != null && params.get("configChangeValue") != null)
     47        {
     48            String optionName = (String) params.get("configChangeName");
     49            String optionValue = (String) params.get("configChangeValue");
     50           
     51            changeConfig(optionName, optionValue);
     52        }
     53
    3354        String service_name = (String) params.get(GSParams.SERVICE);
    3455        String cluster_name = (String) params.get(GSParams.CLUSTER);
     
    6687            Element mr_query_message = this.doc.createElement(GSXML.MESSAGE_ELEM);
    6788            Element mr_query_request = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_PROCESS, to, userContext);
    68            
    69             if(request_type.equals("s"))
     89
     90            if (request_type.equals("s"))
    7091            {
    7192                mr_query_request.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_STATUS);
     
    91112                // just send the reponse as is
    92113                addSiteMetadata(result_response, userContext);
     114                addInterfaceOptions(result_response);
    93115                return result_response;
    94116            }
     
    107129        mr_info_message.appendChild(mr_info_request);
    108130        Element mr_info_response = (Element) this.mr.process(mr_info_message);
    109        
     131
    110132        String path = GSXML.RESPONSE_ELEM;
    111133        path = GSPath.appendLink(path, GSXML.SERVICE_ELEM);
     
    118140
    119141        addSiteMetadata(page_response, userContext);
    120        
     142        addInterfaceOptions(page_response);
     143
    121144        return result;
    122145    }
     146   
     147    protected void changeConfig (String optionName, String optionValue)
     148    {
     149        if(this.config_params.get(optionName) != null)
     150        {
     151            this.config_params.put(optionName, optionValue);
     152           
     153            File interfaceConfigFile = new File(GSFile.interfaceConfigFile(GSFile.interfaceHome(GlobalProperties.getGSDL3Home(), (String)this.config_params.get("interface_name"))));
     154           
     155            Document interfaceXML = null;
     156            try
     157            {
     158                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
     159                DocumentBuilder db = dbf.newDocumentBuilder();
     160                interfaceXML = db.parse(interfaceConfigFile);
     161                Element topElement = interfaceXML.getDocumentElement();
     162                Element optionListElem = (Element) GSXML.getChildByTagName(topElement, "optionList");
    123163
     164                NodeList optionList = optionListElem.getElementsByTagName("option");
     165               
     166                for(int i = 0; i < optionList.getLength(); i++)
     167                {
     168                    Element currentOption = (Element)optionList.item(i);
     169                    if(currentOption.getAttribute(GSXML.NAME_ATT) != null && currentOption.getAttribute(GSXML.NAME_ATT).equals(optionName))
     170                    {
     171                        currentOption.setAttribute(GSXML.VALUE_ATT, optionValue);
     172                    }
     173                }
     174               
     175                DOMSource source = new DOMSource(interfaceXML);
     176                Result xmlresult = new StreamResult(interfaceConfigFile);
     177
     178                Transformer transformer = TransformerFactory.newInstance().newTransformer();
     179                transformer.transform(source, xmlresult);
     180            }
     181            catch(Exception ex)
     182            {
     183                ex.printStackTrace();
     184            }
     185        }
     186        else
     187        {
     188            logger.error("Could not set param \"" + optionName + "\" to \"" + optionValue + "\" because that option does not exist.");
     189        }
     190    }
    124191}
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/PageAction.java

    r24993 r25128  
    1717public class PageAction extends Action
    1818{
    19 
    2019    static Logger logger = Logger.getLogger(org.greenstone.gsdl3.action.PageAction.class.getName());
    2120
     
    2726    public Node process(Node message_node)
    2827    {
    29 
    3028        Element message = this.converter.nodeToElement(message_node);
    3129
     
    6866    protected Element homePage(Element request)
    6967    {
    70 
    7168        UserContext userContext = new UserContext(request);
    7269        // first, get the message router info
     
    130127    protected Element aboutPage(Element request)
    131128    {
    132 
    133129        UserContext userContext = new UserContext(request);
    134130        // extract the params from the cgi-request,
     
    143139            Element response = this.doc.createElement(GSXML.RESPONSE_ELEM);
    144140            addSiteMetadata(response, userContext);
     141            addInterfaceOptions(response);
    145142            return response;
    146143        }
     
    200197        //add the site metadata
    201198        addSiteMetadata(response, userContext);
     199        addInterfaceOptions(response);
    202200        return response;
    203201    }
     
    224222            Element response = this.doc.createElement(GSXML.RESPONSE_ELEM);
    225223            addSiteMetadata(response, userContext);
     224            addInterfaceOptions(response);
    226225            return response;
    227226        }
     
    242241        //add the site metadata
    243242        addSiteMetadata(response, userContext);
     243        addInterfaceOptions(response);
    244244
    245245        return response;
     
    249249    protected boolean sendMultipleRequests(NodeList items, String path_prefix, String request_type, UserContext userContext)
    250250    {
    251 
    252251        // we will send all the requests in a single message
    253252        Element message = this.doc.createElement(GSXML.MESSAGE_ELEM);
     
    321320        return page_response;
    322321    }
    323 
    324322}
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/QueryAction.java

    r24993 r25128  
    9797            //append site metadata
    9898            addSiteMetadata(page_response, userContext);
     99            addInterfaceOptions(page_response);
    99100            return page_response;
    100101        }
     
    106107            //append site metadata
    107108            addSiteMetadata(page_response, userContext);
     109            addInterfaceOptions(page_response);
    108110            return page_response;
    109111        }
     
    132134            //append site metadata
    133135            addSiteMetadata(page_response, userContext);
     136            addInterfaceOptions(page_response);
    134137            return page_response;
    135138        }
     
    168171            //append site metadata
    169172            addSiteMetadata(page_response, userContext);
     173            addInterfaceOptions(page_response);
    170174            return page_response;
    171175        }
     
    180184            //append site metadata
    181185            addSiteMetadata(page_response, userContext);
     186            addInterfaceOptions(page_response);
    182187            return page_response;
    183188        }
     
    236241        //append site metadata
    237242        addSiteMetadata(page_response, userContext);
     243        addInterfaceOptions(page_response);
    238244        return page_response;
    239245    }
Note: See TracChangeset for help on using the changeset viewer.