forked from mystiq/hydrogen-web
Implement SSOLoginHelper
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
This commit is contained in:
parent
f8b0ef052f
commit
4b72b64a2e
3 changed files with 29 additions and 3 deletions
|
@ -54,7 +54,7 @@ export class SSOLoginViewModel extends ViewModel{
|
|||
this._loadViewModel = this.track(new SessionLoadViewModel(this.childOptions({
|
||||
createAndStartSessionContainer: async () => {
|
||||
if (loginOptions.sso) {
|
||||
this._sessionContainer.startWithLogin(loginOptions.sso(this._loginToken));
|
||||
this._sessionContainer.startWithLogin(loginOptions.token(this._loginToken));
|
||||
}
|
||||
return this._sessionContainer;
|
||||
},
|
||||
|
@ -73,7 +73,7 @@ export class SSOLoginViewModel extends ViewModel{
|
|||
|
||||
async startSSOLogin() {
|
||||
await this.platform.settingsStorage.setString("sso_ongoing_login_homeserver", this._homeserver);
|
||||
const link = `${this._homeserver}/_matrix/client/r0/login/sso/redirect?redirectUrl=${this.urlCreator.createSSOCallbackURL()}`;
|
||||
const link = this._loginOptions.sso.ssoEndpointLink(this.urlCreator.createSSOCallbackURL());
|
||||
this.platform.openUrl(link);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ import {Sync, SyncStatus} from "./Sync.js";
|
|||
import {Session} from "./Session.js";
|
||||
import {PasswordLoginMethod} from "./login/PasswordLoginMethod.js";
|
||||
import {TokenLoginMethod} from "./login/TokenLoginMethod.js";
|
||||
import {SSOLoginHelper} from "./login/SSOLoginHelper.js";
|
||||
|
||||
export const LoadStatus = createEnum(
|
||||
"NotLoading",
|
||||
|
@ -103,7 +104,7 @@ export class SessionContainer {
|
|||
result.password = (username, password) => new PasswordLoginMethod({homeServer, username, password});
|
||||
}
|
||||
else if (flow.type === "m.login.sso" && flows.find(flow => flow.type === "m.login.token")) {
|
||||
result.sso = loginToken => new TokenLoginMethod({homeServer, loginToken});
|
||||
result.sso = new SSOLoginHelper(homeServer);
|
||||
}
|
||||
else if (flow.type === "m.login.token") {
|
||||
result.token = loginToken => new TokenLoginMethod({homeServer, loginToken});
|
||||
|
|
25
src/matrix/login/SSOLoginHelper.js
Normal file
25
src/matrix/login/SSOLoginHelper.js
Normal file
|
@ -0,0 +1,25 @@
|
|||
/*
|
||||
Copyright 2021 The Matrix.org Foundation C.I.C.
|
||||
|
||||
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.
|
||||
*/
|
||||
|
||||
export class SSOLoginHelper{
|
||||
constructor(homeserver) {
|
||||
this._homeserver = homeserver;
|
||||
}
|
||||
|
||||
ssoEndpointLink(redirectURL) {
|
||||
return `${this._homeserver}/_matrix/client/r0/login/sso/redirect?redirectUrl=${redirectURL}`;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue