Fix CAS support by using a temporary Matrix client
Signed-off-by: Shell Turner <cam.turn@gmail.com>pull/21833/head
							parent
							
								
									14227b5718
								
							
						
					
					
						commit
						1380bf705a
					
				|  | @ -6,6 +6,7 @@ var MatrixClientPeg = require("./MatrixClientPeg"); | |||
| var SignupStages = require("./SignupStages"); | ||||
| var dis = require("./dispatcher"); | ||||
| var q = require("q"); | ||||
| var url = require("url"); | ||||
| 
 | ||||
| const EMAIL_STAGE_TYPE = "m.login.email.identity"; | ||||
| 
 | ||||
|  | @ -413,6 +414,15 @@ class Login extends Signup { | |||
|             throw error; | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     redirectToCas() { | ||||
|       var client = this._createTemporaryClient(); | ||||
|       var parsedUrl = url.parse(window.location.href, true); | ||||
|       parsedUrl.query["homeserver"] = client.getHomeserverUrl(); | ||||
|       parsedUrl.query["identityServer"] = client.getIdentityServerUrl(); | ||||
|       var casUrl = client.getCasLoginUrl(url.format(parsedUrl)); | ||||
|       window.location.href = casUrl; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| module.exports.Register = Register; | ||||
|  |  | |||
|  | @ -90,6 +90,10 @@ module.exports = React.createClass({ | |||
|         }).done(); | ||||
|     }, | ||||
| 
 | ||||
|     onCasLogin: function() { | ||||
|       this._loginLogic.redirectToCas(); | ||||
|     }, | ||||
| 
 | ||||
|     _onLoginAsGuestClick: function() { | ||||
|         var self = this; | ||||
|         self.setState({ | ||||
|  | @ -225,7 +229,7 @@ module.exports = React.createClass({ | |||
|                 ); | ||||
|             case 'm.login.cas': | ||||
|                 return ( | ||||
|                     <CasLogin /> | ||||
|                     <CasLogin onSubmit={this.onCasLogin} /> | ||||
|                 ); | ||||
|             default: | ||||
|                 if (!step) { | ||||
|  |  | |||
|  | @ -16,26 +16,19 @@ limitations under the License. | |||
| 
 | ||||
| 'use strict'; | ||||
| 
 | ||||
| var MatrixClientPeg = require("../../../MatrixClientPeg"); | ||||
| var React = require('react'); | ||||
| var url = require("url"); | ||||
| 
 | ||||
| module.exports = React.createClass({ | ||||
|     displayName: 'CasLogin', | ||||
| 
 | ||||
|     onCasClicked: function(ev) { | ||||
|         var cli = MatrixClientPeg.get(); | ||||
|         var parsedUrl = url.parse(window.location.href, true); | ||||
|         parsedUrl.query["homeserver"] = cli.getHomeserverUrl(); | ||||
|         parsedUrl.query["identityServer"] = cli.getIdentityServerUrl(); | ||||
|         var casUrl = MatrixClientPeg.get().getCasLoginUrl(url.format(parsedUrl)); | ||||
|         window.location.href = casUrl; | ||||
|     propTypes: { | ||||
|       onSubmit: React.PropTypes.func, // fn()
 | ||||
|     }, | ||||
| 
 | ||||
|     render: function() { | ||||
|         return ( | ||||
|             <div> | ||||
|                 <button onClick={this.onCasClicked}>Sign in with CAS</button> | ||||
|                 <button onClick={this.props.onSubmit}>Sign in with CAS</button> | ||||
|             </div> | ||||
|         ); | ||||
|     } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Shell Turner
						Shell Turner