SessionPermSetActivation

The SessionPermSetActivation object represents a permission set assignment activated during an individual user session. When a SessionPermSetActivation object is inserted into a permission set, an activation event fires, allowing the permission settings to apply to the user’s specific session. This object is available in API versions 37.0 and later.

Supported Calls

describeCompactLayouts()describeLayout()query()retrieve()

Fields

Field Name Details
AuthSessionId
Type
reference
Properties
Filter, Group, Sort
Description
The session ID related to this permission set assignment for its duration.
Description
Type
string
Properties
Filter, Group, Nillable, Sort
Description
The session details, such as device used and browser.
PermissionSetId
Type
reference
Properties
Filter, Group, Sort
Description
The permission set ID related to this permission set assignment and user for its duration.
UserId
Type
reference
Properties
Filter, Group, Sort
Description
The user ID of the user to whom this permission set assignment applies for its duration.

Usage

Use SessionPermSetActivation to create a permission set available only for a specified session’s duration. For example, create permission sets that provide access to specific applications only during authenticated sessions.

In the following Apex example, an identified session is activated after session information is submitted via a button. Successful activation results in a confirmation message displayed to the user.

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>