複数の権限セットが存在していて複数をグルーピングして権限セットグループで管理したいケースがそれなりにあります。 Apexで操作したいケースはあまり多くないかもしれませんが、パッケージ開発モデル で開発しているとそれなりに有り得そうです。
同じ組織で開発している複数のパッケージの場合は権限付与などはシンプルにしたいものです。
権限セットグループをApexで自動で付与したい
例えばパッケージをインストールした時に InstallHundler というインターフェースでApex処理を実行する事ができます。
その中で新規の権限セットを既存の権限セットグループに追加できたら便利ですね。
ああ、PostInstallでPermissionSetGroupに追加する処理を書けばいいのか!めなぜかポケモンやってて思いついた!
— のぶじゃす (@noblejasper) 2022年11月21日
連携パッケージの設計。出来るのかはわからんから後で試す#Salesforce #AppExchange
普通にオブジェクト的に操作できた!便利〜
PermissionSet ps = [SELECT Id, DeveloperName FROM PermissionSet WHERE Name = 'psName']; PermissionSetGroup psg = [SELECT Id, DeveloperName FROM PermissionSetGroup WHERE DeveloperName = 'psgDeveloperName']; PermissionSetGroupComponent psgc = new PermissionSetGroupComponent(PermissionSetId=ps.Id, PermissionSetGroupId=psg.Id); insert psgc;
なければ作るようにしたかったのでこんな感じのメソッドを作りました
private void appendPermissionSetToGroup() { PermissionSet ps = [SELECT Id, Name FROM PermissionSet WHERE Name = 'psName']; PermissionSetGroup psg = [SELECT Id, DeveloperName FROM PermissionSetGroup WHERE DeveloperName = 'psgDevName']; PermissionSetGroupComponent[] psgcList = [ SELECT Id FROM PermissionSetGroupComponent WHERE PermissionSetId = :ps.Id AND PermissionSetGroupId = :psg.Id ]; if (psgcList == null || psgcList.size() == 0) { PermissionSetGroupComponent psgc = new PermissionSetGroupComponent( PermissionSetId = ps.Id, PermissionSetGroupId = psg.Id ); insert psgc; } }