software‎ > ‎módulos‎ > ‎engine‎ > ‎perguntas frequentes‎ > ‎

O que é extrafilter e para que serve?

postado em 16 de set de 2010 11:14 por Usuário desconhecido   [ atualizado em 12 de fev de 2014 10:31 por Usuário desconhecido ]

O que é Extra Filter e para que serve?

O Extra Filter é um recurso que faz parte da API de segurança do Sistema UNUM. Para explicar o que é um Extra Filter é necessário primeiro abordarmos o conceito de permissões neste sistema.

Permissões e o Extra Filter

O cadastro de permissões do Sistema UNUM possui filtros de permissões que são pré-definidos. São eles:

Nome do campo físicoRótulo do nome do campo
iViewVer
iInsertInserir
iChangeAlterar
iDeleteApagar
iExportExportar
iVfsViewVer VFS
iVfsChangeMudar VFS

O recurso de Extra Filter é um filtro extra que trás a possibilidade de filtrar a permissão por um outro campo da tabela de permissões (iPermission).

Exemplo

Na tabela de permissões há um campo chamando ESTABELECI (Estabelecimento). É possível filtrar a permissão pelo valor deste campo.

Este exemplo checa se o usuário "37860639 - Teste" tem acesso à classe "43614400 - Contatos" e se o campo ESTABELECI no cadastro de permissões tem o valor "3002932 - Estab Demonstração".

security.getPermission( 43614400 /* Contatos */, "iView", 
    37860639 /* Teste*/, "withoutInheritance",
    [['ESTABELECI', 3002932 /* Estab Demonstração */]]
);

Se o campo informado não existir, o Extra Filter será desconsiderado e validará somente o filtro predefinido iview.

security.getPermission( 43614400 /* Contatos */, "iView", 
    37860639 /* joelTeste */, "withoutInheritance",
    [['Campo que não existe', 3002932 /* Estab Demonstração */]] 
);

Funcionamento do Extra Filter

Considere o exemplo acima. Ao utilizar o security.getPermission, informando-se o par [campo extrafiler, valor] no quinto parâmetro, o método irá procurar prioritariamente por este campo na tabela iGroupUser. Caso encontre o campo e ele tenha um valor para a chave "37860639 - Teste" e o valor desse campo coincidir com o valor informado no par, o método retornará true. Caso contrário o método fará a mesma avaliação na tabela iPermission.

O comportamento deste método é replicado na formação das queries pelo iQuery, caso a checagem de permissão esteja habilitada. Para maiores detalhes veja as documentações:

Método security.getPermission
iQuery.checkPermission
Exemplos de uso do iQuery

Configuração do Extra Filter

Ainda no exemplo do Extra Filter ESTABELECI na classe -2008879000 - Pedidos ou Provisões , na definição desta classe existe a seguinte linha:

this.permissionExtraFilter.push(['ESTABELECI', 'ESTABELECI']);

Esta linha insere um par [campo, campo] no array permissionExtraFilter. O primeiro ítem do par indica o nome do campo na classe "-2008879000 - Pedidos ou Provisões" que participará do Extra Filter. O segundo ítem do par indica o nome do campo que será avaliado nas tabelasiGroupUser e iPermission.