Padrão para acrescentar dados a variável do escopo local
Pergunta
Eu estou tentando modificar um fantoche módulo para Centrify Express, que integra contra o Active Directory.
Quero acrescentar que os usuários de uma allowlist por nó, E. G:
$centrifydc_groups_allow = ['admins', 'users']
Em seguida, no meu template, fazer algo ao longo das linhas de:
<% scope.lookupvar('centrifydc::groups_allow').each do |val| -%>
<%= val %>
<% end -%>
Eu estou procurando um lugar limpo e consistente da definição de perfis de acesso e, em seguida, fazer nó individual ajustes adicionar mais entradas que devem ter acesso.
Como fazer isso?
Solução
Você tem o operador += para acrescentar a matrizes no fantoche.
$centrifydc_groups_allow = ['admins', 'users']
$centrifydc_groups_allow += ['webusers']
Além disso, se você usar o stdlib módulo, ele implementa várias funções úteis para lidar com matrizes.
Por exemplo, se há um risco de que poderia repetir-se na matriz a partir de diferentes pp, você pode testar antes de acrescentar:
$centrifydc_groups_allow = ['admins', 'users']
if member($centrifydc_groups_allow,'webusers') == false {
$centrifydc_groups_allow += ['webusers']
}
Você também tem uma função de impressão em série para intercalar matrizes, que através de scope_function_merge você pode utilizá-lo dentro do seu modelo, em vez de acrescentar uma matriz, têm um padrão de matriz e um conjunto personalizado reescrito para cada nó/tipo de/etc.