メインコンテンツへスキップ

UserSessions

UserSessions コンポーネントは、ユーザーのログインセッションを表示および管理するための包括的なデータテーブルをレンダリングします。さまざまなデバイスにわたるすべてのアクティブ、期限切れ、オフラインのセッションの明確な概要を提供し、ユーザーがアカウントのセキュリティを管理できるようにします。

このコンポーネントは、セッション管理機能を実装する必要がある開発者向けのプラグアンドプレイソリューションとして設計されています。データの取得、ページネーション、UIのレンダリング、および特定のセッションからのログアウトなどのアクションを処理します。

機能

  • セッションのフィルタリング: ユーザーはセッションをステータス(onlineexpired、または offline)で簡単にフィルタリングできます。
  • 詳細情報: 各セッションエントリには、オペレーティングシステム、デバイスタイプ(ブラウザ)、ウォレットOSなど、解析されたユーザーエージェントデータが表示されます。
  • IPジオロケーション: 最終ログインIPアドレスに基づいて地理的な地域を自動的に解決し、表示します。
  • セッションの終了: ユーザーは現在のセッションを除く任意のセッションを終了させることができます。
  • 一括操作: 特定のステータスのすべてのセッションを終了させる「すべてログアウト」機能が含まれています。
  • レスポンシブデザイン: さまざまな画面サイズに適応し、デスクトップとモバイルデバイスの両方で一貫したユーザーエクスペリエンスを保証します。

仕組み

UserSessions コンポーネントは、開発者が提供する関数からセッションデータを要求することによって動作します。この設計により、コンポーネントは特定のバックエンド実装から切り離され、より大きな柔軟性が提供されます。

UserSessions

使用方法

UserSessions コンポーネントを使用するには、user オブジェクトと getUserSessions 関数を提供する必要があります。getUserSessions 関数は、バックエンドサービスからセッションデータを取得する役割を担います。

Integration Example

javascript
import { UserSessions } from '@arcblock/blocklet-ui-react';
import { client } from './libs/client'; // API クライアントインスタンス

// セッションが表示される対象のユーザーオブジェクト。
const currentUser = {
  did: 'z1...',
  name: 'Alice',
  // 他のユーザープロパティ
};

/**
 * この関数はバックエンドからセッションデータを取得します。
 * UserSessions コンポーネントは、新しいデータが必要になるたびにこの関数を呼び出します。
 *
 * @param {object} params - クエリパラメータ。
 * @param {number} params.page - 現在のページ番号。
 * @param {number} params.pageSize - ページごとのアイテム数。
 * @param {string} params.status - フィルタリングするセッションのステータス('online'、'expired'、'offline')。
 * @returns {Promise<{ list: UserSession[], paging: { total: number } }>} セッションデータに解決される Promise。
 */
const fetchUserSessions = async ({ page, pageSize, status }) => {
  const response = await client.user.getSessions({
    page,
    pageSize,
    status,
  });

  // 返り値の形式がコンポーネントの要件と一致することを確認
  return {
    list: response?.list || [],
    paging: {
      total: response?.paging?.total || 0,
    },
  };
};

export default function MyAccountSessionsPage() {
  return (
    <div>
      <h2>ログインセッションの管理</h2>
      <UserSessions
        user={currentUser}
        getUserSessions={fetchUserSessions}
      />
    </div>
  );
}

Props

UserSessions コンポーネントは、その動作と外観をカスタマイズするために以下の props を受け入れます。

  • user User (required) — セッションが表示される対象のユーザーオブジェクト。コンポーネントは、セッションリストにコンテキストを提供するためにこれを必要とします。
  • getUserSessions function (required) — バックエンドからページ分割されたセッションデータを取得する役割を担う非同期関数。page、pageSize、status を含むオブジェクトを受け取り、{ list: UserSession[], paging: { total: number } } という形式のオブジェクトに解決される Promise を返す必要があります。
  • showAction boolean (default: true) — ログアウトボタンを含む「アクション」列の表示を制御します。false に設定すると、読み取り専用のビューが作成されます。
  • showUser boolean (default: true) — 「ユーザー」列の表示を制御します。これは、各セッションのユーザーを識別する必要があるマルチユーザーまたは管理コンテキストで役立ちます。
  • showOffline boolean (default: false) — UIで「オフライン」フィルターオプションが利用可能かどうかを決定します。オフラインセッションは通常、現在アクティブではない長期間有効なセッションを表します。
  • showAppPid boolean (default: false) — セッションに関連付けられた Blocklet のプログラム ID を表示できる「App Pid」列の表示を制御します。

表示情報

このコンポーネントは、データテーブル内の各セッションについて以下の情報をレンダリングします。

説明
プラットフォームセッションのユーザーエージェント文字列から派生したオペレーティングシステムとバージョン(例:Windows/10)。
デバイスタイプセッションに使用されたブラウザまたはアプリケーション(例:Chrome/108.0.0)。
ウォレットOS接続されたDIDウォレットのオペレーティングシステム(利用可能な場合)。
App Pidセッションを作成した Blocklet のプログラム ID。(showAppPidtrue の場合に表示)。
ユーザーセッションに関連付けられたユーザー。(showUsertrue の場合に表示)。
作成日時セッションが最初に作成されたときのタイムスタンプ。
最終アクティブ最後のアクティビティのタイムスタンプ。期限切れのセッションの場合、この列には「期限切れ」と表示されます。
最終ログインIPセッションの最後に確認されたIPアドレスと、その解決された地理的な地域。
アクションセッションからログアウトするためのボタンを提供します。(showActiontrue の場合に表示)。

完全なユーザー管理インターフェースには、UserCenter コンポーネント内で UserSessions コンポーネントを使用することを検討してください。