From 4e0d930014975394b17cff54e06666ccd1e4f6fb Mon Sep 17 00:00:00 2001 From: Steven Hammerton Date: Mon, 12 Oct 2015 10:13:01 +0100 Subject: [PATCH] Pull down some CAS stuff from vector into controller and logic class --- src/CasLogic.js | 28 ++++++++++++++++++++ src/controllers/organisms/CasLogin.js | 37 +++++++++++++++++++++++++++ src/controllers/pages/MatrixChat.js | 7 ++--- 3 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 src/CasLogic.js create mode 100644 src/controllers/organisms/CasLogin.js diff --git a/src/CasLogic.js b/src/CasLogic.js new file mode 100644 index 0000000000..cd25f8e067 --- /dev/null +++ b/src/CasLogic.js @@ -0,0 +1,28 @@ +/* +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 new file mode 100644 index 0000000000..9c58d32c06 --- /dev/null +++ b/src/controllers/organisms/CasLogin.js @@ -0,0 +1,37 @@ +/* +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 React = require("react"); +var MatrixClientPeg = require("../../MatrixClientPeg"); +var Cas = require("../../CasLogic"); + +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.'}); + }); + }, + +}; diff --git a/src/controllers/pages/MatrixChat.js b/src/controllers/pages/MatrixChat.js index f92fe51ce2..2e93ed184f 100644 --- a/src/controllers/pages/MatrixChat.js +++ b/src/controllers/pages/MatrixChat.js @@ -23,6 +23,8 @@ var q = require("q"); var sdk = require('../../index'); var MatrixTools = require('../../MatrixTools'); +var Cas = require("../../CasLogic"); + module.exports = { PageTypes: { RoomView: "room_view", @@ -132,12 +134,11 @@ module.exports = { var self = this; var client = MatrixClientPeg.get(); - var splitLocation = window.location.href.split('/'); - var serviceUrl = splitLocation[0] + "//" + splitLocation[2]; + var serviceUrl = Cas.getServiceUrl(); client.loginWithCas(payload.params.ticket, serviceUrl).done(function(data) { MatrixClientPeg.replaceUsingAccessToken( - client.getHsUrl(), client.getIsUrl(), + client.getHomeserverUrl(), client.getIdentityServerUrl(), data.user_id, data.access_token ); self.setState({