Skip to content

FromDoppler/doppler-session-mfe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Doppler Session Micro-Frontend

Doppler Session Polling

Basic behavior of DopplerSession micro-frontend:

sequenceDiagram
  participant Browser
  participant DopplerSessionMFE
  participant window
  participant DopplerMVC

  Browser->>+DopplerSessionMFE: start
  DopplerSessionMFE->>window: WRITE dopplerSessionState = undefined
  DopplerSessionMFE-)window:dispatchEvent("doppler-session-state-update")
  alt User does not have a session in Doppler
    DopplerSessionMFE->>+DopplerMVC: GetUserData(cookie)
    DopplerMVC-->>-DopplerSessionMFE: Error
    DopplerSessionMFE->>window: WRITE dopplerSessionState = { status: "non-authenticated" }
    DopplerSessionMFE-)window: dispatchEvent("doppler-session-state-update", { status: "non-authenticated" })
  else User has a session in Doppler
    DopplerSessionMFE->>+DopplerMVC: GetUserData(cookie)
    DopplerMVC-->>-DopplerSessionMFE: UserData
    DopplerSessionMFE->>window: WRITE dopplerSessionState = { status: "authenticated", . . . }
    DopplerSessionMFE-)window: dispatchEvent("doppler-session-state-update", { status: "authenticated", . . . })
  end
  deactivate DopplerSessionMFE

  loop Each 5 min
  Browser->>+DopplerSessionMFE: interval
  alt User does not have a session in Doppler
    DopplerSessionMFE->>+DopplerMVC: GetUserData(cookie)
    DopplerMVC-->>-DopplerSessionMFE: Error
    DopplerSessionMFE->>window: WRITE dopplerSessionState = { status: "non-authenticated" }
    DopplerSessionMFE-)window: dispatchEvent("doppler-session-state-update", { status: "non-authenticated" })
  else User has a session in Doppler
    DopplerSessionMFE->>+DopplerMVC: GetUserData(cookie)
    DopplerMVC-->>-DopplerSessionMFE: UserData
    DopplerSessionMFE->>window: WRITE dopplerSessionState = { status: "authenticated", . . . }
    DopplerSessionMFE-)window: dispatchEvent("doppler-session-state-update", { status: "authenticated", . . . })
  end
  deactivate DopplerSessionMFE
  end
Loading

Opening a private page in a WebApp micro-frontend:

sequenceDiagram
  participant Browser
  participant WebAppMFE
  participant window

  Browser->>+WebAppMFE: start
  WebAppMFE-)window: addEventListener ("doppler-session-state-update", . . .)
  WebAppMFE->>+window: READ dopplerSessionState
  window-->>-WebAppMFE: READ undefined [*]
  WebAppMFE-->>-Browser: Show spinner
  alt WebAppMFE loaded before DopplerSessionMFE be ready
    window->>+WebAppMFE: on "doppler-session-state-update"
    WebAppMFE->>+window: READ dopplerSessionState
    window-->>-WebAppMFE: READ undefined [*]
    WebAppMFE-->>-Browser: Show spinner
  end
  alt User does not have a session in Doppler
    window->>+WebAppMFE: on "doppler-session-state-update"
    WebAppMFE->>+window: READ dopplerSessionState
    window-->>-WebAppMFE: READ { status = "non-authenticated" }
    WebAppMFE-->>-Browser: Redirect to Login
  else User has a session in Doppler
    window->>+WebAppMFE: on "doppler-session-state-update"
    WebAppMFE->>+window: READ dopplerSessionState
    window-->>-WebAppMFE: READ { status = "authenticated", . . . }
    WebAppMFE-->>-Browser: Render the page
  end
Loading

[*] At the moment, the first answers for READ dopplerSessionState will always be undefined. But in the future, DopplerSession micro-frontend is going to be improved to cache the last session state (for example, in local storage), so the first steps could be omitted.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •