Ignore:
Timestamp:
2013-09-06T11:17:55+12:00 (11 years ago)
Author:
sjm84
Message:

Adding a new edit mode flag

File:
1 edited

Legend:

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

    r28218 r28233  
    127127    protected static final String AUTHENTICATION_SERVICE = "Authentication";
    128128    protected static final String GET_USER_INFORMATION_SERVICE = "GetUserInformation";
     129    protected static final String CHANGE_USER_EDIT_MODE_SERVICE = "ChangeUserEditMode";
    129130
    130131    protected static boolean _derbyWrapperDoneForcedShutdown = false;
     
    171172        this.short_service_info.appendChild(authentication_service);
    172173
    173         // set up Authentication service info - for now just has name and type
    174174        Element getUserInformation_service = this.doc.createElement(GSXML.SERVICE_ELEM);
    175175        getUserInformation_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS);
     
    177177        this.short_service_info.appendChild(getUserInformation_service);
    178178
     179        Element changeEditMode_service = this.doc.createElement(GSXML.SERVICE_ELEM);
     180        changeEditMode_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS);
     181        changeEditMode_service.setAttribute(GSXML.NAME_ATT, CHANGE_USER_EDIT_MODE_SERVICE);
     182        this.short_service_info.appendChild(changeEditMode_service);
     183
    179184        DerbyWrapper.createDatabaseIfNeeded();
    180        
     185
    181186        NodeList recaptchaElems = info.getElementsByTagName("recaptcha");
    182187        for (int i = 0; i < recaptchaElems.getLength(); i++)
     
    217222            authen_service.setAttribute(GSXML.NAME_ATT, GET_USER_INFORMATION_SERVICE);
    218223        }
     224        else if (service_id.equals(CHANGE_USER_EDIT_MODE_SERVICE))
     225        {
     226            authen_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS);
     227            authen_service.setAttribute(GSXML.NAME_ATT, CHANGE_USER_EDIT_MODE_SERVICE);
     228        }
    219229        else
    220230        {
     
    245255    }
    246256
    247     protected Element processGetUserInformation(Element request)
     257    protected Element processChangeUserEditMode(Element request)
    248258    {
    249259        // Create a new (empty) result message
    250260        Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);
    251261
     262        result.setAttribute(GSXML.FROM_ATT, CHANGE_USER_EDIT_MODE_SERVICE);
     263        result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS);
     264
     265        Element paramList = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
     266        if (paramList == null)
     267        {
     268            GSXML.addError(this.doc, result, _errorMessageMap.get(ERROR_REQUEST_HAS_NO_PARAM_LIST));
     269            return result;
     270        }
     271
     272        HashMap<String, Serializable> params = GSXML.extractParams(paramList, true);
     273
     274        String username = (String) params.get("username");
     275        String editMode = (String) params.get("enabled");
     276
     277        if (!editMode.toLowerCase().equals("true") && !editMode.toLowerCase().equals("false"))
     278        {
     279            editMode = "false";
     280        }
     281
     282        System.err.println("SETTING USER DATA -> " + username + " -> USER_EDIT_ENABLED -> " + editMode);
     283
     284        DerbyWrapper dw = openDatabase();
     285        dw.addUserData(username, "USER_EDIT_ENABLED", editMode);
     286        dw.closeDatabase();
     287
     288        return result;
     289    }
     290
     291    protected Element processGetUserInformation(Element request)
     292    {
     293        // Create a new (empty) result message
     294        Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);
     295
    252296        result.setAttribute(GSXML.FROM_ATT, GET_USER_INFORMATION_SERVICE);
    253297        result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS);
     
    272316        DerbyWrapper derbyWrapper = openDatabase();
    273317
    274         try
    275         {
    276             UserQueryResult userQueryResult = derbyWrapper.findUser(username);
    277 
    278             Vector<UserTermInfo> terms = userQueryResult.getUserTerms();
    279 
    280             if (terms.size() == 0)
    281             {
    282                 GSXML.addError(this.doc, result, _errorMessageMap.get(ERROR_REQUESTED_USER_NOT_FOUND));
    283                 return result;
    284             }
    285 
    286             UserTermInfo userInfo = terms.get(0);
    287             Element userInfoList = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
    288             result.appendChild(userInfoList);
    289 
    290             Element usernameField = GSXML.createParameter(this.doc, "username", userInfo.username);
    291             Element passwordField = GSXML.createParameter(this.doc, "password", userInfo.password);
    292             Element groupsField = GSXML.createParameter(this.doc, "groups", userInfo.groups);
    293             Element accountStatusField = GSXML.createParameter(this.doc, "accountstatus", userInfo.accountstatus);
    294             Element commentField = GSXML.createParameter(this.doc, "comment", userInfo.comment);
    295 
    296             userInfoList.appendChild(usernameField);
    297             userInfoList.appendChild(passwordField);
    298             userInfoList.appendChild(groupsField);
    299             userInfoList.appendChild(accountStatusField);
    300             userInfoList.appendChild(commentField);
    301         }
    302         catch (SQLException ex)
    303         {
    304             GSXML.addError(this.doc, result, _errorMessageMap.get(ERROR_SQL_EXCEPTION));
    305             ex.printStackTrace();
    306         }
     318        UserQueryResult userQueryResult = derbyWrapper.findUser(username);
     319        String editEnabled = derbyWrapper.getUserData(username, "USER_EDIT_ENABLED");
     320
     321        Vector<UserTermInfo> terms = userQueryResult.getUserTerms();
     322
     323        if (terms.size() == 0)
     324        {
     325            GSXML.addError(this.doc, result, _errorMessageMap.get(ERROR_REQUESTED_USER_NOT_FOUND));
     326            return result;
     327        }
     328
     329        UserTermInfo userInfo = terms.get(0);
     330        Element userInfoList = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
     331        result.appendChild(userInfoList);
     332
     333        Element usernameField = GSXML.createParameter(this.doc, "username", userInfo.username);
     334        Element passwordField = GSXML.createParameter(this.doc, "password", userInfo.password);
     335        Element groupsField = GSXML.createParameter(this.doc, "groups", userInfo.groups);
     336        Element accountStatusField = GSXML.createParameter(this.doc, "accountstatus", userInfo.accountstatus);
     337        Element commentField = GSXML.createParameter(this.doc, "comment", userInfo.comment);
     338
     339        if (editEnabled != null)
     340        {
     341            Element editEnabledElem = GSXML.createParameter(this.doc, "editEnabled", editEnabled);
     342            userInfoList.appendChild(editEnabledElem);
     343        }
     344
     345        userInfoList.appendChild(usernameField);
     346        userInfoList.appendChild(passwordField);
     347        userInfoList.appendChild(groupsField);
     348        userInfoList.appendChild(accountStatusField);
     349        userInfoList.appendChild(commentField);
    307350
    308351        derbyWrapper.closeDatabase();
Note: See TracChangeset for help on using the changeset viewer.