linagora / twake-on-matrix

A multi-platform (Flutter) application for connecting to Matrix - an open network for secure, decentralized communication, with your favorite devices.
GNU Affero General Public License v3.0
51 stars 17 forks source link

Gromming Registration #863

Closed hoangdat closed 7 months ago

hoangdat commented 10 months ago

Desc:

Env:

drminh2807 commented 10 months ago

Web open app

hoangdat commented 10 months ago

Case1: one of our app was installed

Link for register:

for register site:

window.location = 'imdb://title/tt3569230';
setTimeout(function() {
  window.location = 'itms-apps://itunes.apple.com/us/app/imdb-movies-tv/id342792525'
}, 250);
hoangdat commented 10 months ago

Case 2: no app was installed before

drminh2807 commented 10 months ago

Case 1: Open register from app

  1. Register page will be open with params: redirect_url=tmail://
  2. After registerd, OIDC Web should redirect to redirect_url with param. Eg: tmail://registered?to_app=twake&play_store_url={playLinkURL}&app_store_url={appStoreLinkURL}
  3. Tmail should check to_app and open twake deeplink - UrlLauncher to check deeplink, twake.chat:// (no http)
  4. If cannot, open store_url to download, also need copy to clipboard the redirect_url with param to continue register flow after app installed (clipboard to support continue the flow)

Case 2: Open from mobile browser

hoangdat commented 10 months ago

Case 1:

  1. Original app Flutter: add post_registered_redirect_url={mobileAppUrl} twake: twake.chat:// - tmail: teammail.mobile:// JS: handling post_registered_redirect_url
  2. JS: Register page -> redirect to post_registered_redirect_url + optional params: Eg:
    • Plain: teammail.mobile://registered?open_app=twake.chat://&play_store_url=https://google.link&app_store_url=https://apple.link
    • Encoded: teammail.mobile%3A%2F%2Fregistered%3Fopen_app%3Dtwake.chat%3A%2F%2F%26play_store_url%3Dhttps%3A%2F%2Fgoogle.link%26app_store_url%3Dhttps%3A%2F%2Fapple.link
  3. Original app Flutter:
    if (UrlLaucher.canOpenUrl(link["open_app"]) {
    UrlLauncher.openUrl(link["open_app"]);
    } else {
    copyToClipboard(link["open_app"]);
    final storeUrl = Platform.iOS ? link["app_store_url"] : link["play_store_url"];
    UrlLauncher.openUrl(storeUrl);
    }
  4. do in (3)
  5. Opened app - Handle link["open_app"]:
hoangdat commented 10 months ago

Case 2:

  1. JS: check post_registered_redirect_url not existed
  2. Do register as normal
  3. need to handle redirect for each app: Fx: Twake Chat

    • in Android mobile browser:

    • in iOS mobile browser:

      window.location = 'twake.chat://registered';
      if (isMobileBrowser) {
      setTimeout(function() {
      window.location = isAndroid ? playStoreUrl : appStoreUrl
      // Need to check register state after app installed
      copyToClipboard('twake.chat://registered')
      }, 250);
      }
    • in web: open web app (https://beta.twake.app/web/#/registered)

    window.location = 'https://beta.twake.app/web/#/registered';
hoangdat commented 10 months ago

Play Store:

App Store:

hoangdat commented 10 months ago

Flutter:

drminh2807 commented 10 months ago

Flutter as original app

Task 1: Open register OIDC and handle post_registered_redirect_url after registered

Flutter as opened app

Task 1: [Web] Handle url path /registered

Eg: https://beta.twake.app/web/#/registered It should show button to open OIDC Question: What happen for case logged in ? Question: Should pass home_server_url as param of path ?

Task 2: [Mobile] Handle deep link twake.chat://registered

It should show same page with web

Task 3: [Mobile] Check clipboard for first install

If first install and clipboard equal twake.chat://registered => Show registered page instead login page

Note:

hoangdat commented 10 months ago

Case 1: open register from a flutter app

  1. Flutter will open the register link with params: post_registered_redirect_url={mobileAppUrl} Fx:
    https://register.tom-dev.xyz?post_registered_redirect_url=twake.chat://registered
  2. After completed register, user will want to open an app (fx: twake). Please redirect to the post_registered_redirect_url with some params:

Case 2: open register from a browser

  1. check if post_registered_redirect_url existed
  2. if yes, do as Case 1.
  3. if no, register as normal i. if it is normal browser. Open web app

    window.location = 'https://beta.twake.app/web/#/registered';

    ii. if it is mobile browser. Run this script

    window.location = 'twake.chat://registered';
    if (isMobileBrowser) {
    setTimeout(function() {
     window.location = isAndroid ? playStoreUrl : appStoreUrl
     // Need to check register state after app installed
     copyToClipboard('twake.chat://registered')
    }, 250);
    }
    • twake: twake.chat://registered
    • teammail: teammail.mobile://registered
    • tdrive: https://tdrive.linagora.com/

When you can complete the JS site with it? Khaled: try to complete it on Friday.

Khaled: docker image: bypass phone verification -> create a branch in register repository

hoangdat commented 10 months ago

@sherlockvn

Case 1:

for Twake app:

hoangdat commented 9 months ago

Register site

Sign up

  1. Mobile Twake screen -> Create Twake Id -> Register Web app (register.***) -> input form -> success -> loginToken -> Automatically back to app with loginToken (post_registered_redirect_url), app need to handle loginToken
  2. Web Case 1: beta.twake.app -> register complted -> need to back to app with token AUTOMATICALLY Case 2: landing page of Linagora or somewhere -> register complted -> list of apps -> open app with token

Sign in

  1. Mobile TwakeId screen -> Sign in -> Register Web app (register.***) -> Sign in tab -> username/passowrd -> loginToken -> How to transfer loginToken automatically back to app? Register web: - automatically back to app (post_login_redirect_url) App: Receive token -> process app to login -> work as normal
  2. Web Case 1: beta.twake.app -> login completed in Register site -> need to back to app with token AUTOMATICALLY App: will redirect automatically to Register site (post_login_redirect_url) Register app: complete the sign in -> automatically go back to the app

Case 2: landing page of Twake Workplace -> login completed in Register site -> list of apps -> user can open app with token