Changeset 26233

Show
Ignore:
Timestamp:
22.09.2012 17:07:43 (7 years ago)
Author:
xiao
Message:

added user required operation PerformChangePassword?

Files:
1 modified

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);