SessionPermSetActivation
SessionPermSetActivation オブジェクトは、個々のユーザーセッション中に有効化された権限セット割り当てを表します。SessionPermSetActivation オブジェクトが権限セットに挿入されると、有効化イベントが起動され、権限設定をユーザー固有のセッションに適用できるようになります。このオブジェクトは、API バージョン 37.0 以降で使用できます。
サポートされているコール
describeLayout()、describeSObjects()、query()、retrieve()
特別なアクセスルール
Summer '20 以降、このオブジェクトにアクセスできるのは、次のいずれかの権限を持つユーザーのみとなります。
- 「設定・定義の参照」
- 「セッション権限セットの有効化の管理」
項目
項目名 | 詳細 |
---|---|
AuthSessionId |
|
Description |
|
PermissionSetGroupId |
|
PermissionSetId |
|
UserId |
|
使用方法
SessionPermSetActivation を使用して、指定されたセッションの時間内にのみ使用できる権限セットを作成します。たとえば、認証されたセッションの間のみ特定のアプリケーションにアクセスできる権限セットを作成します。
次の Apex の例では、ボタンを使用してセッション情報が送信された後に特定されたセッションが有効化されます。有効化に成功すると、ユーザーに確認メッセージが表示されます。
public class SessionPermSetActivationController {
// id of the session permission set to be activated
private final String sessionPermSetId = '0PSxx00000004rJ';
private final String sessionId;
public SessionPermSetActivationController() {
Map<String, String> sessionManagement = Auth.SessionManagement.getCurrentSession();
sessionId = sessionManagement.get('SessionId');
}
public PageReference activate() {
// activate the permission set
SessionPermSetActivation activation = new SessionPermSetActivation();
activation.AuthSessionId = sessionId;
activation.PermissionSetId = sessionPermSetId;
activation.Description = 'created by SessionPermSetActivationController';
insert activation;
return null;
}
public boolean getActivated() {
Integer alreadyActivated = [SELECT count()
FROM SessionPermSetActivation
WHERE AuthSessionId = :sessionId
And PermissionSetId = :sessionPermSetId LIMIT 1];
return alreadyActivated > 0;
}
}
<apex:page controller="SessionPermSetActivationController">
<apex:outputPanel rendered="{!!Activated}">
<h3>Activate Session Permission Set</h3>
<br />
<apex:form >
<apex:commandButton action="{!activate}" value="Activate" id="activateButton"/>
</apex:form>
</apex:outputPanel>
<apex:outputPanel rendered="{!Activated}">
<h3>Session Permission Set is already active.</h3>
</apex:outputPanel>
</apex:page>