XmlPort 9172 Import/Export Permissions

App
Base Application
Namespace
System.Security.AccessControl
Versions
17-28

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Modules/System/PermissionSets/ImportExportPermissions.XmlPort.al103 lines, Copyright (c) Microsoft Corporation. MIT

namespace System.Security.AccessControl;

xmlport 9172 "Import/Export Permissions"
{
    Caption = 'Import/Export Permissions';
    Format = VariableText;

    schema
    {
        textelement(Root)
        {
#pragma warning disable AL0432
            tableelement(Permission; Permission)
#pragma warning restore AL0432
            {
                XmlName = 'Permission';
                fieldelement(RoleID; Permission."Role ID")
                {
                    FieldValidate = no;
                }
                fieldelement(RoleName; Permission."Role Name")
                {
                }
                fieldelement(ObjectType; Permission."Object Type")
                {
                }
                fieldelement(ObjectID; Permission."Object ID")
                {
                    FieldValidate = no;
                }
                fieldelement(ObjectName; Permission."Object Name")
                {
                }
                fieldelement(ReadPermission; Permission."Read Permission")
                {
                }
                fieldelement(InsertPermission; Permission."Insert Permission")
                {
                }
                fieldelement(ModifyPermission; Permission."Modify Permission")
                {
                }
                fieldelement(DeletePermission; Permission."Delete Permission")
                {
                }
                fieldelement(ExecutePermission; Permission."Execute Permission")
                {
                }
                fieldelement(SecurityFilter; Permission."Security Filter")
                {
                }

                trigger OnBeforeInsertRecord()
                begin
                    if (RoleID <> '') and (Permission."Role ID" <> RoleID) then
                        currXMLport.Skip();

                    if Permission.Get(Permission."Role ID", Permission."Object Type", Permission."Object ID") then
                        currXMLport.Skip();

                    InsertPermissionSet(Permission);
                end;
            }
        }
    }

    requestpage
    {

        layout
        {
        }

        actions
        {
        }
    }

    trigger OnPreXmlPort()
    begin
        if Permission.GetFilter("Role ID") <> '' then
            RoleID := Permission.GetRangeMin("Role ID");
    end;

    var
        RoleID: Code[20];

#pragma warning disable AL0432
    local procedure InsertPermissionSet(Permission: Record Permission)
#pragma warning restore AL0432
    var
        MetadataPermissionSet: Record "Metadata Permission Set";
    begin
        if not MetadataPermissionSet.Get(Permission."Role ID") then begin
            MetadataPermissionSet.Init();
            MetadataPermissionSet."Role ID" := Permission."Role ID";
            MetadataPermissionSet.Name := Permission."Role Name";
            MetadataPermissionSet.Insert();
        end;
    end;
}