Class: PermissionManager

@nginstack/engine/lib/security/PermissionManager~ PermissionManager


new PermissionManager()

Classe responsável pela gestão de permissões de grupos, papéis e usuários do sistema.
Em vez de construir essa classe diretamente, utilize o método PermissionManager.getInstance.

Methods


<static> getInstance()

Retorna a instância global do PermissionManager compartilhada com toda a sessão.

Returns:
Type
PermissionManager

copyFromParent(keys [, opt_groupUsers])

Cria permissões para as classes ou arquivos informados, copiando as permissões existentes das classes-mãe. Não serão copiadas as permissões caso já exista alguma permissão para a classe ou arquivo informado, sem serão copiadas permissões com herança ou definidas para Papéis.

Parameters:
Name Type Argument Description
keys Array.<Number>

Chaves dos arquivos ou classes para criar as permissões na hierarquia.

opt_groupUsers Array.<Number> <optional>

Grupos, papéis e usuários que terão as permissões herdadas.

Returns:

Registros de permissões novas para os diretórios e arquivos.

Type
DataSet

copyPermissions(source, target [, opt_options])

Copia permissões de um usuário, grupo ou papel para outro usuário, grupo ou papel.

Parameters:
Name Type Argument Description
source number

Chave de um usuário, grupo ou papel que será a fonte da cópia.

target number

Chave de um usuário, grupo ou papel que será o destino da cópia.

opt_options Object <optional>

Opções para a cópia.

Properties
Name Type Argument Description
mergeAction string <optional>

Quando se copia permissões, haverá momentos em que existe valores preenchidos nos dois lados. Neste caso esta opção pode determinar se os valores serão substituídos ou complementados. As opções de preenchimento são:
replace Todas as permissões de source serão copiadas por cima das permissões de target. Esta é a opção padrão no caso deste parâmetro vir vazio. extend Neste caso as permissões de target serão complementadas pelas contidas em source. No caso de comparação com booleanos será utilizado o operador booleano "OU", ou seja, o resultado só será falso se os dois lados forem falsos. No caso de lista de strings os valores de source serão adicionados aos valores de target, em todos os outros casos os valores contidos em target serão substituídos pelos de source.

copyMode string <optional>

Determina qual será a estratégia de cópia. As opções são:
smart Neste modo serão calculados os valores respeitando toda a hierarquia aplicada à entidade source, ou seja, todas as permissões aplicadas aos grupos e papéis de source serão passadas à target. Este é o modo padrão caso não seja especificado. hard Neste modo apenas os registros da tabela de permissões de source serão copiados para target.

Returns:

Versão das alterações. Retornará 0 caso não haja alterações.

Type
number

fixClasses()

Garante que todos os registros da tabela de permissões possuem a classe preenchida com a classe /Dados/Sistema/Permissões (-1898187812).


fixInheritance( [opt_options])

Verifica e corrige erros de integridade nas permissões com herança.
Após a execução deste método será garantindo que todas as classes e arquivos filhos de uma permissão com herança terão registros de permissão iguais à permissão que definiu a herança. Também serão excluídos registros de permissão herdados órfãos ou associados à permissões que não definem mais uma herança.

Parameters:
Name Type Argument Description
opt_options Object | Object <optional>

Opções do ajuste das permissões herdadas. Opções disponíveis:

  • transaction: transação onde serão adicionadas as alterações realizadas por este método. Caso não seja informado, as alterações serão gravadas imediatamente.
  • resources: chaves de arquivos ou diretórios que devem ter as permissões herdadas ajustadas.
  • removeFilter: função de callback que indicará se uma permissão elencada para ser removida deve ser removida de fato. Caso seja informado uma função, ela receberá o dataset com a permissão a ser removida e deverá retornar true para indicar que a remoção deve ser realizada.
See:
  • ngin.database.Transaction
Returns:

Versão das alterações caso não seja informado transaction nas opções ou null no caso contrário.

Type
number

getOrphans()

Pega registros de permissões órfãs, ou seja, que não concedem permissão a nenhum diretório ou arquivo e que não pertencem a nenhum grupo, papel ou usuário, por motivo de exclusão.

Returns:

DataSet com a chave e versão dos arquivos órfãos.

Type
DataSet

insert(assignment)

Adiciona uma atribuição de permissões no sistema.

Parameters:
Name Type Description
assignment PermissionAssignment

Permissões que deverão ser inseridas.

Returns:

Versão das alterações realizadas no banco de dados ou zero caso não tenha ocorrida nenhuma.

Type
number

mergePermissions_(source, target, field)

Calcula o valor final de uma mesclagem de permissão.

Parameters:
Name Type Description
source *

Valor da permissão que está se copiando.

target *

Valor destino da permissão que será mesclado a source.

field PermissionField

Campo da classe Permissões que está sendo mesclado.

Returns:

Valor mesclado para o campo.

Type
*

remove(key)

Remove a permissão informada e todas as permissões que dependem da existência dessa permissão.
Uma permissão será considerada dependente se estiver em de uma classe ou arquivo filho concedido para o mesmo Grupo, Papel ou Usuário e se estiver associada às classes e arquivos filhos da classe associada a permissão. Também serão consideradas dependentes as permissões herdadas a partir da permissão informada, ou seja, as permissões cujo campo iInheritedFrom seja igual à chave informada.
Caso a classe associada à permissão tenha filtros extras e eles estejam configurados, serão removidas apenas as permissões descendentes que possuam a mesma configuração de filtros extras.
Também serão removidas permissões filhas caso não haja uma outra permissão na classe associada a permission para o mesmo Grupo, Papel ou Usuário. Na prática isso significa que todas as permissões com ou sem filtros extras nas classes e arquivos filhos serão removidas se a permissão informada for a última para o Grupo, Papel ou Usuário.

Permissões herdadas não serão removidas por este método, exceto se ele for chamado para a permissão que definiu inicialmente a herança. Tentar remover os dependentes de uma permissão herdada a partir de outra permissão produzirá um erro.

Parameters:
Name Type Description
key number

Chave da permissão que será atualizada.

Returns:

Versão das alterações realizadas no banco de dados ou zero caso não tenha ocorrida nenhuma.

Type
number

removeOrphans()

Remove registros de permissões órfãs, ou seja, que não concedem permissão a nenhum diretório ou arquivo e que não pertencem a nenhum grupo, papel ou usuário, por motivo de exclusão.

Returns:

Versão da exclusão das permissões órfãs.

Type
number

replicateToDescendants(key)

Replica os valores da permissão informada para as classes e arquivos filhos da classe associada a permissão. Serão criados registros de permissão para as classes e arquivos filhos que não tenham permissão associado ao mesmo grupo.
Caso a classe associada a key tenha filtros extras e eles estejam configurados, serão criados registros de permissão com a mesma configuração de filtros extras.
Não é permitido replicar os valores de uma permissão herdada ou que defina uma herança, pois essa replicação é automática na atualização dos valores dessa permissão.

Parameters:
Name Type Description
key number

Chave da permissão da qual deseja-se replicar as informações para as suas descendentes.

Returns:

Versão das alterações realizadas no banco de dados ou zero caso não tenha ocorrida nenhuma.

Type
number

replicateValuesToAscendants_(assignment, table)

Replica os valores informados para as classes de dados ancestrais que contém assignment.resource. A relação dos campos que serão replicados é determinada pela propriedade replicatedPermissionFieldNames da classe de /Dados/Sistema/Permissões.
A replicação para ascendentes deve ser configurada para os campos de permissão que somente terão sentido se a classe superior tiver o mesmo valor. Um exemplo é a permissão "Ver", pois indicar que um grupo possui de permissão de visão na classe de Usuário exige que ele também tenha essa mesma permissão na classe superior (Grupos, Papéis e Usuários) caso contrário o usuário não conseguirá de fato visualizar os dados da classe Usuários.

Parameters:
Name Type Description
assignment PermissionAssignment

Permissões que deverão ser replicadas nas classes ancestrais.

table DataSet

Dados com os registros de permissões que serão atualizados.


update(key, assignment)

Atualiza um registro de permissão existente com os valores informados.

Parameters:
Name Type Description
key number

Chave da permissão que será atualizada.

assignment PermissionAssignment

Permissões que deverão ser inseridas.

Returns:

Versão das alterações realizadas no banco de dados ou zero caso não tenha ocorrida nenhuma.

Type
number