CAFECA-IO / iSunFA

Artificial Intelligence in Financial
https://isunfa.com
GNU General Public License v3.0
0 stars 0 forks source link

login sequence diagram #1043

Closed arealclimber closed 3 months ago

arealclimber commented 3 months ago
arealclimber commented 3 months ago

iSunFA Login (1)

title iSunFA Login
participant "User" as User
participant "Front-end" as Frontend
participant "Back-end" as Backend
participant "Database" as Database

User->>Frontend: 觸發登入
activate User
activate Frontend
Frontend->Backend: 請求 challenge
activate Backend
Backend->Database: 從資料庫拿取 challenge
activate Database
Backend<--Database: 返回 challenge
deactivate Database
Frontend<--Backend: 返回 challenge
deactivate Backend
User<--Frontend:使用 challenge 跟 client.authenticate 觸發用戶生物認證或裝置密碼認證
User->Frontend:用戶通過認證後返回 authentication

alt#2c92f2 有邀請碼
    Frontend->>Backend: 呼叫 signInAPI 並傳遞 authentication 和 invitation
    activate Backend
    Backend->Database: 從資料庫拿取 challenge
    activate Database
    Backend<--Database: 返回 challenge
    deactivate Database

    alt#abffc1 登入成功
Backend->Database:從資料庫根據 credentialId 拿取 user 資料
activate Database
Backend<--Database:返回 getUser
deactivate Database
    Backend->>Backend: 使用 challenge, getUser 跟呼叫 server.verifyAuthentication 驗證登入成功

        Backend->>Backend: 設置 session.userId 為 getUser.id
        Backend->>Database: 更新邀請碼狀態並創建管理員
        activate Database
        Database-->>Backend: 返回結果
        deactivate Database
        Backend-->>Frontend: 返回 getUser
        deactivate Backend
        Frontend->>Frontend: 設置用戶相關狀態
        Frontend-->>User: 登入成功,顯示用戶資訊

    else 登入失敗
    alt#ffc5ab 1.FIDO2 驗證失敗
    Frontend->>Backend: 呼叫 signInAPI 並傳遞 authentication 和 invitation
    activate Backend

        Backend->Database: 從資料庫拿取 challenge
    activate Database
    Backend<--Database: 返回 challenge
    deactivate Database
        Backend->Database:從資料庫根據 credentialId 拿取 user 資料
activate Database
Backend<--Database:返回 getUser
deactivate Database
    Backend->>Backend: 使用 challenge, getUser 跟呼叫 server.verifyAuthentication 驗證登入失敗
        Backend-->>Frontend: 返回錯誤訊息
        deactivate Backend
        Frontend-->>User: 登入失敗,顯示錯誤訊息
    end
    alt#ffc5ab 2.在資料庫找不到用戶
    Frontend->>Backend: 呼叫 signInAPI 並傳遞 authentication 和 invitation
    activate Backend
    Backend->Database: 從資料庫拿取 challenge
    activate Database
    Backend<--Database: 返回 challenge
    deactivate Database
        Backend->Database:從資料庫根據 credentialId 拿取 user 資料
activate Database
Backend<--Database:找不到 getUser
deactivate Database

         Backend-->>Frontend: 返回錯誤訊息
         deactivate Backend
        Frontend-->>User: 登入失敗,顯示錯誤訊息
    end
    alt#ffc5ab 3.創建管理員失敗
    Frontend->>Backend: 呼叫 signInAPI 並傳遞 authentication 和 invitation
    activate Backend

    Backend->Database: 從資料庫拿取 challenge
    activate Database
    Backend<--Database: 返回 challenge
    deactivate Database
    Backend->Database:從資料庫根據 credentialId 拿取 user 資料
activate Database
Backend<--Database:返回 getUser
deactivate Database
    Backend->>Backend: 使用 challenge, getUser 跟呼叫 server.verifyAuthentication 驗證登入成功
    Backend->>Backend: 設置 session.userId 為 getUser.id
        Backend->>Database: 更新邀請碼狀態並創建管理員
        activate Database
        Database-->>Backend: 創建管理員失敗
        deactivate Database

    Backend-->>Frontend: 返回錯誤訊息
    Frontend-->>User: 登入失敗,顯示錯誤訊息

    end
    end
else 無邀請碼
alt#abffc1 登入成功
    Frontend->>Backend: 呼叫 signInAPI 並傳遞 authentication

    Backend->Database: 從資料庫拿取 challenge
    activate Database
    Backend<--Database: 返回 challenge
    deactivate Database

    Backend->Database:從資料庫根據 credentialId 拿取 user 資料
activate Database
Backend<--Database:返回 getUser
deactivate Database
    Backend->>Backend: 使用 challenge, getUser 跟呼叫 server.verifyAuthentication 驗證登入成功

        Backend->>Backend: 設置 session.userId 為 getUser.id

        Backend-->>Frontend: 返回getUser
        deactivate Backend
        Frontend->>Frontend: 設置用戶相關狀態
        Frontend-->>User: 登入成功,顯示用戶資訊
    else 登入失敗
        alt#ffc5ab 1.FIDO2 驗證失敗
    Frontend->>Backend: 呼叫 signInAPI 並傳遞 authentication
    activate Backend
            Backend->Database: 從資料庫拿取 challenge
    activate Database
    Backend<--Database: 返回 challenge
    deactivate Database

    Backend->Database:從資料庫根據 credentialId 拿取 user 資料
activate Database
Backend<--Database:返回 getUser
deactivate Database
    Backend->>Backend: 使用 challenge, getUser 跟呼叫 server.verifyAuthentication 驗證登入失敗

        Backend-->>Frontend: 返回錯誤訊息

        deactivate Backend
        Frontend-->>User: 註冊失敗,顯示錯誤訊息
    end
    alt#ffc5ab 2.在資料庫找不到用戶
    Frontend->>Backend: 呼叫 signInAPI 並傳遞 authentication
    activate Backend
        Backend->Database: 從資料庫拿取 challenge
    activate Database
    Backend<--Database: 返回 challenge
    deactivate Database

    Backend->Database:從資料庫根據 credentialId 拿取 user 資料
activate Database
Backend<--Database:找不到 getUser
deactivate Database

         Backend-->>Frontend: 返回錯誤訊息
         deactivate Backend
        Frontend-->>User: 註冊失敗,顯示錯誤訊息
        deactivate User
        deactivate Frontend
    end

    end
end
arealclimber commented 3 months ago

iSunFA Login (2)

title 02 - iSunFA Login
participant "User" as User
participant "Front-end" as Frontend
participant "Back-end" as Backend
participant "Database" as Database

User->>Frontend: 觸發登入
activate User
activate Frontend
Frontend->Backend: 請求 challenge
activate Backend
Backend->Database: 從資料庫拿取 challenge
activate Database
Backend<--Database: 返回 challenge
deactivate Database
Frontend<--Backend: 返回 challenge
deactivate Backend
User<--Frontend:使用 challenge 跟 client.authenticate 觸發用戶生物認證或裝置密碼認證
User->Frontend:用戶通過認證後返回 authentication

alt#2c92f2 有邀請碼
    Frontend->>Backend: 呼叫 signInAPI 並傳遞 authentication 和 invitation
    activate Backend
    Backend->Database: 從資料庫拿取 challenge
    activate Database
    Backend<--Database: 返回 challenge
    deactivate Database

    alt#abffc1 登入成功
Backend->Database:從資料庫根據 credentialId 拿取 user 資料
activate Database
Backend<--Database:返回 getUser
deactivate Database
    Backend->>Backend: 使用 challenge, getUser 跟呼叫 server.verifyAuthentication 驗證登入成功

        Backend->>Backend: 設置 session.userId 為 getUser.id
        Backend->>Database: 更新邀請碼狀態並創建管理員
        activate Database
        Database-->>Backend: 返回結果
        deactivate Database
        Backend-->>Frontend: 返回 getUser
        deactivate Backend
        Frontend->>Frontend: 設置用戶相關狀態
        Frontend-->>User: 登入成功,顯示用戶資訊

    else 登入失敗
    alt#ffc5ab 1.FIDO2 驗證失敗
    Frontend->>Backend: 呼叫 signInAPI 並傳遞 authentication 和 invitation
    activate Backend

        Backend->Database: 從資料庫拿取 challenge
    activate Database
    Backend<--Database: 返回 challenge
    deactivate Database
        Backend->Database:從資料庫根據 credentialId 拿取 user 資料
activate Database
Backend<--Database:返回 getUser
deactivate Database
    Backend->>Backend: 使用 challenge, getUser 跟呼叫 server.verifyAuthentication 驗證登入失敗
        Backend-->>Frontend: 返回錯誤訊息
        deactivate Backend
        Frontend-->>User: 登入失敗,顯示錯誤訊息
    end
    alt#ffc5ab 2.在資料庫找不到用戶
    Frontend->>Backend: 呼叫 signInAPI 並傳遞 authentication 和 invitation
    activate Backend
    Backend->Database: 從資料庫拿取 challenge
    activate Database
    Backend<--Database: 返回 challenge
    deactivate Database
        Backend->Database:從資料庫根據 credentialId 拿取 user 資料
activate Database
Backend<--Database:找不到 getUser
deactivate Database

         Backend-->>Frontend: 返回錯誤訊息
         deactivate Backend
        Frontend-->>User: 登入失敗,顯示錯誤訊息
    end
    alt#ffc5ab 3.創建管理員失敗
    Frontend->>Backend: 呼叫 signInAPI 並傳遞 authentication 和 invitation
    activate Backend

    Backend->Database: 從資料庫拿取 challenge
    activate Database
    Backend<--Database: 返回 challenge
    deactivate Database
    Backend->Database:從資料庫根據 credentialId 拿取 user 資料
activate Database
Backend<--Database:返回 getUser
deactivate Database
    Backend->>Backend: 使用 challenge, getUser 跟呼叫 server.verifyAuthentication 驗證登入成功
    Backend->>Backend: 設置 session.userId 為 getUser.id
        Backend->>Database: 更新邀請碼狀態並創建管理員
        activate Database
        Database-->>Backend: 創建管理員失敗
        deactivate Database

    Backend-->>Frontend: 返回錯誤訊息
    Frontend-->>User: 登入失敗,顯示錯誤訊息

    end
    end
else 無邀請碼
alt#abffc1 登入成功
    Frontend->>Backend: 呼叫 signInAPI 並傳遞 authentication

    Backend->Database: 從資料庫拿取 challenge
    activate Database
    Backend<--Database: 返回 challenge
    deactivate Database

    Backend->Database:從資料庫根據 credentialId 拿取 user 資料
activate Database
Backend<--Database:返回 getUser
deactivate Database
    Backend->>Backend: 使用 challenge, getUser 跟呼叫 server.verifyAuthentication 驗證登入成功

        Backend->>Backend: 設置 session.userId 為 getUser.id

        Backend-->>Frontend: 返回getUser
        deactivate Backend
        Frontend->>Frontend: 設置用戶相關狀態
        Frontend-->>User: 登入成功,顯示用戶資訊
    else 登入失敗
        alt#ffc5ab 1.FIDO2 驗證失敗
    Frontend->>Backend: 呼叫 signInAPI 並傳遞 authentication
    activate Backend
            Backend->Database: 從資料庫拿取 challenge
    activate Database
    Backend<--Database: 返回 challenge
    deactivate Database

    Backend->Database:從資料庫根據 credentialId 拿取 user 資料
activate Database
Backend<--Database:返回 getUser
deactivate Database
    Backend->>Backend: 使用 challenge, getUser 跟呼叫 server.verifyAuthentication 驗證登入失敗

        Backend-->>Frontend: 返回錯誤訊息

        deactivate Backend
        Frontend-->>User: 註冊失敗,顯示錯誤訊息
    end
    alt#ffc5ab 2.在資料庫找不到用戶
    Frontend->>Backend: 呼叫 signInAPI 並傳遞 authentication
    activate Backend
        Backend->Database: 從資料庫拿取 challenge
    activate Database
    Backend<--Database: 返回 challenge
    deactivate Database

    Backend->Database:從資料庫根據 credentialId 拿取 user 資料
activate Database
Backend<--Database:找不到 getUser
deactivate Database

         Backend-->>Frontend: 返回錯誤訊息
         deactivate Backend
        Frontend-->>User: 註冊失敗,顯示錯誤訊息
        deactivate User
        deactivate Frontend
    end

    end
end
arealclimber commented 3 months ago

連續登入狀態

iSunFA Continuous Login

title 03 - iSunFA Continuous Login
participant "User" as User
participant "Front-end" as Frontend
participant "Back-end" as Backend
participant "Database" as Database

User->>Frontend: 進入登入頁面(請求網站資源)
activate User
activate Frontend

Frontend->>Backend: 請求 session(檢查 cookie-session)
activate Backend

Backend->>Backend:驗證 session
alt#2c92f2 Session 有效
Backend->Backend:session 有效
Backend->Database:請求用戶資料
activate Database
    Database-->>Backend: 返回用戶資料
    deactivate Database
    Backend-->>Frontend: 返回用戶資料
    Frontend-->>User: 顯示用戶資料

else Session 無效
Backend->>Backend:Session 無效
    Backend-->>Frontend: Session 無效,請求重新登入
        deactivate Backend

    Frontend-->>User: 顯示登入頁面
        deactivate User
    deactivate Frontend
end

note over User#salmon: 01 - iSunFA Registration or 02 - iSunFA Login
arealclimber commented 3 months ago

Document

arealclimber commented 3 months ago

took 3 hrs done