tchapgouv / tchap-ios

A Matrix client for iOS
https://apps.apple.com/fr/app/tchap/id1446253779
Apache License 2.0
59 stars 17 forks source link

Supprimer la configuration de serveurs par défaut si possible #1087

Open NicolasBuquet opened 1 week ago

NicolasBuquet commented 1 week ago

2 serveurs par défaut sont configurés dans Element :

Ces serveurs sont utilisés uniquement dans :

Ils peuvent poser problème dabns le cadre de l'activation du SSO car cela peut indiquer à l'application client un HomeServer qui n'est pas son HomeServer final, et qui peut donc proposer des options différentes telle :

Ils sont remplacés dans Tchap par le choix aléatoire dans une liste

            // Tchap: Get a random default IS from the IS list instead of only one
            let identityServerPrefixURL = BuildSettings.serverUrlPrefix
            let preferredKnownHosts = BuildSettings.preferredIdentityServerNames
            let index = Int(arc4random_uniform(UInt32(preferredKnownHosts.count)))
            let defaultIdentityServerUrlString = "\(identityServerPrefixURL)\(preferredKnownHosts[index])"

            // Tchap: Customize default home server.
            state = AuthenticationState(flow: flow,
                                        homeserverAddress: hsUrl ?? defaultHomeServer /*BuildSettings.serverConfigDefaultHomeserverUrlString*/,
                                        identityServer: isUrl ?? defaultIdentityServerUrlString/*BuildSettings.serverConfigDefaultIdentityServerUrlString*/)

Les 2 serveurs par défaut sont remplacés par Tchap par un tirage aléatoire dans une liste de serveurs inscrite en dur dans l'application. Exemple pour la plateforme de DEV :

    static let preferredIdentityServerNames = [
        "dev01.tchap.incubateur.net",
        "dev02.tchap.incubateur.net"
    ]

To do :

NicolasBuquet commented 1 week ago

Tant qu'on est sur l'écran d'accueil qui affiche les boutons "Je n'ai pas de compte" et 'J'ai un compte", les serveurs par défaut ne sont pas utilisé.

Leur usage commence dès qu'on sélectionne l'une des 2 opttions, par l'appel de la méthode AuthenticationService->startFlow.

J'ai un compte :

Je n'ai pas de compte :

NicolasBuquet commented 1 week ago

Les premiers appels serveur avant saisie email sont déclenchés par l'appel à WelcomeCoordinator->updateAuthServiceForDirectAuthentication.

Si on le désactive, on perd tout mode d'authentification.

Simulator Screenshot - iPhone 15 - 2024-09-04 at 15 50 12

C'est dû au fait que le preferredLoginMode de l'AuthenticationState est à sa valeur par défaut : unknown

Il est normalement mis à jour suite à la requête sur le serveur.