Page 4320 View Agent Access Control in 27

App
System Application
Namespace
System.Agents
Source table
2000000261

Versions171819202122232425262728latest

Source2526272829

Source in 27

src/System Application/App/Agent/Setup/AgentAccessControls/ViewAgentAccessControl.Page.al149 lines, Copyright (c) Microsoft Corporation. MIT

// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------

namespace System.Agents;

using System.Security.AccessControl;

page 4320 "View Agent Access Control"
{
    Caption = 'Agent Access Control';
    PageType = ListPart;
    ApplicationArea = All;
    SourceTable = "Agent Access Control";
    Editable = false;
    Extensible = false;
    InsertAllowed = false;
    DeleteAllowed = false;
    ModifyAllowed = false;
    InherentEntitlements = X;
    InherentPermissions = X;

    layout
    {
        area(Content)
        {
            repeater(Main)
            {
                field(UserName; UserName)
                {
                    Caption = 'User Name';
                    ToolTip = 'Specifies the name of the User that can access the agent.';
                    TableRelation = User where("License Type" = filter(<> Application & <> "Windows Group" & <> Agent));
                }
                field(UserFullName; UserFullName)
                {
                    Caption = 'User Full Name';
                    ToolTip = 'Specifies the Full Name of the User that can access the agent.';
                    Editable = false;
                }
                field(Company; Rec."Company Name")
                {
                    Caption = 'Company';
                    ToolTip = 'Specifies the company in which the user has access to the agent.';
                    Visible = ShowCompanyField;
                }
                field(CanConfigureAgent; Rec."Can Configure Agent")
                {
                    Caption = 'Can Configure';
                    Tooltip = 'Specifies whether the user can configure the agent.';
                }
            }
        }
    }

    actions
    {
        area(Processing)
        {
            action(EditUserAccess)
            {
                ApplicationArea = All;
                Caption = 'Edit user access';
                Image = Edit;
                ToolTip = 'Edit the users that can access this agent.';

                trigger OnAction()
                var
                    TempAgentAccessControl: Record "Agent Access Control" temporary;
                    AgentImpl: Codeunit "Agent Impl.";
                    SelectAgentAccessControl: Page "Select Agent Access Control";
                begin
                    CopyAgentAccessControlToBuffer(Rec."Agent User Security ID", TempAgentAccessControl);

                    SelectAgentAccessControl.Initialize(Rec."Agent User Security ID", TempAgentAccessControl);
                    if SelectAgentAccessControl.RunModal() = Action::OK then begin
                        SelectAgentAccessControl.GetTempAgentAccessControl(TempAgentAccessControl);
                        AgentImpl.UpdateAgentAccessControl(Rec."Agent User Security ID", TempAgentAccessControl);
                    end;

                    CurrPage.Update(false);
                end;
            }

            action(AgentShowHideCompany)
            {
                ApplicationArea = All;
                Caption = 'Show/hide company';
                Image = CompanyInformation;
                ToolTip = 'Show or hide the company name.';

                trigger OnAction()
                begin
                    ShowCompanyFieldOverride := true;
                    ShowCompanyField := not ShowCompanyField;
                    CurrPage.Update(false);
                end;
            }
        }
    }

    trigger OnAfterGetRecord()
    var
        User: Record "User";
        AgentImpl: Codeunit "Agent Impl.";
        GlobalSingleCompanyName: Text[30];
    begin
        if not ShowCompanyFieldOverride then begin
            ShowCompanyField := not AgentImpl.GetAccessControlForSingleCompany(Rec."Agent User Security ID", GlobalSingleCompanyName);
            CurrPage.Update(false);
        end;

        Clear(UserFullName);
        Clear(UserName);

        if IsNullGuid(Rec."User Security ID") then
            exit;

        if not User.Get(Rec."User Security ID") then
            exit;

        UserName := User."User Name";
        UserFullName := User."Full Name";
    end;

    local procedure CopyAgentAccessControlToBuffer(UserSecurityID: Guid; var TempAgentAccessControl: Record "Agent Access Control" temporary)
    var
        AgentAccessControl: Record "Agent Access Control";
    begin
        TempAgentAccessControl.Reset();
        TempAgentAccessControl.DeleteAll();

        AgentAccessControl.SetRange("Agent User Security ID", UserSecurityID);
        if not AgentAccessControl.FindSet() then
            exit;

        repeat
            Clear(TempAgentAccessControl);
            TempAgentAccessControl.TransferFields(AgentAccessControl);
            TempAgentAccessControl.Insert();
        until AgentAccessControl.Next() = 0;
    end;

    var
        UserFullName: Text[80];
        UserName: Code[50];
        ShowCompanyField, ShowCompanyFieldOverride : Boolean;
}