Escolar Documentos
Profissional Documentos
Cultura Documentos
Criando Um Controle de Acesso No Lazarus
Criando Um Controle de Acesso No Lazarus
Nesta série de artigos que iniciarei hoje, vou apresentar aos colegas como que venho
implementando o controle de acesso em meus aplicativos. É um modelo simples, que
venho "aperfeiçoando" desde que comecei a programar e adaptando sempre à nova
realidade que vem se apresentando. Não é a última palavra em programação, mas
acredito que pode ser um bom começo para quem deseja implementar alguma coisa
partindo do zero.
O modelo que apresento irá abordar algumas funcionalidades que utilizo em meus
programas, sendo algumas usadas há muito tempo, outras nem tanto. São elas:
Menu Dinâmico, armazenado no banco de dados e criado em tempo de
execução;
Cadastro de telas (aplicações), usuários e permissões no próprio aplicativo;
Barra de ferramentas com os ícones das aplicações permitidas, configuradas pelo
usuário;
Interface TDI (Tabbed Document Interface). Esta foi implementada
recentemente e acredito que precisa de algumas melhorias;
Antes de tudo devo esclarecer que utilizo dois ambientes distintos. Um no trabalho e
outro em casa. No trabalho utilizo Delphi ou Lazarus, dependendo do caso, em
ambiente Windows XP e 2003 Server, com os bancos de Dados SQL Server 2005 e
Firebird 2.1.
Em casa utilizo Linux Ubuntu 10.10, Lazarus 0.9.31 (SVN) e Banco de Dados Firebird
2.5 e este será o ambiente utilizado ao longo destes artigos.
Em todo caso, o modelo já foi usado nos dois ambientes sem nenhum problema,
precisando apenas de algumas adaptações. Portanto, vamos logo às ferramentas
necessárias:
Para esta série de artigos, vou criar um novo banco de dados, que darei o nome
ACESSO.FDB, para que os colegas possam acompanhar todo o processo de criação.
Vamos aos passos para criá-lo:
4) Feito isto, basta criar no botão "Create" e seu novo banco de dados estará criado,
como você verá nas imagens abaixo:
No próximo artigo veremos como criar as tabelas que formarão a nossa estrutura de
acesso. Desculpem-me por dividir o artigo em várias partes, mas isto é necessário
devido a grande quantidade de informações, o que poderia confundir usuários iniciantes.
Caso tenha alguma dúvida, por favor poste nos comentários que terei o maior prazer em
responder.
Nesta segunda parte do artigo vamos criar nossa estrutura de dados e partir para a
programação de nosso modelo. Como vocês devem ter percebido em nosso primeiro
artigo, fizemos uma abordagem mais detalhada do Flamerobin. Sei que muitos podem
ter achado o assunto enfadonho, principalmente aqueles que já dominam bem a
ferramenta, mas achei necessário por se tratar de uma ferramenta não muito conhecida.
Eu mesmo usava o IBExpert até há alguns dias atrás e não domino muito bem o
Flamerobin. Mas quem preferir continuar usando o IBExpert, informo que ele pode ser
instalado no Linux e roda perfeitamente via wine.
Para não deixar o assunto flamerobin incompleto, vou mostrar apenas como criar a
primeira tabela. No modelo proposto utilizaremos cinco tabelas:
USUARIOS - Armazenará as informações de login dos usuários.
APLICACOES - Armazenará as aplicações que farão parte do Aplicativo e as
configurações para exibição no menu e na barra de ferramentas.
PERMISSOES - Armazenará o relacionamento entre os usuários e as telas às
quais os mesmos terão acesso.
FAVORITOS - Armazenará as preferências do usuário no que se refere aos
ícones que serão exibidos na barra de ferramentas.
TABELAS - Armazenará o relacionamento entre as aplicações e as tabelas no
banco de dados às quais o usuário deverá ter acesso para executá-las
Vou mostrar (para os iniciantes, é claro) apenas como criar a tabela de usuários e as
outras ficam por conta de cada um. Então vamos lá:
3) Clique com o botão direito sobre o objeto Tables e escolha a opção "create new...".
Será aberta uma nova janela com um template da instrução SQL para criação de uma
nova tabela:
4) A partir daí, é só substituir os nomes da tabela e dos campos que iremos criar, de
acordo com a nossa necessidade:
Agora é só criar as demais tabelas, de acordo com o script que vou passar agora.
Para que o leitor possa acompanhar melhor o meu raciocínio, vou explicar a função de
cada campo da Tabela APLICACOES. As demais tabelas, acredito eu, se auto
explicam, mas caso haja alguma dúvida a respeito delas, fiquem à vontade para
expressá-las nos comentários:
O campo NOME, se refere ao nome que iremos dar ao objeto TMenuItem que será
criado dinamicamente na apresentação do menu. ele deve ser único e não deverá ter
caracteres especiais para não causar erro de execução na montagem do menu.
O campo TITULO, armazenará... o título do menu (Rá!). Exatamente! O título que será
mostrado no menu.
O campo CLASSE armazenará o nome da classe TForm que será instanciada quando o
usuário clicar na opção do menu. Exemplo: TFrmClientes
No próximo artigo, vamos partir para a programação do modelo. Então preparem seus
Lazarus e até a próxima.
Após tanto tempo sem postar nada e, depois de uma porção de cobrança por parte de
alguns de meus leitores, resolvi dar continuidade a esta série de artigos interrompida há
mais de um ano.
Devo dizer que durante este tempo, muita coisa mudou e, em meu dia a dia, houveram
algumas mudanças que irão afetar a forma como passarei a apresentar meus artigos
daqui para frente. Sobretudo no que se refere a este artigo, especialmente.
A primeira coisa que mudou foi minha distribuição Linux. Quando iniciei esta série
estava utilizando o Ubuntu 10.10 e como o Lazarus estava se mostrando muito instável
com esta distro,comecei a testar outros ambientes até que finalmente encontrei aquela
com a qual me identifiquei completamente: Linux Mint (Estou usando a versão 14).
Caso algum dos meus leitores tenham interesse em conhecê-la, a mesma encontra-se
disponível em http://www.linuxmint.com.
Outra coisa que mudou foi o meu cliente de banco de dados. Não por nenhum demérito
do FlameRobin, mas por uma questão de praticidade mesmo. Naquela época eu
utilizava o FlameRobin e o IBExpert (Windows) para acessar Firebird, SQL
Managment Studio para acessar o MS SQL Server, SQLite Studio para bases SQLite,
PGAdmin3 para o PostgreSQL… era muito cliente pra pouco banco. Resolvi o
problema quando encontrei uma ferramenta que para mim é perfeita. Trata-se do
SquirrelSQL (http://www.squirrelsql.org), um cliente multibancos e multiplataforma
que me permite acessar mais de vinte bancos de dados diferentes, e com uma porção de
recursos que facilitaram muito a minha vida. Em meu próximo artigo farei uma
apresentação mais detalhada desta maravilhosa ferramenta.
Ainda sobre bancos de dados, achei mais adequado adotar para exemplos de meus
artigos o banco de dados SQLite, pois nem todo mundo tem a paciência necessária para
instalar e configurar um Firebird ou outro banco de dados mais parrudo. Sem falar que,
pelo pequeno tamanho dos arquivos, fica mais fácil para disponibilizar uma cópia dos
bancos juntamente com os programas fontes de meus artigos em meu repositório
SVN(https://subversion.assembla.com/svn/smalltips/), onde aqueles que estiverem com
preguiça sem tempo para digitar os códigos poderão baixar e estudá-los com mais
calma. Devo adiantar que os fontes deste artigo já estão disponíveis no SVN para quem
quiser baixar. Não está completo ainda, mas já dá para os mais apressados pegarem
como modelo para implementar alguma coisa prática.
E finalmente, também mudará a forma como os artigos serão publicados. Nos próximos
artigos não teremos mais parte 1, 2, 3, … 1000… Este será meu último artigo
seccionado. Se o artigo não for pequeno suficiente para caber em um único post, o
mesmo será disponibilizado em formato PDF para ser baixado do SVN. E a partir de
hoje, todos os novos artigos que se referirem a programação Lazarus, terão os
programas de exemplos no SVN. Com isso espero atender melhor a meus leitores e
evitar desgastes provocados pela demora entre as postagens de artigos muito longos.