http://www.perlmonks.org?node_id=415984


in reply to A new chatterbox flavour

Nice, but you'll need to change how you compare the username in login.callback:
cookie.get( 'userpass' ).indexOf( document.getElementById( ' +user' ).value ) != 0
should un-URL-encode the cookie's value. For a quick (local) fix so I could log in, I changed it to:
cookie.get( 'userpass' ) .replace(/%25/g, '%') .replace(/%20/g, ' ') .indexOf( document.getElementById( 'user' ).value ) != 0
You'll want to do more than just that though for future releases.

Replies are listed 'Best First'.
Re^2: A new chatterbox flavour
by Aristotle (Chancellor) on Dec 19, 2004 at 16:07 UTC

    Duh, of course. Thanks for catching that. Doing it at the comparison point is wrong though, the real fix is to de-escape the URI encoding for cookie data when it's parsed. That means simply:

    --- pmchatter.html.old 2004-12-19 17:05:59.000000000 +0100 +++ pmchatter.html 2004-12-19 17:05:13.000000000 +0100 @@ -17,3 +17,3 @@ var kv = record[ i ].split( /=/ ); - this.data[ kv[ 0 ] ] = kv[ 1 ]; + this.data[ decodeURIComponent( kv[ 0 ] ) ] = d +ecodeURIComponent( kv[ 1 ] ); } @@ -63,3 +63,3 @@ if( userpass.length ) { - req.setRequestHeader( 'Cookie', 'userpass=' + userpass + ); + req.setRequestHeader( 'Cookie', 'userpass=' + encodeUR +IComponent( userpass ) ); }

    I updated the root node.

    Update: it wasn't quite as trivial — need to re-escape the cookie to send it, of course.

    Makeshifts last the longest.

      Good point. I hadn't really studied it much other than looking for where the login "failed" for me.

        But then I forgot to re-escape the cookie… patch and root node updated.

        Makeshifts last the longest.