Changeset 26233


Ignore:
Timestamp:
09/22/12 17:07:43 (8 years ago)
Author:
xiao
Message:

added user required operation PerformChangePassword

File:
1 edited

Legend:

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

    r26206 r26233  
    33import java.io.File;
    44import java.io.Serializable;
     5import java.io.UnsupportedEncodingException;
    56import java.math.BigInteger;
    67import java.security.MessageDigest;
     
    1112import java.util.Vector;
    1213import java.util.regex.Pattern;
     14
     15import java.util.Properties;
     16import javax.mail.Message;
     17import javax.mail.MessagingException;
     18import javax.mail.Session;
     19import javax.mail.Transport;
     20import javax.mail.internet.AddressException;
     21import javax.mail.internet.InternetAddress;
     22import javax.mail.internet.MimeMessage;
    1323
    1424import net.tanesha.recaptcha.ReCaptchaImpl;
     
    105115    protected static final String PERFORM_ACCOUNT_EDIT = "PerformAccEdit";
    106116    protected static final String PERFORM_RESET_PASSWORD = "PerformResetPassword";
     117    protected static final String PERFORM_CHANGE_PASSWORD = "PerformChangePassword";
     118    protected static final String PERFORM_RETRIEVE_PASSWORD = "PerformRetrievePassword";
    107119    protected static final ArrayList<String> _userOpList;
    108120    static
     
    610622            }
    611623
     624            addUserInformationToNode(null, serviceNode);
     625            serviceNode.setAttribute("operation", LIST_USERS);
     626        }
     627        else if (op.equals(PERFORM_RETRIEVE_PASSWORD))
     628        {
     629
     630        }
     631        else if (op.equals(PERFORM_CHANGE_PASSWORD))
     632        {
     633            String user_name = (String) paramMap.get("username");
     634            String oldPassword = (String) paramMap.get("oldPassword");
     635            String newPassword = (String) paramMap.get("newPassword");
     636            if (user_name==null || oldPassword==null || newPassword==null)
     637            {
     638                GSXML.addError(this.doc, result, _errorMessageMap.get("missing compulsory parameters: username, oldPassword, or newPassword"));
     639                return result;
     640            }
     641           
     642            String prevPassword = retrieveDataForUser(user_name, "password");           
     643           
     644            oldPassword = hashPassword(oldPassword);
     645            if (!oldPassword.equals(prevPassword))
     646            {
     647                addUserInformationToNode(user_name, serviceNode);
     648                serviceNode.setAttribute("operation", PERFORM_CHANGE_PASSWORD);
     649                GSXML.addError(this.doc, result, _errorMessageMap.get(ERROR_INCORRECT_PASSWORD), "Incorrect Password");
     650                return result;
     651            }
     652           
     653            //Check the given password
     654            int error;
     655            if ((error = checkPassword(newPassword)) != NO_ERROR)
     656            {
     657                GSXML.addError(this.doc, result, _errorMessageMap.get(error));
     658                return result;
     659            }
     660           
     661            newPassword = hashPassword(newPassword);
     662                       
     663            //Get the info of the given user, except for password   
     664            String prevGroups = retrieveDataForUser(user_name, "groups");
     665            String prevStatus = retrieveDataForUser(user_name, "status");
     666            String comment = "password_changed_by_user";
     667            String prevEmail = retrieveDataForUser(user_name, "email");
     668           
     669            error = removeUser(user_name);
     670            if (error != NO_ERROR)
     671            {               
     672                addUserInformationToNode(user_name, serviceNode);
     673                serviceNode.setAttribute("operation", ACCOUNT_SETTINGS);
     674                GSXML.addError(this.doc, result, _errorMessageMap.get(error));
     675               
     676                return result;
     677            }
     678           
     679            error = addUser(user_name, newPassword, prevGroups, prevStatus, comment, prevEmail);
     680            if (error != NO_ERROR)
     681            {
     682                GSXML.addError(this.doc, result, _errorMessageMap.get(error));
     683            }
     684           
    612685            addUserInformationToNode(null, serviceNode);
    613686            serviceNode.setAttribute("operation", LIST_USERS);
Note: See TracChangeset for help on using the changeset viewer.