Table 9802 Permission Set Link, source in 29
Source29
src/Layers/W1/BaseApp/Modules/System/PermissionSets/PermissionSetLink.Table.al96 lines, Copyright (c) Microsoft Corporation. MIT
namespace System.Security.AccessControl;
table 9802 "Permission Set Link"
{
Caption = 'Permission Set Link';
DataPerCompany = false;
Permissions = TableData "Permission Set Link" = rmd;
ReplicateData = false;
DataClassification = CustomerContent;
fields
{
field(1; "Permission Set ID"; Code[20])
{
Caption = 'Permission Set ID';
DataClassification = SystemMetadata;
#pragma warning disable AL0432
TableRelation = "Permission Set"."Role ID";
#pragma warning restore AL0432
}
field(2; "Linked Permission Set ID"; Code[20])
{
Caption = 'Linked Permission Set ID';
DataClassification = SystemMetadata;
TableRelation = "Tenant Permission Set"."Role ID";
}
field(3; "Source Hash"; Text[250])
{
Caption = 'Source Hash';
DataClassification = SystemMetadata;
}
}
keys
{
key(Key1; "Permission Set ID", "Linked Permission Set ID")
{
Clustered = true;
}
}
fieldgroups
{
}
procedure SourceHashHasChanged(): Boolean
begin
MarkWithChangedSource();
exit(not IsEmpty);
end;
procedure UpdateSourceHashesOnAllLinks()
var
MetadataPermissionSet: Record "Metadata Permission Set";
PermissionManager: Codeunit "Permission Manager";
begin
if FindSet() then
repeat
MetadataPermissionSet.SetRange("Role ID", Rec."Permission Set ID");
if MetadataPermissionSet.FindFirst() then begin
"Source Hash" := PermissionManager.GenerateHashForPermissionSet(MetadataPermissionSet."Role ID");
Modify();
end else
Delete();
until Next() = 0;
end;
procedure MarkWithChangedSource()
var
MetadataPermissionSet: Record "Metadata Permission Set";
PermissionManager: Codeunit "Permission Manager";
SourceChanged: Boolean;
begin
if FindSet() then
repeat
SourceChanged := false;
MetadataPermissionSet.SetRange("Role ID", Rec."Permission Set ID");
if MetadataPermissionSet.FindFirst() then
SourceChanged := "Source Hash" <> PermissionManager.GenerateHashForPermissionSet(MetadataPermissionSet."Role ID")
else
SourceChanged := true;
if SourceChanged then
Mark(true);
until Next() = 0;
MarkedOnly(true);
end;
procedure GetSourceForLinkedPermissionSet(LinkedPermissionSetId: Code[20]): Code[20]
begin
SetRange("Linked Permission Set ID", LinkedPermissionSetId);
if FindFirst() then
exit("Permission Set ID");
end;
}