001-011246

パッケージ版 Garoon

関心あり
0人の方が関心を示しています

REST API「ユーザーの一覧を取得する」を実行するとき、カスタマイズ項目に設定された文字列を「name」の値に指定すると、該当するユーザー情報を取得できない場合がある。

種別
不具合
機能
  • ユーザー
  • REST API
再現バージョン
  • 5.0.0
  • 5.0.1
  • 5.0.2
  • 5.5.0
  • 5.5.1
  • 5.9.0
  • 5.9.1
  • 5.9.2
  • 5.15.0
  • 5.15.1
  • 5.15.2
改修バージョン
6.0.0
公開日
2023-03-16
更新日
2023-10-27

詳細

【発生条件】
次の条件をすべて満たす場合に発生します。
  • ユーザー情報の項目に、検索対象に含める設定にしたカスタマイズ項目が存在する。

  • REST API「ユーザーの一覧を取得する」を使用するとき、カスタマイズ項目に設定された文字列を「name」の値に指定する。

  • 「name」の値に指定した文字列が、カスタマイズ項目に設定された文字列の1025バイト目以降に含まれている。

【準備】
  • ユーザー情報の項目に、検索対象に含める設定にしたカスタマイズ項目を追加します。

    例:
    ---------------
    項目名:カスタマイズ項目1(clid=1)
    項目タイプ:文字列(複数行)
    使用:「使用する」のチェックボックスを選択する
    検索対象:「検索対象に含める」のチェックボックスを選択する

    項目名:カスタマイズ項目2(clid=2)
    項目タイプ:文字列(1行)
    使用:「使用する」のチェックボックスを選択する
    検索対象:「検索対象に含める」のチェックボックスを選択する
    ---------------

    補足:
    • (システム管理画面)「ユーザー > ユーザー情報の項目」画面で追加します。

    • カスタマイズ項目1、カスタマイズ項目2の順に追加します。

    • カスタマイズ項目ID(clid)とは、カスタマイズ項目を識別するために割り当てられた数字です。

    • カスタマイズ項目ID(clid)は、次の画面のURLで確認できます。
      (システム管理画面)「ユーザー > ユーザー情報の項目 > 項目の詳細」画面

  • ユーザーを追加します。

    例:
    ---------------
    名前:ユーザー1
    カスタマイズ項目1:1234567890…(1019バイト以上の文字列)
    カスタマイズ項目2:test1
    ---------------

    補足:
    • カスタマイズ項目1には、カスタマイズ項目2と合計して1024バイトを超えるような文字列を設定します。

【再現手順】
  1. REST API「ユーザーの一覧を取得する」を使用して、ユーザー1のユーザー情報を取得します。

    例:
    ------------
    GET /xxxxx/xxxxx/grn.xxx/api/v1/base/users?name=test1 HTTP/1.1
    Host: xx.xx.xx.xx
    X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU=
    ------------

    補足:
    • 「name」の値に、カスタマイズ項目2に入力した文字列を指定します。

    • Garoon REST APIの使用については、cybozu developer networkをご確認ください。
      https://cybozu.dev/ja/garoon/docs/rest-api/

→現象発生:
 ユーザー1のユーザー情報が取得できません。

 例:
 ------------
 {"users":[],"hasNext":false}
 ------------

→正しい結果:
ユーザー1の情報が取得できます。

 例:
 ------------
 {"users":[{"id":"2","name":"ユーザー1","code":"ユーザー1"}],"hasNext":false}
 ------------

補足:
  • 検索対象に含める設定にしたカスタマイズ項目は、カスタマイズ項目ID(clid)順に文字列を連結して、1024バイトまでを検索対象としています。

  • 検索対象に含める設定にしたカスタマイズ項目が複数ある場合、各項目の文字列は1バイトの区切り文字によって区切られ、検索対象文字列として取り扱われます。

    例:
    • カスタマイズ項目1、カスタマイズ項目2がそれぞれ10バイトの場合:
      10バイト+1バイト(区切り文字)+10バイトで、検索対象となる文字列のサイズは21バイト

    • カスタマイズ項目1、カスタマイズ項目2、カスタマイズ項目3がそれぞれ10バイトの場合:
      10バイト+1バイト(区切り文字)+10バイト+1バイト(区切り文字)+10バイトで、検索対象となる文字列のサイズは32バイト

回避/対応方法

【対応方法】
検索対象に含める設定にしたカスタマイズ項目で、「name」に指定した文字列が、それよりも前にある文字列と合わせて1024バイト以内に収まるように操作を行い、REST API「ユーザーの一覧を取得する」を実行します。

例:
  • カスタマイズ項目1を、検索対象に含めない設定に変更する。
  • カスタマイズ項目1の文字数を減らす。
  • カスタマイズ項目1に設定された文字列を、カスタマイズ項目2より後に追加したカスタマイズ項目に移動する。