| Index: remoting/client/extension/client.js
|
| diff --git a/remoting/client/extension/client.js b/remoting/client/extension/client.js
|
| index 22b9c654ddec3370909aa01aa2b0d3612cf571c1..1d20e862721f8490c3cce947ba84a18cbfbab1d5 100644
|
| --- a/remoting/client/extension/client.js
|
| +++ b/remoting/client/extension/client.js
|
| @@ -49,9 +49,7 @@ function updateLoginStatus() {
|
|
|
| if (!username) {
|
| var signinLink = document.createElement('a');
|
| - signinLink.setAttribute('href',
|
| - "javascript:window.open('login.html', 'Sign In', " +
|
| - "'width=400,height=200,scrollbars=no'); return false;");
|
| + signinLink.setAttribute('href', 'javascript:chromodir_login();');
|
| signinLink.appendChild(document.createTextNode('Sign In'));
|
| loginDiv.appendChild(signinLink);
|
| } else {
|
| @@ -63,26 +61,37 @@ function updateLoginStatus() {
|
| loginDiv.appendChild(document.createTextNode(' | '));
|
|
|
| var signoutLink = document.createElement('a');
|
| - signoutLink.setAttribute('href', 'javascript:logout(this.form);');
|
| + signoutLink.setAttribute('href', 'javascript:logout_reload(this.form);');
|
| signoutLink.appendChild(document.createTextNode('Sign Out'));
|
| loginDiv.appendChild(signoutLink);
|
| }
|
| }
|
|
|
| +// Sign out the current user and reload the host list.
|
| +function logout_reload(form) {
|
| + logout();
|
| + populateHostList();
|
| +}
|
| +
|
| // Sign out the current user by erasing the auth cookies.
|
| -function logout(form) {
|
| +function logout() {
|
| setCookie('username', '', AUTH_EXPIRES);
|
| setCookie('chromoting_auth', '', AUTH_EXPIRES);
|
| setCookie('xmpp_auth', '', AUTH_EXPIRES);
|
|
|
| updateLoginStatus();
|
| - populateHostList();
|
| }
|
|
|
| -function login(form) {
|
| - var status = document.getElementById('login_status');
|
| - clear(status);
|
| - doLogin(form.username.value, form.password.value, checkLogin);
|
| +// Sign in to Chromoting Directory services.
|
| +function chromodir_login() {
|
| + document.getElementById("login_panel").style.display = "block";
|
| +}
|
| +
|
| +function login() {
|
| + var username = document.getElementById("username").value;
|
| + var password = document.getElementById("password").value;
|
| +
|
| + doLogin(username, password, checkLogin);
|
| }
|
|
|
| // Check to see if the login was successful.
|
| @@ -92,14 +101,19 @@ function checkLogin() {
|
| var xauth = getCookie('xmpp_auth');
|
|
|
| // Verify login and show login status.
|
| - var status = document.getElementById('login_status');
|
| if (cauth == BAD_AUTH_TOKEN || xauth == BAD_AUTH_TOKEN) {
|
| - appendMessage(status, '', 'Sign in failed!');
|
| - if (username) {
|
| - setCookie('username', '', AUTH_EXPIRES);
|
| - }
|
| + // Erase the username cookie.
|
| + setCookie('username', '', AUTH_EXPIRES);
|
| + showLoginError("Sign in failed!");
|
| } else {
|
| - appendMessage(status, '', 'Successfully signed in as ' + username);
|
| + // Successful login - update status and update host list.
|
| + updateLoginStatus();
|
| + populateHostList();
|
| +
|
| + // Hide login dialog and clear out values.
|
| + document.getElementById('login_panel').style.display = "none";
|
| + document.getElementById('username').value = "";
|
| + document.getElementById('password').value = "";
|
| }
|
| }
|
|
|
| @@ -146,6 +160,23 @@ function doGaiaLogin(username, password, service, done) {
|
| encodeURIComponent(service) + '&source=chromoclient');
|
| }
|
|
|
| +function showLoginError() {
|
| + var errormsgDiv = document.getElementById('errormsg_div');
|
| + clear(errormsgDiv);
|
| +
|
| + errormsgDiv.appendChild(document.createTextNode(
|
| + "The username or password you entered is incorrect ["));
|
| +
|
| + var helpLink = document.createElement('a');
|
| + helpLink.setAttribute('href',
|
| + 'http://www.google.com/support/accounts/bin/answer.py?answer=27444');
|
| + helpLink.setAttribute('target', '_blank');
|
| + helpLink.appendChild(document.createTextNode('?'));
|
| + errormsgDiv.appendChild(helpLink);
|
| +
|
| + errormsgDiv.appendChild(document.createTextNode("]"));
|
| +}
|
| +
|
| function extractAuthToken(message) {
|
| var lines = message.split('\n');
|
| for (var i = 0; i < lines.length; i++) {
|
| @@ -223,13 +254,25 @@ function populateHostList() {
|
| console.log('Error message ' + errorResponse.error.message);
|
|
|
| clear(hostlistDiv);
|
| - appendMessage(hostlistDiv, 'message',
|
| - 'Unable to load host list for ' + username + '. ' +
|
| - 'Please try again later.');
|
| - appendMessage(hostlistDiv, 'message',
|
| - 'Error code: ' + errorResponse.error.code);
|
| - appendMessage(hostlistDiv, 'message',
|
| - 'Message: ' + errorResponse.error.message);
|
| + if (errorResponse.error.message == "Token expired") {
|
| + appendMessage(hostlistDiv, 'message',
|
| + 'The authentication token for ' + username +
|
| + ' has expired. Please sign in again.');
|
| + logout();
|
| + } else if (errorResponse.error.message == "Token invalid") {
|
| + appendMessage(hostlistDiv, 'message',
|
| + 'Invalid authentication token for ' + username + '. ' +
|
| + 'Please sign in again.');
|
| + logout();
|
| + } else {
|
| + appendMessage(hostlistDiv, 'message',
|
| + 'Unable to load host list for ' + username + '. ' +
|
| + 'Please try again later.');
|
| + appendMessage(hostlistDiv, 'message',
|
| + 'Error code: ' + errorResponse.error.code);
|
| + appendMessage(hostlistDiv, 'message',
|
| + 'Message: ' + errorResponse.error.message);
|
| + }
|
| }
|
| };
|
|
|
|
|