Improve detecting login flows supported by homeserver

This commit is contained in:
Tulir Asokan 2020-09-18 21:12:59 +03:00
parent f0a40ec20b
commit 180ecc36cc

View File

@ -252,13 +252,14 @@ func (c *Container) Login(user, password string) error {
if err != nil { if err != nil {
return err return err
} }
if len(resp.Flows) == 1 && resp.Flows[0].Type == "m.login.password" { for _, flow := range resp.Flows {
return c.PasswordLogin(user, password) if flow.Type == "m.login.password" {
} else if len(resp.Flows) == 2 && resp.Flows[0].Type == "m.login.sso" && resp.Flows[1].Type == "m.login.token" { return c.PasswordLogin(user, password)
return c.SingleSignOn() } else if flow.Type == "m.login.sso" {
} else { return c.SingleSignOn()
return fmt.Errorf("no supported login flows") }
} }
return fmt.Errorf("no supported login flows")
} }
// Logout revokes the access token, stops the syncer and calls the OnLogout() method of the UI. // Logout revokes the access token, stops the syncer and calls the OnLogout() method of the UI.