---
# System prepended metadata

title: 登入驗證流程

---

# 登入驗證流程

> https://bramp.github.io/js-sequence-diagrams/

是 remember me
有 refresh_token
有 token 但到期

```sequence
user->Middleware:refresh_token\n過期的token
Note over Middleware: 檢查 token jwt 時間 已到期
Note over Middleware: 有 refresh_token

Middleware->Backend: refresh_token
Backend->Middleware: new refresh token\ntoken

Middleware->user: set cookie(token, refresh_token)
```


沒 refresh_token (非 remember me)
有 token 但到期

```sequence
user->Middleware:過期的token
Note over Middleware: 檢查 token jwt 時間 到期
Note over Middleware: 沒 refresh_token

Middleware->user: redirect('/login')
Note over user:'/login'

```



```sequence
title:登入但不remember
Login->api/login:acc:pw
api/login->Backend: acc:pw
Backend->api/login: token,refresh_token
Note over api/login, Login:setCookie(token)
api/login->Login:ok
```

```sequence
title:登入並remember
Login->api/login:acc:pw
api/login->Backend: acc:pw
Backend->api/login: token,refresh_token
Note over api/login, Login:setCookie(token,refresh_token)
api/login->Login:ok
```



```mermaid
flowchart TB
    A(3 Authorization) --> B[4.2 新增或更新開通]
    B[4.2 新增或更新開通] --> C[5.2 掃描充電]

 


  subgraph 點數
  DDDA[ 6.2 準備充電-使用和泰點數]
  DDDB[ 6.2 準備充電-不使用和泰]
  end

    C[5.2 掃描充電]  --> DDDA[ 6.2 準備充電-使用和泰點數]
    C[5.2 掃描充電]  --> DDDB[ 6.2 準備充電-不使用和泰]

 


  subgraph 優惠卷
  DDA[ 6.2 準備充電-使用優惠卷]
  DDB[ 6.2 準備充電-不使用優惠卷]
  end

 

 

    DDDA[ 6.2 準備充電-使用和泰點數]  --> DDA[ 6.2 準備充電-使用優惠卷]
    DDDA[ 6.2 準備充電-使用和泰點數]  --> DDB[ 6.2 準備充電-不使用優惠卷]
    DDDB[ 6.2 準備充電-不使用和泰]  --> DDA[ 6.2 準備充電-使用優惠卷]
    DDDB[ 6.2 準備充電-不使用和泰]  --> DDB[ 6.2 準備充電-不使用優惠卷]

 

DDB[ 6.2 準備充電-不使用優惠卷] --> 發票類型

 

  subgraph 發票類型
  D[ 6.2 準備充電-電子郵件開立發票]
  DA[ 6.2 準備充電-捐贈發票]
  DB[ 6.2 準備充電-手機機載具開立發票]
  DC[ 6.2 準備充電-三聯式發票]
  end

 

 

 

  subgraph 優惠卷種類
  DAA[ 6.2 準備充電-優惠卷-打折]
  DAB[ 6.2 準備充電-優惠卷-分鐘]
  DAC[ 6.2 準備充電-優惠卷-元]
  DAD[ 6.2 準備充電-優惠卷-全年免費]
  end

 

優惠卷種類 --> 發票類型
DDA --> 優惠卷種類

 

 

 

D[ 6.2 準備充電-電子郵件開立發票]
DA[ 6.2 準備充電-捐贈發票]
DB[ 6.2 準備充電-手機機載具開立發票]
DC[ 6.2 準備充電-三聯式發票]

 

發票類型 --> E[6.3 啟動充電確認]

 


    E[6.3 啟動充電確認]  --> F[ 6.4    充電狀態]
    F[6.4    充電狀態]  --> G[ 6.5    結束充電]
```