window.matrixLogin = { endpoint: location.origin + "/_matrix/client/api/v1/login", serverAcceptsPassword: false, serverAcceptsCas: false }; var submitPassword = function(user, pwd) { console.log("Logging in with password..."); var data = { type: "m.login.password", user: user, password: pwd, }; $.post(matrixLogin.endpoint, JSON.stringify(data), function(response) { show_login(); matrixLogin.onLogin(response); }).error(errorFunc); }; var submitCas = function(ticket, service) { console.log("Logging in with cas..."); var data = { type: "m.login.cas", ticket: ticket, service: service, }; $.post(matrixLogin.endpoint, JSON.stringify(data), function(response) { show_login(); matrixLogin.onLogin(response); }).error(errorFunc); }; var errorFunc = function(err) { show_login(); if (err.responseJSON && err.responseJSON.error) { setFeedbackString(err.responseJSON.error + " (" + err.responseJSON.errcode + ")"); } else { setFeedbackString("Request failed: " + err.status); } }; var getCasURL = function(cb) { $.get(matrixLogin.endpoint + "/cas", function(response) { var cas_url = response.serverUrl; cb(cas_url); }).error(errorFunc); }; var gotoCas = function() { getCasURL(function(cas_url) { var this_page = window.location.origin + window.location.pathname; var redirect_url = cas_url + "/login?service=" + encodeURIComponent(this_page); window.location.replace(redirect_url); }); } var setFeedbackString = function(text) { $("#feedback").text(text); }; var show_login = function() { $("#loading").hide(); if (matrixLogin.serverAcceptsPassword) { $("#password_form").show(); } if (matrixLogin.serverAcceptsCas) { $("#cas_flow").show(); } if (!matrixLogin.serverAcceptsPassword && !matrixLogin.serverAcceptsCas) { $("#no_login_types").show(); } }; var show_spinner = function() { $("#password_form").hide(); $("#cas_flow").hide(); $("#no_login_types").hide(); $("#loading").show(); }; var fetch_info = function(cb) { $.get(matrixLogin.endpoint, function(response) { var serverAcceptsPassword = false; var serverAcceptsCas = false; for (var i=0; i