De BISAWiki
- O cadastro de usuários é feito no TFRM_Usuarios (unit UDF_Usuarios) que é comum a todos os sistemas da BISA. Alguns sistemas (PRW e CLW, por exemplo ) podem usar um form derivado desse. Assim muita atenção deve ser dada ao se efetuarem alterações nesse form. O TFRM_Usuarios tem um botão que ativa o form, TFRM_Restricaousuarios (UDF_RestricaoUsuario), que define as restrições aos sistemas e às tabelas de cada sistema .
- O cadastro de usuários e as suas restrições ficam nas tabelas BISAUSUA e BISAACES do BISA_CFG.MDB. O acesso para manutenção e consulta às restrições (BISAACES) se dá exclusivamente (talvez nem tanto) pelo DMRestricoesUsuario (UDF_DM_RestricaoUsuario). Esse data module implementa todas as funções necessárias à indicação de se o usuário possui restrições para acessar sistemas, formulários, abas ou para efetuar operações nas tabelas.
- Para simplificar a implementação, possibilitando rapidez na adequação dos formulários, padronização de procedimentos e facilidade de manutenção e extensão das funções implementadas, foi desenvolvido um formulário básico para todos os sistemas da Bisa chamado TFormBISA (unit FormBISA)que deve ser herdado pelos demais formulários que terão seu acesso controlado. Os derivados do TFormBISA “automaticamente” verificam se estão permitidos para o usuário logado: em caso negativo o informam da proibição e se fecham e em caso positivo ocultam todas as abas proibidas ao usuário. As abas “Consulta” e “Editar”, por uma questão de bom senso não sofrem restrição (Se não podem ser consultadas, melhor proibir o formulário. Se não se pode editar, melhor definir restrições às tabelas).
- Para que um formulário seja derivado de outro (para que herde as propriedades e métodos do outro) basta informar a classe do form que se deseja herdar como a classe mãe na cláusula class (ClasseMãe) na unit (.PAS) e, no DFM correspondente, trocar a palavra chave object por inherited na primeira linha do mesmo (a que abre a definição do form). Depois, para cada método que se queira herdar do formulário base (TFormBISA) no formulário derivado que possua um homônimo no formulário derivado, deve ser alterado o código no derivado com a inclusão da palavra chave inherited. O TFormBISA e seus derivados contêm um PopUpMenu com os seguintes itens: a) restrições de acesso de usuários ao formulário; b) restrições de acesso de usuários às abas do formulário e c) restrições a operações em tabelas. Os dois primeiros itens desse PopUpMenu se referem ao TFRM_Cad_Restricoes_Form e o terceiro ao TFRM_Restricaousuarios (se chamado pelo PopUpMenu o TFRM_Restricaousuarios só disponibilizará as tabelas específicas do sistema e do BISA_TAB).
- As restricões aos formulários e suas abas é feita no form TFRM_Cad_Restricoes_Form (unit UDF_Cad_Restricao_Form) que também é comum a todos os sistemas. Esse form só estará disponível aos usuários que possuírem nível de acesso 0 (zero). Através de um parâmetro define-se se o form vai restringir o acesso ao formulário corrente ou às abas do mesmo. A ativação desse form é feita a partir do form que vai ter seu acesso restrito e, se for um form derivado de TFormBISA (unit FormBISA), se dá pelo PopupMenu PMFormBisa (a propriedade PopUpMenu do Form a ter o acesso restrito recebe nil caso o usuário logado não tenha nível de acesso igual a 0) que pode se abrir em três eventos distintos: o click do botão direito do mouse sobre o form a ser regulado (procedimento padrão para um PopUpMenu), pelo click no painel localizado a esquerda do formulário (o painel nào é visível para usuários que não têm nível de acesso igual a 0) ou pelo click no item de menu correspondente em Utilitários no form principal (impossível de acontecer caso o form a ser restrito tenha recebido um ShowModal).
- Para implementar o controle de acesso às tabelas, basta que para cada TDataSet os eventos AfterEdit, AfterInsert e BeforeDelete comecem com o seguinte código:
“ if tabelarestrita(DataSet) then exit;”
- O código para a exibição da foto do usuário está todo contido no Form Principal Genérico. Quando o código do usuário é 00 (o código do VISITANTE) nenhuma foto é exibida, apenas o um logo da BISA aparecerá. Se não houver foto cadastrada para o usuário, apenas o nome dele será exibido.