NocoBaseのACLでカラム表示を制限する

2024.04.22

こんにちは、栁澤です。
今回は、NocoBaseでユーザーのロールに応じたカラムの表示権限制御をやってみます。

困っていたこと

コレクションのうち、あるロールを持つユーザーのみ特定のカラムを表示でき、それ以外のユーザーは表示できないようにしたい。
例えば、従業員情報を格納するコレクションのうち、住所や年齢などの機微な情報は一般ユーザーが自由に見れてしまってはマズいため非公開、 同じコレクションの氏名や社員番号・メールアドレスなどの情報は公開にしたい。

NocoBaseのACLを活用することで、そのような要件にも対応ができるようです。
今回は下記CatManagerの「ねんれい」カラムがMemberロールで表示されないよう設定してみます。

どう対応すればいいの?

ロール・カラムごとに権限を設定する

設定メニューから「Users & Permissions」編集画面へ遷移し、「Roles & Permissions」タブを開きます。
制限したいロールを選択し、「Data sources」から表示カラムを制限するデータソースの設定を開きます。

「権限の設定」ドロワーが開きますので、「コレクションの操作権限」タブを開き、表示カラムを制限するコレクションの設定を開きます。

更に「権限設定」ドロワーが開きます。

まず「権限ポリシー」を個別設定 にします。

すると各列の各操作に対する権限を設定する項目が表示されます。
ここで表示させたい列の表示権限に☑を入れ送信します。

実証

今回、Memberロールに対してCatsコレクションのname列のみ表示を許可しました。
この状態でMemberロールのユーザーでログインし、CatManagerを表示してみます。

表示権限を有効にしたname列のみ表示され、「ねんれい」列は表示されなくなっています。
また、Memberロールには操作権限を一切与えていないため、操作カラムも空になっています。

上記の手順を行うことで、同じページでも付与されているロールによって表示される情報を制御することができました。