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

ユーザーとアクセスの管理

このセクションでは、Blocklet Server内でユーザー、ロール、権限、セッション、およびアクセスキーの管理に関連するクエリの詳細なリファレンスを提供します。これらのクエリを使用すると、アプリケーションのユーザーとそのアクセスレベルに関する情報を取得できます。

ユーザーの作成や権限の更新など、ユーザーおよびアクセスデータを変更する操作については、ユーザーとアクセスの管理ミューテーションのドキュメントを参照してください。

ユーザークエリ

getUsers

フィルタリングとソートのオプション付きで、ページ分割されたユーザーのリストを取得します。

パラメータ

  • input RequestUsersInput (required) — クエリパラメータを含むオブジェクト。
    • teamDid string (required) — BlockletまたはチームのDID。
    • query UserQueryInput — ユーザーリストのフィルタリング基準。
    • sort UserSortInput — ユーザーリストのソート基準。
    • paging PagingInput — ページネーションオプション。
    • dids string[] — 特定のユーザーDIDを取得するための配列。

戻り値

  • **** ResponseUsers — ユーザーのリストとページネーション情報を含むオブジェクト。
    • users UserInfo[] — ユーザーオブジェクトの配列。
    • paging Paging — 結果セットのページネーション情報。

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function fetchUsers() {
  try {
    const { users, paging } = await client.getUsers({
      input: {
        teamDid: 'z1...',
        paging: { page: 1, pageSize: 10 },
        query: {
          role: 'guest',
          approved: true,
          search: 'john.doe',
        },
        sort: {
          lastLoginAt: -1, // 最終ログイン時間で降順にソート
        },
      },
    });
    console.log('Fetched users:', users);
    console.log('Pagination info:', paging);
  } catch (error) {
    console.error('Error fetching users:', error);
  }
}

fetchUsers();

レスポンスの例

json
{
  "code": "ok",
  "users": [
    {
      "did": "z8ia...",
      "pk": "...",
      "role": "guest",
      "avatar": "/path/to/avatar.png",
      "fullName": "John Doe",
      "email": "john.doe@example.com",
      "approved": true,
      "createdAt": 1672531200,
      "lastLoginAt": 1675209600
    }
  ],
  "paging": {
    "page": 1,
    "pageSize": 10,
    "total": 1,
    "pageCount": 1
  }
}

getUser

DIDによって単一のユーザーの詳細を取得します。

パラメータ

  • input RequestTeamUserInput (required) — クエリパラメータを含むオブジェクト。
    • teamDid string (required) — BlockletまたはチームのDID。
    • user UserInfoInput (required) — ユーザーのDIDを含むオブジェクト。didフィールドのみが必須です。
      • did string (required)
    • options RequestTeamUserOptionsInput — 追加の関連データを含めるためのオプショナルなフラグ。
      • includeTags boolean — ユーザーのタグを含めるかどうか。
      • includePassports boolean — ユーザーのパスポートを含めるかどうか。
      • includeConnectedAccounts boolean — ユーザーの連携アカウントを含めるかどうか。

戻り値

  • user UserInfo — リクエストされたユーザーオブジェクト。

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function fetchUser(userDid) {
  try {
    const { user } = await client.getUser({
      input: {
        teamDid: 'z1...',
        user: { did: userDid },
        options: {
          includePassports: true,
          includeTags: true,
        },
      },
    });
    console.log('User details:', user);
  } catch (error) {
    console.error('Error fetching user:', error);
  }
}

fetchUser('z8ia...'); // 有効なユーザーDIDに置き換えてください

レスポンスの例

json
{
  "code": "ok",
  "user": {
    "did": "z8ia...",
    "fullName": "Jane Doe",
    "email": "jane.doe@example.com",
    "role": "admin",
    "approved": true,
    "passports": [],
    "tags": []
  }
}

getUsersCount

特定のチームまたはBlockletのユーザー総数を取得します。

パラメータ

  • input TeamInput (required) — チームのDIDを含むオブジェクト。
    • teamDid string (required)

戻り値

  • count number — ユーザーの総数。

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function countUsers() {
  try {
    const { count } = await client.getUsersCount({
      input: { teamDid: 'z1...' },
    });
    console.log('Total users:', count);
  } catch (error) {
    console.error('Error counting users:', error);
  }
}

countUsers();

レスポンスの例

json
{
  "code": "ok",
  "count": 125
}

getUsersCountPerRole

チームまたはBlocklet内の各ロールのユーザー数を取得します。

パラメータ

  • input TeamInput (required) — チームのDIDを含むオブジェクト。
    • teamDid string (required)

戻り値

  • counts KeyValue[] — オブジェクトの配列。各オブジェクトのkeyはロール名、valueはカウントです。

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function countUsersByRole() {
  try {
    const { counts } = await client.getUsersCountPerRole({
      input: { teamDid: 'z1...' },
    });
    console.log('User counts per role:', counts);
  } catch (error) {
    console.error('Error counting users by role:', error);
  }
}

countUsersByRole();

レスポンスの例

json
{
  "code": "ok",
  "counts": [
    { "key": "owner", "value": 1 },
    { "key": "admin", "value": 5 },
    { "key": "member", "value": 119 }
  ]
}

getOwner

Blockletまたはチームのオーナーのユーザー情報を取得します。

パラメータ

  • input TeamInput (required) — チームのDIDを含むオブジェクト。
    • teamDid string (required)

戻り値

  • user UserInfo — オーナーのユーザーオブジェクト。

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function fetchOwner() {
  try {
    const { user } = await client.getOwner({
      input: { teamDid: 'z1...' },
    });
    console.log('Owner info:', user);
  } catch (error) {
    console.error('Error fetching owner:', error);
  }
}

fetchOwner();

レスポンスの例

json
{
  "code": "ok",
  "user": {
    "did": "zNK...",
    "fullName": "Node Owner",
    "email": "owner@example.com",
    "role": "owner"
  }
}

destroySelf

ユーザーが特定のBlocklet内で自分のアカウントを削除できるようにします。この操作は元に戻せません。

パラメータ

  • input RequestTeamUserInput (required) — 自己破壊のためのユーザーの詳細を含むオブジェクト。
    • teamDid string (required) — BlockletまたはチームのDID。
    • user UserInfoInput (required) — ユーザーのDIDを含むオブジェクト。didフィールドのみが必須です。
      • did string (required)

戻り値

  • user UserInfo — 削除されたアカウントのユーザーオブジェクト。

javascript
import BlockletServerClient from '@blocklet/server-js';

// クライアントが削除対象のユーザーとして認証されていると仮定します
const client = new BlockletServerClient();

async function deleteMyAccount(userDid) {
  try {
    const { user } = await client.destroySelf({
      input: {
        teamDid: 'z1...',
        user: { did: userDid },
      },
    });
    console.log('User account deleted:', user.did);
  } catch (error) {
    console.error('Error deleting account:', error);
  }
}

deleteMyAccount('z8ia...'); // 現在認証されているユーザーのDID

レスポンスの例

json
{
  "code": "ok",
  "user": {
    "did": "z8ia...",
    "fullName": "Former User"
  }
}

ユーザーソーシャルクエリ

getUserFollowers

指定されたユーザーをフォローしているユーザーのリストを取得します。

パラメータ

  • input RequestUserRelationQueryInput (required)
    • teamDid string (required)
    • userDid string (required)
    • paging PagingInput
    • options QueryUserFollowOptionsInput

戻り値

  • **** ResponseUserFollows
    • data UserFollows[]
    • paging Paging

getUserFollowing

指定されたユーザーがフォローしているユーザーのリストを取得します。

パラメータ

  • input RequestUserRelationQueryInput (required)
    • teamDid string (required)
    • userDid string (required)
    • paging PagingInput
    • options QueryUserFollowOptionsInput

戻り値

  • **** ResponseUserFollows
    • data UserFollows[]
    • paging Paging

getUserFollowStats

フォロワー数やフォロー数など、1人以上のユーザーのフォロー関連の統計情報を取得します。

パラメータ

  • input RequestUserRelationCountInput (required)
    • teamDid string (required)
    • userDids string[] (required)
    • options QueryUserFollowStateOptionsInput

戻り値

  • data any — フォロー統計を含むオブジェクト。

checkFollowing

特定のユーザーが他の1人以上のユーザーをフォローしているかどうかを確認します。

パラメータ

  • input RequestCheckFollowingInput (required)
    • teamDid string (required)
    • followerDid string (required) — 他のユーザーをフォローしている可能性のあるユーザーのDID。
    • userDids string[] (required) — フォローされているかどうかを確認するためのDIDの配列。

戻り値

  • data any — キーがuserDidsで、値がフォロー状況を示すブール値であるオブジェクト。

getUserInvites

特定のユーザーによって招待されたユーザーのリストを取得します。

パラメータ

  • input RequestUserRelationQueryInput (required)
    • teamDid string (required)
    • userDid string (required) — 招待者のDID。
    • paging PagingInput

戻り値

  • **** ResponseUsers — 招待されたユーザーのリストとページネーション情報を含むオブジェクト。
    • users UserInfo[]
    • paging Paging

ロールと権限

getRoles

チームまたはBlocklet内で利用可能なすべてのロールのリストを取得します。

パラメータ

  • input TeamInput (required) — チームのDIDを含むオブジェクト。
    • teamDid string (required)

戻り値

  • roles Role[] — ロールオブジェクトの配列。

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function fetchRoles() {
  try {
    const { roles } = await client.getRoles({
      input: { teamDid: 'z1...' },
    });
    console.log('Available roles:', roles);
  } catch (error) {
    console.error('Error fetching roles:', error);
  }
}

fetchRoles();

レスポンスの例

json
{
  "code": "ok",
  "roles": [
    { "name": "owner", "title": "Owner", "description": "Full access to all resources." },
    { "name": "admin", "title": "Administrator", "description": "Can manage users and settings." },
    { "name": "member", "title": "Member", "description": "Standard user access." },
    { "name": "guest", "title": "Guest", "description": "Limited access." }
  ]
}

getRole

名前によって特定のロールの詳細を取得します。

パラメータ

  • input RequestTeamRoleInput (required) — チームのDIDとロール名を含むオブジェクト。
    • teamDid string (required)
    • role RoleUpdateInput (required)
      • name string (required)

戻り値

  • role Role — リクエストされたロールオブジェクト。

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function fetchRoleDetails(roleName) {
  try {
    const { role } = await client.getRole({
      input: {
        teamDid: 'z1...',
        role: { name: roleName },
      },
    });
    console.log('Role details:', role);
  } catch (error) {
    console.error('Error fetching role details:', error);
  }
}

fetchRoleDetails('admin');

レスポンスの例

json
{
  "code": "ok",
  "role": {
    "name": "admin",
    "title": "Administrator",
    "description": "Can manage users and settings.",
    "grants": ["user:create", "user:update", "setting:update"]
  }
}

getPermissions

チームまたはBlocklet内で利用可能なすべての権限のリストを取得します。

パラメータ

  • input TeamInput (required) — チームのDIDを含むオブジェクト。
    • teamDid string (required)

戻り値

  • permissions Permission[] — 権限オブジェクトの配列。

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function fetchPermissions() {
  try {
    const { permissions } = await client.getPermissions({
      input: { teamDid: 'z1...' },
    });
    console.log('Available permissions:', permissions);
  } catch (error) {
    console.error('Error fetching permissions:', error);
  }
}

fetchPermissions();

レスポンスの例

json
{
  "code": "ok",
  "permissions": [
    { "name": "user:create", "description": "Allows creating new users." },
    { "name": "user:read", "description": "Allows viewing user profiles." },
    { "name": "post:publish", "description": "Allows publishing new posts." }
  ]
}

getPermissionsByRole

特定のロールに関連付けられた権限のリストを取得します。

パラメータ

  • input RequestTeamRoleInput (required) — チームのDIDとロール名を含むオブジェクト。
    • teamDid string (required)
    • role RoleUpdateInput (required)
      • name string (required)

戻り値

  • permissions Permission[] — そのロールに関連付けられた権限オブジェクトの配列。

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function fetchRolePermissions(roleName) {
  try {
    const { permissions } = await client.getPermissionsByRole({
      input: {
        teamDid: 'z1...',
        role: { name: roleName },
      },
    });
    console.log(`Permissions for role '${roleName}':`, permissions);
  } catch (error) {
    console.error('Error fetching role permissions:', error);
  }
}

fetchRolePermissions('member');

レスポンスの例

json
{
  "code": "ok",
  "permissions": [
    { "name": "post:create", "description": "Allows creating new posts." },
    { "name": "post:read", "description": "Allows reading posts." }
  ]
}

招待とアクセスキー

getInvitations

チームまたはBlockletの保留中のすべての招待のリストを取得します。

パラメータ

  • input TeamInput (required) — チームのDIDを含むオブジェクト。
    • teamDid string (required)

戻り値

  • invitations InviteInfo[] — 招待オブジェクトの配列。

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function fetchInvitations() {
  try {
    const { invitations } = await client.getInvitations({
      input: { teamDid: 'z1...' },
    });
    console.log('Pending invitations:', invitations);
  } catch (error) {
    console.error('Error fetching invitations:', error);
  }
}

fetchInvitations();

レスポンスの例

json
{
  "code": "ok",
  "invitations": [
    {
      "inviteId": "...",
      "role": "member",
      "remark": "Invitation for new developer",
      "expireDate": "2024-12-31T23:59:59Z",
      "inviter": {
        "did": "z8ia...",
        "fullName": "Admin User"
      }
    }
  ]
}

getAccessKeys

チームまたはBlockletに関連付けられたアクセスキーのリストを取得します。

パラメータ

  • input RequestAccessKeysInput (required) — アクセスキーをフィルタリングするためのクエリパラメータを含むオブジェクト。
    • teamDid string (required)
    • paging PagingInput
    • remark string
    • componentDid string
    • resourceType string
    • resourceId string

戻り値

  • **** ResponseAccessKeys
    • list AccessKey[] — アクセスキーオブジェクトの配列。
    • paging Paging — ページネーション情報。

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function fetchAccessKeys() {
  try {
    const { list } = await client.getAccessKeys({
      input: {
        teamDid: 'z1...',
        paging: { pageSize: 20 },
      },
    });
    console.log('Access keys:', list);
  } catch (error) {
    console.error('Error fetching access keys:', error);
  }
}

fetchAccessKeys();

レスポンスの例

json
{
  "code": "ok",
  "list": [
    {
      "accessKeyId": "...",
      "remark": "CI/CD Key",
      "createdAt": 1672531200,
      "lastUsedAt": 1675209600
    }
  ],
  "paging": {
    "total": 1,
    "pageSize": 20,
    "page": 1
  }
}

getAccessKey

IDによって単一のアクセスキーの詳細を取得します。

パラメータ

  • input RequestAccessKeyInput (required) — チームのDIDとアクセスキーIDを含むオブジェクト。
    • teamDid string (required)
    • accessKeyId string (required)

戻り値

  • data AccessKey — リクエストされたアクセスキーオブジェクト。

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function fetchAccessKey(keyId) {
  try {
    const { data } = await client.getAccessKey({
      input: {
        teamDid: 'z1...',
        accessKeyId: keyId,
      },
    });
    console.log('Access key details:', data);
  } catch (error) {
    console.error('Error fetching access key:', error);
  }
}

fetchAccessKey('...'); // 有効なアクセスキーIDに置き換えてください

レスポンスの例

json
{
  "code": "ok",
  "data": {
    "accessKeyId": "...",
    "accessKeyPublic": "...",
    "remark": "API access for integration tests",
    "createdAt": 1672531200
  }
}

セッション

getSession

IDによって特定のセッションの詳細を取得します。

パラメータ

  • input RequestGetSessionInput (required) — セッションIDを含むオブジェクト。
    • id string (required)

戻り値

  • session any — リクエストされたセッションオブジェクト。

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function fetchSession(sessionId) {
  try {
    const { session } = await client.getSession({
      input: { id: sessionId },
    });
    console.log('Session details:', session);
  } catch (error) {
    console.error('Error fetching session:', error);
  }
}

fetchSession('...'); // 有効なセッションIDに置き換えてください

レスポンスの例

json
{
  "code": "ok",
  "session": {
    "sessionId": "...",
    "userDid": "z8ia...",
    "status": "active",
    "createdAt": 1675209600
  }
}

getUserSessions

特定のユーザーのセッションのページ分割されたリストを取得します。

パラメータ

  • input RequestUserSessionsInput (required) — ユーザーセッションのクエリパラメータを含むオブジェクト。
    • teamDid string (required)
    • query UserSessionQueryInput
      • userDid string (required)
    • paging PagingInput

戻り値

  • **** ResponseUserSessions
    • list UserSession[] — セッションオブジェクトの配列。
    • paging Paging — ページネーション情報。

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function fetchUserSessions(userDid) {
  try {
    const { list, paging } = await client.getUserSessions({
      input: {
        teamDid: 'z1...',
        query: { userDid: userDid },
        paging: { pageSize: 5 },
      },
    });
    console.log('User sessions:', list);
  } catch (error) {
    console.error('Error fetching user sessions:', error);
  }
}

fetchUserSessions('z8ia...');

レスポンスの例

json
{
  "code": "ok",
  "list": [
    {
      "id": "...",
      "userDid": "z8ia...",
      "status": "active",
      "lastLoginIp": "192.168.1.1",
      "createdAt": 1675209600
    }
  ],
  "paging": {
    "total": 1,
    "pageSize": 5,
    "page": 1
  }
}

getUserSessionsCount

特定のユーザーのセッションの総数を取得します。

パラメータ

  • input RequestUserSessionsCountInput (required) — ユーザーセッションをカウントするためのクエリパラメータを含むオブジェクト。
    • teamDid string (required)
    • query UserSessionQueryInput
      • userDid string (required)

戻り値

  • count number — ユーザーのセッションの総数。

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function countUserSessions(userDid) {
  try {
    const { count } = await client.getUserSessionsCount({
      input: {
        teamDid: 'z1...',
        query: { userDid: userDid },
      },
    });
    console.log('Total sessions for user:', count);
  } catch (error) {
    console.error('Error counting user sessions:', error);
  }
}

countUserSessions('z8ia...');

レスポンスの例

json
{
  "code": "ok",
  "count": 5
}

タグ

getTags

チームまたはBlockletのタグのページ分割されたリストを取得します。

パラメータ

  • input RequestTagsInput (required)
    • teamDid string (required)
    • paging PagingInput

戻り値

  • **** ResponseTags
    • tags Tag[] — タグオブジェクトの配列。
    • paging Paging — ページネーション情報。

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function fetchTags() {
  try {
    const { tags } = await client.getTags({
      input: {
        teamDid: 'z1...',
        paging: { pageSize: 100 },
      },
    });
    console.log('Available tags:', tags);
  } catch (error) {
    console.error('Error fetching tags:', error);
  }
}

fetchTags();

レスポンスの例

json
{
  "code": "ok",
  "tags": [
    {
      "id": 1,
      "title": "Developer",
      "description": "Users with development access",
      "color": "#3498db"
    }
  ],
  "paging": {
    "total": 1,
    "pageSize": 100,
    "page": 1
  }
}