【kViewer】レコード詳細画面にあるFormBridgeの編集ボタンの表示/非表示をログインユーザーの属性で切り替えたい

KintoneApp認証でログインしているユーザーに対して、ユーザー管理の属性で設定している値をjavascriptで参照したいのですが、そもそも参照できるでしょうか?

以下、やりたいことのイメージです!
↓↓↓↓

自社のデータのみ閲覧でき、データ登録者本人のみ編集できるようにしたい

▼Kintoneのデータ
#|会社|製品|登録者ID
ーーーーーーーーーーーー
①|A社|WW|A001
②|A社|XX|A002
③|B社|YY|B003
④|B社|ZZ|B003

▼KViewer
・ユーザー管理の登録イメージ
メールアドレス|会社|登録者ID
ーーーーーーーーーーーーーーー
*****1@aa.co.jp|A社|A001
*****2@aa.co.jp|A社|A002
*****3@bb.com|B社|B003

・ログインユーザー毎の一覧画面、詳細画面での挙動
*****1@aa.co.jp:①、②ともに閲覧できるが、①の詳細画面にのみ編集ボタン表示
*****2@aa.co.jp:①、②ともに閲覧できるが、②の詳細画面にのみ編集ボタン表示
*****3@bb.com:③、④ともに閲覧でき、③、④の詳細画面ともに編集ボタン表示

▼jsのイメージ

(function() {
    'use strict';

    kv.events.record.mounted = [function (state) {

        var userRegID = /*ログインユーザーの登録者ID(ユーザー管理で設定)*/;
        var dataRegID = state.record['RegID'].value;

        if(userRegID != dataRegID) {
            $('a.kv-fb-content').hide();
        } else {
            $('a.kv-fb-content').show();
        }

        return state;
    }]

})();

ログインユーザーの情報を取得するなら、次のAPIを使えますが…
ログインユーザーの情報を取得する

ユーザー管理の属性で設定している値

cybozu.com 共通管理で設定したユーザー情報ということでしょうか?
上記APIで取得できるプロパティに登録者IDを指定するのであれば、取得できると思います。

ご返信ありがとうございます!

本件ですが、kintoneのログインユーザー情報ではなく、kViewerのKintoneApp認証でログインしているユーザー情報(特にユーザー管理で追加した属性の情報)をkViewerのjavascriptで取得したいということになります!

上記の情報を取得できるAPIなどご存知でしたら教えていただけると幸いです!
よろしくお願いいたします!

認識がずれてしまって失礼しました。

KViewerのドキュメントがありますが、kViewerのjavascriptから参照できるかどうかの情報を見つけられなくて。。。トヨクモ社にお問い合わせした方が早いかなぁと思います。

ただ、今回の場合、JSを使わなくてもいける気がします。
上記で案内したトヨクモ社のkviewerドキュメントの【ポイント】に書いている方法になります。

ご返信ありがとうございます!

はい、最初にトヨクモ社には問い合わせたのですが、「jsに関わることは回答できない」と言われたんですよ(T T)

また、ご連絡いただいたkViewerドキュメントのポイントの件ですが、その内容はそもそも閲覧できるレコードを絞り込む方法だと思っております。
今回やりたいことは、レコードは同じグループの人全員に見せたいが、編集できるのはグループの一部の人だけに制御したいということになります。

したがって、属性を参照して対象者を判別すれば実現できるなと考えていたんですが、トヨクモ社からある程度情報を提供してもらわないとやはり難しそうですよね。。。

最初にトヨクモ社には問い合わせたのですが、「jsに関わることは回答できない」と言われたんですよ

そうだったんでね。
失礼しました。

試してたところ、閲覧範囲と編集範囲を別々で設定することで、いけそうな気がします。

閲覧範囲の設定

トヨクモ社のkviewerドキュメント の【ポイント】に書いている方法になります。

  1. ユーザ管理を設定する
  2. レコード絞り込み・並び順
  3. プレビュー画面で
    test1@bbb.comのユーザーでプレビューする場合

編集範囲は標準機能で設定できないため、JSを使います。

編集ボタンを消す処理を実装しておりませんが、現在プレビュー画面を開いているユーザー(ユーザー管理で設定したメールアドレス)を取得できることができそうなことわかりました。

試したJS

(function() {
  "use strict";
  kv.events.record.mounted = [function (state) {
    console.log(state)
    return state;
  }]
})();

console.logで出力した内容を確認すると、ユーザー管理で設定したメールアドレスは
kappauthPreviewというプロパティに格納されていることがわかりました。
スクリーンショット 2024-04-26 16.51.11

kintone のレコードにも各ユーザーのメールアドレスを登録しておけば、
kintone レコードのメールアドレスがkappauthPreviewの値と一致する場合のみ、編集ボタンを表示するという実装は可能になりそうです。

「いいね!」 1

ご返信ありがとうございます!
また、色々試していただき、ありがとうございます!

メールアドレスによる判定ですね。
こちらですが、データ登録時点と最新時点でメールアドレスが変更されると照合できないリスクがあるので、各ユーザーに割り振られる一意のIDで照合できるのが理想です^^;

とはいえ、あまり変更がない前提でメールアドレスでの照合が現実的なのかもしれませんね。
ありがとうございます!

「いいね!」 1

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。