Merge pull request #19 from stevenhammerton/sh-cas-auth

Add support for CAS login
This commit is contained in:
David Baker 2015-10-13 14:25:39 +01:00
commit 9e596ebb75
3 changed files with 96 additions and 0 deletions

View file

@ -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",
@ -128,6 +130,30 @@ module.exports = {
screen: 'login'
});
this.notifyNewScreen('login');
break;
case 'cas_login':
if (this.state.logged_in) return;
var self = this;
var client = MatrixClientPeg.get();
var serviceUrl = Cas.getServiceUrl();
client.loginWithCas(payload.params.ticket, serviceUrl).done(function(data) {
MatrixClientPeg.replaceUsingAccessToken(
client.getHomeserverUrl(), client.getIdentityServerUrl(),
data.user_id, data.access_token
);
self.setState({
screen: undefined,
logged_in: true
});
self.startMatrixClient();
self.notifyNewScreen('');
}, function(error) {
self.notifyNewScreen('login');
self.setState({errorText: 'Login failed.'});
});
break;
case 'view_room':
this.focusComposer = true;
@ -336,6 +362,11 @@ module.exports = {
action: 'start_login',
params: params
});
} else if (screen == 'cas_login') {
dis.dispatch({
action: 'cas_login',
params: params
});
} else if (screen.indexOf('room/') == 0) {
var roomString = screen.split('/')[1];
if (roomString[0] == '#') {