アプリ内のあるフィールドのアクセス権によって挙動を変えるカスタマイズを行っております。
ユーザー単位でアクセス権が設定してある現状では
ログインユーザ情報取得
↓
こんな感じでアクセス権を取得
kintone.api(kintone.api.url(‘/k/v1/field/acl.json’, true), ‘GET’, { app: APP_ID })
という風にできていたのですが、ユーザーが増えたのでグループ(ロール)で
フィールドのアクセス権を設定しようとして、ちょっと立ち止まっております。
現状では
・ログインユーザー情報取得
・グループ(ロール)取得
kintone.api(kintone.api.url(‘/v1/user/groups’, true), ‘GET’, userCode)
・フィールドアクセス権取得
kintone.api(kintone.api.url(‘/k/v1/field/acl.json’, true), ‘GET’, { app: APP_ID })
を準備して、アクセス権(rights)を順番にチェック
↓
rights.entities.typeが"USER"ならユーザーcodeと合致するかチェック
rights.entities.typeが"GROUP"ならロールをチェックして自分が所属しているかチェック
みたいなまどろっこしい方法しか思いつかないのですが、他にベストや方法はあるでしょうか?
~余談~
ちなみに非推奨というか非公認(?)な cybozu.data.page.FIELD_ACCESSIBILITY
による方法も検討していたのですが、どういうわけだかアクセス権が無いのに
'WRITE’が出るケースがあるので使用を躊躇っております。
(これが一番手っ取り早い方法かなと思っていたのですが、環境によってなのか何なのか、
普通に’NONE’が出る場合もあれば、一覧画面上で「(閲覧権限なし)」と表示されるのに
'WRITE’が出てくる場合もあり、この違いの原因がわからず。。)