Merge pull request #4279 from matrix-org/t3chguy/instant_sso
Support $riot: Templates for SSO/CAS urls in the welcome.html pagepull/21833/head
						commit
						1c5b7bf132
					
				| 
						 | 
				
			
			@ -37,6 +37,8 @@ export default class EmbeddedPage extends React.PureComponent {
 | 
			
		|||
        className: PropTypes.string,
 | 
			
		||||
        // Whether to wrap the page in a scrollbar
 | 
			
		||||
        scrollbar: PropTypes.bool,
 | 
			
		||||
        // Map of keys to replace with values, e.g {$placeholder: "value"}
 | 
			
		||||
        replaceMap: PropTypes.object,
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    static contextType = MatrixClientContext;
 | 
			
		||||
| 
						 | 
				
			
			@ -81,6 +83,13 @@ export default class EmbeddedPage extends React.PureComponent {
 | 
			
		|||
                }
 | 
			
		||||
 | 
			
		||||
                body = body.replace(/_t\(['"]([\s\S]*?)['"]\)/mg, (match, g1)=>this.translate(g1));
 | 
			
		||||
 | 
			
		||||
                if (this.props.replaceMap) {
 | 
			
		||||
                    Object.keys(this.props.replaceMap).forEach(key => {
 | 
			
		||||
                        body = body.split(key).join(this.props.replaceMap[key]);
 | 
			
		||||
                    });
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                this.setState({ page: body });
 | 
			
		||||
            },
 | 
			
		||||
        );
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2022,7 +2022,7 @@ export default createReactClass({
 | 
			
		|||
            }
 | 
			
		||||
        } else if (this.state.view === VIEWS.WELCOME) {
 | 
			
		||||
            const Welcome = sdk.getComponent('auth.Welcome');
 | 
			
		||||
            view = <Welcome />;
 | 
			
		||||
            view = <Welcome {...this.getServerProperties()} />;
 | 
			
		||||
        } else if (this.state.view === VIEWS.REGISTER) {
 | 
			
		||||
            const Registration = sdk.getComponent('structures.auth.Registration');
 | 
			
		||||
            view = (
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,12 @@ import React from 'react';
 | 
			
		|||
import * as sdk from '../../../index';
 | 
			
		||||
import SdkConfig from '../../../SdkConfig';
 | 
			
		||||
import AuthPage from "./AuthPage";
 | 
			
		||||
import * as Matrix from "matrix-js-sdk";
 | 
			
		||||
import {_td} from "../../../languageHandler";
 | 
			
		||||
import PlatformPeg from "../../../PlatformPeg";
 | 
			
		||||
 | 
			
		||||
// translatable strings for Welcome pages
 | 
			
		||||
_td("Sign in with SSO");
 | 
			
		||||
 | 
			
		||||
export default class Welcome extends React.PureComponent {
 | 
			
		||||
    render() {
 | 
			
		||||
| 
						 | 
				
			
			@ -33,11 +39,24 @@ export default class Welcome extends React.PureComponent {
 | 
			
		|||
            pageUrl = 'welcome.html';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const {hsUrl, isUrl} = this.props.serverConfig;
 | 
			
		||||
        const tmpClient = Matrix.createClient({
 | 
			
		||||
            baseUrl: hsUrl,
 | 
			
		||||
            idBaseUrl: isUrl,
 | 
			
		||||
        });
 | 
			
		||||
        const plaf = PlatformPeg.get();
 | 
			
		||||
        const callbackUrl = plaf.getSSOCallbackUrl(tmpClient.getHomeserverUrl(), tmpClient.getIdentityServerUrl());
 | 
			
		||||
 | 
			
		||||
        return (
 | 
			
		||||
            <AuthPage>
 | 
			
		||||
                <div className="mx_Welcome">
 | 
			
		||||
                    <EmbeddedPage className="mx_WelcomePage"
 | 
			
		||||
                    <EmbeddedPage
 | 
			
		||||
                        className="mx_WelcomePage"
 | 
			
		||||
                        url={pageUrl}
 | 
			
		||||
                        replaceMap={{
 | 
			
		||||
                            "$riot:ssoUrl": tmpClient.getSsoLoginUrl(callbackUrl.toString(), "sso"),
 | 
			
		||||
                            "$riot:casUrl": tmpClient.getSsoLoginUrl(callbackUrl.toString(), "cas"),
 | 
			
		||||
                        }}
 | 
			
		||||
                    />
 | 
			
		||||
                    <LanguageSelector />
 | 
			
		||||
                </div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1881,6 +1881,7 @@
 | 
			
		|||
    "Find other public servers or use a custom server": "Find other public servers or use a custom server",
 | 
			
		||||
    "Sign in to your Matrix account on %(serverName)s": "Sign in to your Matrix account on %(serverName)s",
 | 
			
		||||
    "Sign in to your Matrix account on <underlinedServerName />": "Sign in to your Matrix account on <underlinedServerName />",
 | 
			
		||||
    "Sign in with SSO": "Sign in with SSO",
 | 
			
		||||
    "Sorry, your browser is <b>not</b> able to run Riot.": "Sorry, your browser is <b>not</b> able to run Riot.",
 | 
			
		||||
    "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.",
 | 
			
		||||
    "Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue