Este recurso está disponível a partir da versão 2.3.4
Ao criar módulos mais complexos, provavelmente você desejará adicionar permissões para que o proprietário possa controlar o que os membros da equipe podem ou não fazer.
No GrowCRM, isso é feito com as permissões da equipe; cada membro da equipe pode ter permissões de acesso diferentes.
Definir Permissões do Módulo
Por exemplo, supondo que o módulo se destine a enviar e-mails em massa e você queira que o proprietário permita que apenas membros específicos da equipe enviem e-mails, adicione o seguinte código no seu arquivo init do módulo:

Salve o arquivo e navegue até e.q. Configuração->Equipe e edite algum membro da equipe. Ao clicar na aba de permissões, você poderá ver as permissões na parte inferior.
Parâmetros explicados
- $feature_id ( prefix-mass-emails ) –Chamamos isso de recurso de permissões, mas lembre-se de que o nome deve ser único.
- $config (matriz) – A configuração real com um array que possui achave de capacidades, isso será exclusivo para sua implementação e dependerá do tipo de capacidades que seu recurso precisa.
- $name – O nome do módulo, por exemplo. No Mass Mailer, o nome é exibido ao usuário que está editando as permissões para que ele possa identificar a qual recurso as permissões se destinam.
Injetando Recursos em Recursos Existentes
Se você quiser injetar recursos em um recurso existente, pode fazer isso com o seguinte código:

Verificando se a Equipe Possui as Capacidades
Agora que você adicionou suas permissões, no seu código, você deverá realizar verificações para ver se o membro da equipe realmente tem a capacidade de executar uma ação específica.
Supondo que você tenha um controlador com o método send.

staff_can

Pode ser usado, por exemplo, staff_can(‘view’, ‘invoices’);
@param string $capability e.q. visualizar | criar | editar | excluir | visualizar_próprio | poder_excluir
@param string $feature o nome do recurso e.q. faturas | estimativas | contratos | my_module_name
NOTA:O parâmetro $feature está disponível como opcional, mas é altamente recomendável que seja sempre passado devido à exclusividade dos nomes dos recursos.
Por exemplo, se houver um recurso “view” para o recurso “estimates” e também para “invoices”, um recurso “view” existe também
Neste caso, se você não passar o nome do recurso, poderá haver resultados imprecisos.
Se você tiver certeza de que o nome do seu recurso é único, por exemplo, minha_capacidade_prefixada_pode_criar, não precisa passar o $recurso
e pode usar esta função como e.q. staff_can(‘minha_capacidade_prefixada_pode_criar’)
@param mixed $staff_id id da equipe | se não for informado, a equipe conectada será verificada
Lembre-se de que os administradores podem acessar todas as funcionalidades. A função staff_can retornará verdadeiro para qualquer capacidade se o usuário for administrador.