Componente RolesPermissions — sgcHTML | eSeGeCe

RolesPermissions

TsgcHTMLComponent_RolesPermissions — uma matriz de papéis / permissões com uma caixa de seleção por célula, agrupamento por categoria e atualizações de concessão via WebSocket ao vivo, em Delphi, C++ Builder e .NET.

TsgcHTMLComponent_RolesPermissions

Adicione papéis e permissões, defina as concessões iniciais e então leia a propriedade HTML. Cada alternância de caixa de seleção é enviada ao servidor, que deve autorizá-la antes de aplicá-la.

Classe do componente

TsgcHTMLComponent_RolesPermissions

Renderiza

Matriz em tabela Bootstrap 5 + script inline

Família

Autenticação

Linguagens

Delphi, C++ Builder, .NET

Adicione papéis, adicione permissões, conceda, renderize

Chame AddRole e AddPermission para construir os eixos da matriz, SetGrant para as marcações iniciais e então leia HTML.

uses
  sgcHTML_Enums, sgcHTML_Component_RolesPermissions;

var
  oMatrix: TsgcHTMLComponent_RolesPermissions;
begin
  oMatrix := TsgcHTMLComponent_RolesPermissions.Create(nil);
  try
    oMatrix.MatrixID := 'acl';
    oMatrix.StickyHeader := True;

    oMatrix.AddRole('admin', 'Administrator').Color := hcDanger;
    oMatrix.AddRole('editor', 'Editor');
    oMatrix.AddRole('viewer', 'Viewer');

    oMatrix.AddPermission('users.edit', 'Edit users', 'Users');
    oMatrix.AddPermission('users.delete', 'Delete users', 'Users');
    oMatrix.AddPermission('billing.view', 'View invoices', 'Billing');

    oMatrix.SetGrant('admin', 'users.edit', True);
    oMatrix.SetGrant('admin', 'users.delete', True);
    oMatrix.SetGrant('editor', 'users.edit', True);

    WebModule.Response := oMatrix.HTML;   // matrix table + inline script
  finally
    oMatrix.Free;
  end;
end;

// Server-side handler for a checkbox toggle received over WebSockets.
// ALWAYS verify the acting user is authorized before applying the change:
oMatrix.ProcessGrantChanged('editor', 'users.delete', True);
// includes: sgcHTML_Enums.hpp, sgcHTML_Component_RolesPermissions.hpp

TsgcHTMLComponent_RolesPermissions *oMatrix = new TsgcHTMLComponent_RolesPermissions(NULL);
try
{
  oMatrix->MatrixID = "acl";
  oMatrix->StickyHeader = true;

  oMatrix->AddRole("admin", "Administrator")->Color = hcDanger;
  oMatrix->AddRole("editor", "Editor");
  oMatrix->AddRole("viewer", "Viewer");

  oMatrix->AddPermission("users.edit", "Edit users", "Users");
  oMatrix->AddPermission("users.delete", "Delete users", "Users");
  oMatrix->AddPermission("billing.view", "View invoices", "Billing");

  oMatrix->SetGrant("admin", "users.edit", true);
  oMatrix->SetGrant("admin", "users.delete", true);
  oMatrix->SetGrant("editor", "users.edit", true);

  String html = oMatrix->HTML;   // matrix table + inline script

  // Server-side handler for a checkbox toggle (verify authorization first):
  oMatrix->ProcessGrantChanged("editor", "users.delete", true);
}
__finally
{
  delete oMatrix;
}
using esegece.sgcWebSockets;

var matrix = new TsgcHTMLComponent_RolesPermissions();
matrix.MatrixID = "acl";
matrix.StickyHeader = true;

matrix.AddRole("admin", "Administrator").Color = TsgcHTMLColor.hcDanger;
matrix.AddRole("editor", "Editor");
matrix.AddRole("viewer", "Viewer");

matrix.AddPermission("users.edit", "Edit users", "Users");
matrix.AddPermission("users.delete", "Delete users", "Users");
matrix.AddPermission("billing.view", "View invoices", "Billing");

matrix.SetGrant("admin", "users.edit", true);
matrix.SetGrant("admin", "users.delete", true);
matrix.SetGrant("editor", "users.edit", true);

string html = matrix.HTML;   // matrix table + inline script

// Server-side handler for a checkbox toggle (verify authorization first):
matrix.ProcessGrantChanged("editor", "users.delete", true);

Principais propriedades & métodos

Os membros que você usa com mais frequência.

Papéis e permissões

AddRole(aId, aName) e AddPermission(aId, aName, aCategory) constroem os eixos da matriz; cada papel recebe um badge colorido, cada permissão um cabeçalho de categoria opcional.

Concessões

SetGrant(aRoleId, aPermissionId, aGranted) / GetGrant leem e gravam as células marcadas, indexadas pelo id de papel + permissão.

Vinculação a dataset

LoadRolesFromDataSet, LoadPermissionsFromDataSet e LoadGrantsFromDataSet preenchem a matriz diretamente a partir de um TDataSet.

Mudanças no cliente

Cada alternância de caixa de seleção envia um payload JSON pelo canal WebSocket e dispara o evento DOM sgcRolesPermissions:grantChanged.

Apresentação

ShowDescriptions, ShowCategories, Striped, Bordered, Compact e StickyHeader (com MaxHeight) estilizam a tabela; ReadOnly desativa todas as caixas de seleção.

Segurança

Este componente renderiza apenas a UI. ProcessGrantChanged só deve ser chamado depois que o host verificar, no servidor, que o usuário que está agindo pode alterar aquele par de papel/permissão.

Continue explorando

Ajuda onlineReferência completa da API e guia de uso para este componente.
Todos os Componentes sgcHTMLExplore a matriz completa de recursos com mais de 80 componentes.
Baixar Versão de Avaliação GratuitaA avaliação de 30 dias inclui os projetos de demonstração 60.HTML.
PreçosLicenças Single, Team e Site com código-fonte completo.

Pronto para Começar?

Baixe a versão de avaliação gratuita e adicione uma matriz de papéis/permissões ao seu painel administrativo Delphi, C++ Builder ou .NET.