権限の確認

範囲設定されたモジュール @salesforce/userPermission および @salesforce/customPermission から Salesforce 権限をインポートします。コンテキストユーザの権限に基づいて、コンポーネントの動作をカスタマイズします。

lwc-recipes リポジトリmiscPermissionBasedUI レシピを参照してください。

Tip

ユーザが権限を持っているかどうかを確認するには、権限に対する静的参照をインポートして、true または undefined のどちらであるかを確認します。

1import hasPermission from "@salesforce/userPermission/PermissionName";

カスタム権限には名前空間が含まれる場合もあります。組織では、独自のカスタマイズとパッケージの一意の識別子として名前空間を使用します。カスタム権限が管理パッケージからインストールされた場合は、権限名の前に名前空間名と __ を付けます。

1import hasPermission from "@salesforce/customPermission/PermissionName";
2import hasPermission from "@salesforce/customPermission/namespace__PermissionName";

静的参照の名前は自由に決めてください。ここでは、参照がブール値を持つことを示すために has{Permission} という形式を使用します。

次のサンプルは、現在のユーザが ViewSetup 標準権限を持っているかどうかを確認します。

1// app.js
2import { LightningElement } from 'lwc';
3import hasViewSetup from '@salesforce/userPermission/ViewSetup';
4
5export default class App extends LightingElement {
6    get isSetupEnabled() {
7        return hasViewSetup;
8    }
9
10    openSetup(e) {...}
11}

ユーザがこの権限を持っていれば、コンポーネントはボタンを有効化します。

1<!-- app.html -->
2<template>
3  <setup-panel-group>
4    <setup-button disabled={isSetupEnabled} onclick={openSetup}></setup-button>
5  </setup-panel-group>
6</template>

次のサンプルは、現在のユーザが、管理パッケージからインストールされ、acme という名前空間を持つ ViewReport カスタム権限を持っているかどうかを確認します。

1// app.js
2import { LightningElement } from "lwc";
3import hasViewReport from "@salesforce/customPermission/acme__ViewReport";
4
5export default class App extends LightingElement {
6  get isReportVisible() {
7    return hasViewReport;
8  }
9}

ユーザがこの権限を持っていれば、コンポーネントは expense-report コンポーネントを表示します。

1<!--– app.html -->
2<template>
3  <common-view></common-view>
4
5  <template lwc:if={isReportVisible}>
6    <c-expense-report></c-expense-report>
7  </template>
8</template>

親 Aura コンポーネントが権限を動的に参照している場合、Lightning Web コンポーネントの静的参照に置き換えます。静的参照は、ネットワークコールが必要ないため、より効率的です。

Tip

関連トピック

The Japanese Summer '24 guide is now live

日本語の Summer '24 ガイドが公開されました! 「Component Reference (コンポーネントリファレンス)」は、以前と同様にコンポーネントライブラリにあります。