# ログイン処理の仕様メモ

利用者がメールアドレスとパスワードでログインするときの、アプリとAPIのやり取りをまとめます。図をクリックすると定義を編集できます。

## 入力と出力

| 項目 | 内容 | 備考 |
| --- | --- | --- |
| 入力 | メールアドレス、パスワード | 空欄なら送信しない |
| 成功時 | セッションを保存してホームへ | 有効期限は30日 |
| 失敗時 | エラーを表示して入力欄に戻る | 5回失敗で15分待つ |

## 処理の流れ（PlantUML）

```plantuml
@startuml
actor 利用者
participant アプリ
participant API
利用者 -> アプリ : メールアドレスとパスワードを入力
アプリ -> API : 認証を依頼
alt 認証に成功
  API --> アプリ : セッション
  アプリ --> 利用者 : ホームを表示
else 認証に失敗
  API --> アプリ : エラー
  アプリ --> 利用者 : エラーを表示
end
@enduml
```

## 画面の移り変わり（Mermaid）

```mermaid
flowchart LR
  A[ログイン画面] -->|成功| B[ホーム]
  A -->|失敗| C[エラー表示]
  C --> A
```

## データの関係（PlantUML）

```plantuml
@startuml
left to right direction
class 利用者 {
  メールアドレス
  表示名
}
class セッション {
  トークン
  有効期限
}
利用者 "1" -- "0..*" セッション
@enduml
```
