Results 1 to 6 of 6

Thread: "Must change password" still doest work

  1. #1
    Join Date
    Sep 2005
    Posts
    95
    Rep Power
    10

    Default "Must change password" still doest work

    Just want to let you know that when creating a user if I tick the "must change password" checkbox, that user wont be able to login to Zimbra. Instead of returning a error like MI, this time it just hang, nothing happned.

    When I turned on debug, it returned something like below:

    code: "account.CHANGE_PASSWORD",
    detail: "soap:Sender",
    method: "ZmCsfeCommand.prototype.invoke",
    msg: "must change password\ncom.zimbra.cs.account.AccountServiceExce ption: must change password\n\tat com.zimbra.cs.account.AccountServiceException.CHAN GE_PASSWORD(AccountServiceException.java:83)\n\tat com.zimbra.cs.account.ldap.LdapProvisioning.authAc count(LdapProvisioning.java:1948)\n\tat com.zimbra.cs.account.ldap.LdapProvisioning.authAc count(LdapProvisioning.java:1913)\n\tat com.zimbra.cs.service.account.Auth.handle(Auth.jav a:73)\n\tat com.zimbra.soap.SoapEngine.dispatchRequest(SoapEng ine.java:249)\n\tat com.zimbra.soap.SoapEngine.dispatch(SoapEngine.jav a:163)\n\tat com.zimbra.soap.SoapEngine.dispatch(SoapEngine.jav a:84)\n\tat com.zimbra.soap.SoapServlet.doPost(SoapServlet.jav a:226)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet .java:709)\n\tat com.zimbra.cs.servlet.ZimbraServlet.service(Zimbra Servlet.java:148)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet .java:802)\n\tat org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:252)\n\ tat org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:173)\n\tat org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:214)\n\tat org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:178)\n\tat org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:126)\n\tat org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:105)\n\tat org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:107)\n\tat org.apache.catalina.valves.AccessLogValve.invoke(A ccessLogValve.java:526)\n\tat org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:148)\n\tat org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:825)\n\tat org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.processConnection(Http11Protocol.jav a:738)\n\tat org.apache.tomcat.util.net.PoolTcpEndpoint.process Socket(PoolTcpEndpoint.java:526)\n\tat org.apache.tomcat.util.net.LeaderFollowerWorkerThr ead.runIt(LeaderFollowerWorkerThread.java:80)\n\ta t org.apache.tomcat.util.threads.ThreadPool$ControlR unnable.run(ThreadPool.java:684)\n\tat java.lang.Thread.run(Thread.java:595)\n"
    My setup: Zimbra Network Trial on FC3.

    PS: why cant COS include "must change password" (and "Administrator account")? I just want to make sure that all of my users must change their password the first time they logon into Zimbra but dont know how to accomplish this easier if COS cant include "must change password".

    -g
    Last edited by graffiti; 11-15-2005 at 12:14 PM.

  2. #2
    Join Date
    Aug 2005
    Posts
    228
    Rep Power
    10

    Default

    doh. looks like a last minute change to async soap call broke something. Someone will post a two line fix in a second.

    Regarding "must change password", it was originally designed to be per-account setting, that would get set when needed, and then removed (not set to false) after someone changes their password. I can file an RFE on it to add it to the COS, and modify the server code so it sets it to false on the account object.

    roland

  3. #3
    Join Date
    Sep 2005
    Location
    Sunnyvale, CA
    Posts
    269
    Rep Power
    10

    Default

    Thanks for the report. Here's the two line fix:

    Code:
    Differences ...
    
    ==== /ZimbraWebClient/WebRoot/js/zimbraMail/share/view/ZmLogin.js#11 (ktext) ====
    
    
    387,389d386
    < 	var unameField = document.getElementById("uname");
    < 	var pwordField = document.getElementById("pass");
    < 	
    404c401
    < 	
    ---
    > 
    415a413,415
    > 			var unameField = document.getElementById("uname");
    > 			var pwordField = document.getElementById("pass");
    >
    Depending on whether you have the entire source downloaded or not, you'll want make this fix in one of two ways..

    1) Edit the production file (no deployment necessary)
    2) Edit the source file and redeploy ZimbraWebClient


    Here are detailed instructions on editing the production file:

    1. Locate where you've installed zimbra mail (most likely under tomcat/webapps/zimbra/js)
    2. Open ZmLogin.js (this should be in the root js folder, along w/ Ajax_all.js, ZimbraMail_all.js, etc)
    3. Make the fixes as described above (or read below for more info)
    4. Delete the now old ZmLogin.js.jgz
    5. Gzip ZmLogin.js (and rename to ZmLogin.js.jgz if necessary)
    6. Clear your cache on your browser (if using IE) and hit refresh


    -----------------
    Here are detailed instructions on editing the source file:
    1. Open ZimbraWebClient/ZimbraWebClient/WebRoot/js/zimbraMail/share/view/ZmLogin.js in your favorite editor
    2. Move lines 387 and 388 to after line 415


    So basically, the two methods you've edited should end up looking like this:
    Code:
    ZmLogin.submitAuthRequest = 
    function(uname, pword) {
    	try {
    	    var soapDoc = AjxSoapDoc.create("AuthRequest", "urn:zimbraAccount");
    	} catch (ex) {
    		if (AjxEnv.isIE && (ex.code == AjxException.INTERNAL_ERROR))
    			ZmLogin.setErrorMessage(ZmMsg.errorNoActiveX);
    		return;
    	}
    
        var el = soapDoc.set("account", uname);
        el.setAttribute("by", "name");
        soapDoc.set("password", pword);
    
    	var command = new ZmCsfeCommand();
    	var respCallback = new AjxCallback(null, ZmLogin._handleResponseSubmitAuthRequest, [uname, pword]);
    	command.invoke({soapDoc: soapDoc, noAuthToken: true, noSession: true, asyncMode: true, callback: respCallback});
    }
    
    ZmLogin._handleResponseSubmitAuthRequest =
    function(args) {
    	var uname	= args[0];
    	var pword	= args[1];
    	var result	= args[2];
    
    	var response;
    	try {
    		response = result.getResponse();
    	} catch (ex) {
    		DBG.dumpObj(ex);
    		if (ex.code == ZmCsfeException.ACCT_AUTH_FAILED || ex.code == ZmCsfeException.NO_SUCH_ACCOUNT) {
    			ZmLogin.setErrorMessage(ZmMsg.loginError);
    		} else if (ex.code == ZmCsfeException.SOAP_ERROR || ex.code == ZmCsfeException.NETWORK_ERROR) {
    			var msg = ZmMsg.errorNetwork + "\n\n" + ZmMsg.errorTryAgain + " " + ZmMsg.errorContact;
    			ZmLogin.setErrorMessage(msg);
    		} else if (ex.code == ZmCsfeException.ACCT_CHANGE_PASSWORD)	{
    			var unameField = document.getElementById("uname");
    			var pwordField = document.getElementById("pass");
    
    			// disable username and password fields
    			unameField.disabled = pwordField.disabled = true;
    			ZmLogin.showChangePass(ex);
    		} else {
    			var msg = ZmMsg.errorApplication + "\n\n" + ZmMsg.errorTryAgain + " " + ZmMsg.errorContact;
    			ZmLogin.setErrorMessage(msg + " (" + ex.code + ")");
    		}
    		return;
    	}
    	var resp = response.Body.AuthResponse;
    	ZmLogin._authToken = resp.authToken;
    	ZmLogin._authTokenLifetime = resp.lifetime;
    	var mailServer = resp.refer;
    	var pcChecked = document.getElementById("publicComputer").checked;
    	ZmLogin.handleSuccess(ZmLogin._authToken, ZmLogin._authTokenLifetime, mailServer, uname, pword, !pcChecked);
    	ZmLogin._authToken = ZmLogin._authTokenLifetime = null;
    };



    Dont forget to redeploy the web client (using Ant)
    1. Open up a console or in windows, the command prompt.
    2. Change to folder *zimbra_src_install*/ZimbraWebClient
    3. type "ant prod-deploy" (w/o quotes)


    The prod-deply target will do all the right things to deploy the web client into production.
    Last edited by pshah; 11-15-2005 at 02:32 PM.

  4. #4
    Join Date
    Oct 2005
    Location
    Calgary, AB
    Posts
    232
    Rep Power
    10

    Default

    Quote Originally Posted by pshah
    Thanks for the report. Here's the two line fix:

    Dont forget to redeploy the web client (using Ant)
    1. Open up a console or in windows, the command prompt.
    2. Change to folder *zimbra_src_install*/ZimbraWebClient
    3. type "ant prod-deploy" (w/o quotes)


    The prod-deply target will do all the right things to deploy the web client into production.
    When trying to fix the failure of "Must Change Password" does the above reference apply to both methods of repairing? Or just the pre-install repair? If it does apply to a system that already has Zimbra up and running where is this ZimbraWebClient folder?

    Cheers,

    Travis

  5. #5
    Join Date
    Sep 2005
    Location
    Sunnyvale, CA
    Posts
    269
    Rep Power
    10

    Default

    You only need to run Ant and deploy for "pre-install" - meaning, if you've downloaded the source code and compiled it and have deployed it previously (you would know if you've already done this before).

    Otherwise, editing the file in production (post-install) should work (assuming you clear cache on ur browser and then refresh).

  6. #6
    Join Date
    Nov 2005
    Posts
    51
    Rep Power
    10

    Default

    Thanks for the patch, just a side note, don't use tar -zcf todo the compression deffinalty use gzip.

    -Ben

Similar Threads

  1. Replies: 42
    Last Post: 08-11-2006, 10:50 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •