From de165ea6ad6ee92f3f9db8a5f685db3394cbd9ee Mon Sep 17 00:00:00 2001 From: Steven Hammerton Date: Fri, 6 Nov 2015 11:21:13 +0000 Subject: [PATCH] Update CAS login to allow HS to do interaction with CAS and client receives and redeems login token --- src/CasLogic.js | 28 --------------------------- src/controllers/organisms/CasLogin.js | 16 ++++++--------- src/controllers/pages/MatrixChat.js | 17 ++++++++-------- 3 files changed, 15 insertions(+), 46 deletions(-) delete mode 100644 src/CasLogic.js diff --git a/src/CasLogic.js b/src/CasLogic.js deleted file mode 100644 index 1bcc6d5c78..0000000000 --- a/src/CasLogic.js +++ /dev/null @@ -1,28 +0,0 @@ -/* -Copyright 2015 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -var url = require ('url'); - -function getServiceUrl() { - var parsedUrl = url.parse(window.location.href); - return parsedUrl.protocol + "//" + parsedUrl.host + parsedUrl.pathname; -} - -module.exports = { - getServiceUrl: getServiceUrl -}; diff --git a/src/controllers/organisms/CasLogin.js b/src/controllers/organisms/CasLogin.js index b01c3781b0..95791a1a9a 100644 --- a/src/controllers/organisms/CasLogin.js +++ b/src/controllers/organisms/CasLogin.js @@ -17,20 +17,16 @@ limitations under the License. 'use strict'; var MatrixClientPeg = require("../../MatrixClientPeg"); -var Cas = require("../../CasLogic"); +var url = require("url"); module.exports = { onCasClicked: function(ev) { - var serviceRedirectUrl = Cas.getServiceUrl() + "#/login/cas"; - var self = this; - MatrixClientPeg.get().getCasServer().done(function(data) { - var serverUrl = data.serverUrl + "/login?service=" + encodeURIComponent(serviceRedirectUrl); - window.location.href = serverUrl; - }, function(error) { - self.setStep("stage_m.login.cas"); - self.setState({errorText: 'Login failed.'}); - }); + var cli = MatrixClientPeg.get(); + var parsedUrl = url.parse(window.location.href, true); + parsedUrl.query["homeserver"] = cli.getHomeserverUrl(); + parsedUrl.query["identityServer"] = cli.getIdentityServerUrl(); + MatrixClientPeg.get().loginWithCas(url.format(parsedUrl)); }, }; diff --git a/src/controllers/pages/MatrixChat.js b/src/controllers/pages/MatrixChat.js index a38ba8e4e7..796a3e858e 100644 --- a/src/controllers/pages/MatrixChat.js +++ b/src/controllers/pages/MatrixChat.js @@ -23,8 +23,6 @@ var sdk = require('../../index'); var MatrixTools = require('../../MatrixTools'); var linkifyMatrix = require("../../linkify-matrix"); -var Cas = require("../../CasLogic"); - module.exports = { PageTypes: { RoomView: "room_view", @@ -140,14 +138,17 @@ module.exports = { }); this.notifyNewScreen('login'); break; - case 'cas_login': + case 'token_login': if (this.state.logged_in) return; var self = this; - var client = MatrixClientPeg.get(); - var serviceUrl = Cas.getServiceUrl(); + MatrixClientPeg.replaceUsingUrls( + payload.params.homeserver, + payload.params.identityServer + ); - client.loginWithCas(payload.params.ticket, serviceUrl).done(function(data) { + var client = MatrixClientPeg.get(); + client.loginWithToken(payload.params.loginToken).done(function(data) { MatrixClientPeg.replaceUsingAccessToken( client.getHomeserverUrl(), client.getIdentityServerUrl(), data.user_id, data.access_token @@ -387,9 +388,9 @@ module.exports = { action: 'start_login', params: params }); - } else if (screen == 'cas_login') { + } else if (screen == 'token_login') { dis.dispatch({ - action: 'cas_login', + action: 'token_login', params: params }); } else if (screen.indexOf('room/') == 0) {