Data de postagem: Sep 16, 2010 6:14:39 PM
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.
O cadastro de permissões do Sistema UNUM possui filtros de permissões que são pré-definidos. São eles:
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).
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 */]] );
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:
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.