【ユーザー選択フィールド】ユーザー選択画面の表示制御方法について

お世話になっております。

ユーザー選択フィールドのユーザー選択画面にて、ログインユーザーの所属する組織のみが表示されるようにカスタマイズ出来ればと思っておりますが、どのようにすれば良いか悩んでおります。

有識者の皆様にご教授いただけたら幸いです。

何卒宜しくお願い致します。

鮫島さん

組織間のアクセス権を設定することで、所属する組織が異なるユーザーや組織の情報への

アクセスを制限(表示しない)することができます。

こちらを利用することで、希望の処理ができませんでしょうか?

https://help.cybozu.com/ja/general/admin/dep_accessctrl.html

 

サクラエビさん

ご回答いただきまして、誠にありがとうございます。

実は以前に組織間のアクセス権を設定してみたのですが制御しきれず、この質問に至りました。。。

~ 概要 ~
・同じ親組織に所属する一部のユーザー(ユーザーA)に対して、
あるユーザー(ユーザーB他)をユーザー選択フィールドに表示させなくしたい。
・ユーザーAは1つの組織に所属していて、ユーザーBは複数の組織に所属している状態。
・ユーザーAと、ユーザーBの「優先する組織」は異なる。

~ 質問 ~
・カスタマイズしか方法がないと思っておりますが、以下の設計で実現できそうでしょうか。
カスタマイズの経験が乏しい事もあり、具体的な実装イメージが湧かずに難儀しております。

(1) ログインユーザーの「優先する組織」情報を取得
(2) 全ユーザーの「優先する組織」を取得
(3) (2)を元に、同じ「優先する組織」のユーザーを一覧化する
(4) オートコンプリート機能、ユーザー選択画面を無効化する
(5) (4)に(3)を表示させる

======

・(3)(4)(5)の実装方法がわからず、ご指導いただければ幸いです。

kintone.api(‘/v1/users’, ‘GET’, {}, function (resp){
/** (1) **/
//ユーザーIDの取得
var user = kintone.getLoginUser();

// 取得した情報を配列に格納
var user_group, user_group_ary = [];
for (var i = 0; i < resp.users.length; i++) {
user_group = resp.users[i].id;
user_group_ary.push(user_group);
}

var chk1 = user_group_ary.indexOf(user.id).toString();
var chk2 = resp.users[chk1].primaryOrganization;

kintone.api(‘/v1/organizations’, ‘GET’, {“ids”:chk2}, function (resp2) {
/** (2) **/
kintone.api(‘/v1/users’, ‘GET’, {“primaryOrganization”:resp2.organizations[0].id}, function (resp3){
var user_group2, user_group_ary2 = [];
for (var i = 0; i < resp3.users.length; i++) {
user_group2 = resp3.users[i].primaryOrganization;
user_group_ary2.push(user_group2);
}
});
});
});

※(4)は、Chromeの開発ツールから以下を無効化すれば良いのかと思いますが、kintoneへの実装方法が分かっておりません。。。

●オートコンプリート
<input id=“:1fsearch-:1g-text” type=“text” class=“input-text-cybozu” autocomplete=“off”>
・blur
input#:1fsearch-1:g-text
・change
input#:1fsearch-1:g-text
・focus
input#:1fsearch-1:g-text
・keyword
input#:1fsearch-1:g-text
・keypress
input#:1fsearch-1:g-text
・keyup
input#:1fsearch-1:g-text

●ユーザー選択画面
<a title=“組織やグループから選択” class=“gaia-argoui-forms-userselect-picker gaia-argoui-forms-userselect-picker-user”></a>
・click
gaia-argoui-forms-userselect-picker gaia-argoui-forms-userselect-picker-user

鮫島さん

返信を見落としており、コメントがおそくなりました。

最上位組織が一緒のユーザーでの制御なのですね。

そうなると組織間アクセス権ではできないですね。

 

JSまたはCSSで不要な項目要素をnoneにしていくことで、非表示(選択できない)にすることができますが

ユーザーによって表示する項目が異なるので、処理が非常に複雑になりそうなイメージです。

いくつか処理を行ってみたのですが、思うような処理とならずでした。。。

また、DOM を直接いじってしまうので、サポートされない方法になります。

そのため、個人的には無理に既存のユーザー選択を利用せず、jQuery などを利用して、類似機能を

作成した方が処理としては簡単なのではと思ってしまっています。

有効なアドバイスになっておらず、すみません。

サクラエビさん

ご回答いただきまして、誠にありがとうございます。

やはり、カスタマイズでもなかなか難しいですよね。

アドバイスいただきました通り、類似機能を作成する方法を検討してみたいと思います。

この度は本当にありがとうございました。

また宜しくお願い致します。