Changeset 25124


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

Added a new service to get the details about a user

File:
1 edited

Legend:

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

    r24978 r25124  
    99import org.w3c.dom.NodeList;
    1010
     11import java.util.HashMap;
    1112import java.util.Vector;
    1213import java.sql.SQLException;
     
    1920    //the services on offer
    2021    protected static final String AUTHENTICATION_SERVICE = "Authentication";
     22    protected static final String GET_USER_INFORMATION_SERVICE = "GetUserInformation";
    2123
    2224    /** constructor */
     
    3638        this.short_service_info.appendChild(authentication_service);
    3739
     40        // set up Authentication service info - for now just has name and type
     41        Element getUserInformation_service = this.doc.createElement(GSXML.SERVICE_ELEM);
     42        getUserInformation_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS);
     43        getUserInformation_service.setAttribute(GSXML.NAME_ATT, GET_USER_INFORMATION_SERVICE);
     44        this.short_service_info.appendChild(getUserInformation_service);
     45
    3846        return true;
    3947    }
     
    4957            authen_service.setAttribute(GSXML.NAME_ATT, AUTHENTICATION_SERVICE);
    5058        }
     59        else if (service_id.equals(GET_USER_INFORMATION_SERVICE))
     60        {
     61            authen_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS);
     62            authen_service.setAttribute(GSXML.NAME_ATT, GET_USER_INFORMATION_SERVICE);
     63        }
    5164        else
    5265        {
     
    5467        }
    5568
    56         if (subset == null || subset.equals(GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER))
     69        if (service_id.equals(AUTHENTICATION_SERVICE) && (subset == null || subset.equals(GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER)))
    5770        {
    5871            authen_service.appendChild(GSXML.createDisplayTextElement(this.doc, GSXML.DISPLAY_TEXT_NAME, getServiceName(service_id, lang)));
     
    8396    protected void createParameter(String name, Element param_list, String lang)
    8497    {
     98    }
     99
     100    protected Element processGetUserInformation(Element request)
     101    {
     102        // Create a new (empty) result message
     103        Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);
     104
     105        result.setAttribute(GSXML.FROM_ATT, GET_USER_INFORMATION_SERVICE);
     106        result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS);
     107
     108        Element paramList = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
     109        if (paramList == null)
     110        {
     111            logger.error(GET_USER_INFORMATION_SERVICE + ": Param list does not exist ");
     112            return null;
     113        }
     114
     115        HashMap params = GSXML.extractParams(paramList, true);
     116
     117        String username = (String) params.get("username");
     118
     119        if (username == null)
     120        {
     121            logger.error(GET_USER_INFORMATION_SERVICE + ": No username specified");
     122            return result;
     123        }
     124
     125        DerbyWrapper dbWrapper = new DerbyWrapper();
     126
     127        String usersDB_dir = this.site_home + File.separatorChar + "etc" + File.separatorChar + "usersDB";
     128        dbWrapper.connectDatabase(usersDB_dir, true);
     129
     130        UserQueryResult userQueryResult;
     131        try
     132        {
     133            userQueryResult = dbWrapper.findUser(username);
     134            Vector<UserTermInfo> terms = userQueryResult.getUserTerms();
     135
     136            if (terms.size() == 0)
     137            {
     138                logger.error(GET_USER_INFORMATION_SERVICE + ": Requested user was not found");
     139                return result;
     140            }
     141
     142            UserTermInfo userInfo = terms.get(0);
     143            Element userInfoList = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
     144            result.appendChild(userInfoList);
     145
     146            Element usernameField = GSXML.createParameter(this.doc, "username", userInfo.username_);
     147            Element passwordField = GSXML.createParameter(this.doc, "password", userInfo.password_);
     148            Element groupsField = GSXML.createParameter(this.doc, "groups", userInfo.groups_);
     149            Element accountStatusField = GSXML.createParameter(this.doc, "accountstatus", userInfo.accountstatus_);
     150            Element commentField = GSXML.createParameter(this.doc, "comment", userInfo.comment_);
     151
     152            userInfoList.appendChild(usernameField);
     153            userInfoList.appendChild(passwordField);
     154            userInfoList.appendChild(groupsField);
     155            userInfoList.appendChild(accountStatusField);
     156            userInfoList.appendChild(commentField);
     157        }
     158        catch (Exception ex)
     159        {
     160            ex.printStackTrace();
     161        }
     162
     163        return result;
    85164    }
    86165
Note: See TracChangeset for help on using the changeset viewer.