Neste artigo apresentarei um exemplo que construí utilizando técnicas avançadas e interessantes, para aumento da segurança da aplicação e controle de permissões. O sistema permite, por exemplo, que você diga que um determinado usuário só pode alterar registros da tabela de empregados, mas não incluir ou excluir. Além disso, será possível dizer, por exemplo, que um determinado usuário não pode visualizar um campo em específico (o salário de um empregado, por exemplo). Para facilitar o entendimento dos passos indicados aqui e acompanhar as técnicas apresentadas, sugiro que o leitor faça download do projeto completo a partir do endereço deste artigo.
Criando as tabelas
Primeiramente, precisamos criar as tabelas que armazenarão as permissões dos usuários, bem como os tipos de permissões que vamos ter na aplicação. Na Listagem 1
temos o código para criação de três tabelas no banco Employee.fdb do Firebird (você pode utilizar o Employee do InterBase, bem como qualquer outro banco de dados). Criamos as tabelas Usuarios, Permissoes e Permissoes_Usuarios.
A lógica consiste em cadastrar usuários e permissões, assim o usuário só poderá realizar determinadas tarefas, como incluir, excluir e salvar um registro em um determinado formulário (Nome_Form) se estiver cadastrado na tabela. Se o usuário não tiver nenhuma permissão no formulário, o mesmo não poderá nem mesmo abri-lo.
Adicione alguns registros na tabela Usuarios e dê algumas permissões ao mesmo. Criaremos dois formulários na aplicação, chamados Customer e Employee.
Listagem 1. Script para criação das tabelas no banco
CREATE TABLE USUARIOS (
ID INTEGER NOT NULL,
USER_NAME VARCHAR(15) NOT NULL,
SENHA CHAR(6) NOT NULL,
ADM CHAR(1) NOT NULL,
LEMBRAR_SENHA CHAR(1));
ALTER TABLE USUARIOS
ADD CONSTRAINT PK_USUARIOS
PRIMARY KEY (ID);
CREATE TABLE PERMISSOES (
ID_PERMISSAO ...