UserControl alguém usa?
Alguém usa o UserControl? Estou perguntando porque eu uso e gostaria de saber como fazer um controle de perfil com ele, tipo:
Perfil Administrador pode fazer tudo
Perfil Tal pode somente consultar no formulário x
O controle de acesso eu ja fiz, isso ele faz, o usuário tal pode acessar os menus x, y e z. Queria fazer por perfil também.
Ou teria outro jeito de fazer isso sem ele.
Frederico Brigatte***
Respostas
Claudia Nogueira
29/10/2012
Em vez de colocar o que cada usuário pode fazer, eu tenho uma tabela chamada classe_acesso e no cadastro do usuário tem um campo que define de qual classe o usuário faz parte.
Tenho ainda outra tabela que define o que cada classe não pode fazer, ou seja, a classe pode tudo até ter algum bloqueio.
Segue um pequeno exemplo: [url]http://www.cdnweb.com.br/projeto_acesso.rar[/url]
Frederico Brigatte***
29/10/2012
Frederico Brigatte***
29/10/2012
Claudia Nogueira
29/10/2012
Se quiser separar por exemplo operações de inclusão, alteração ou exclusão, é só criar a classe de acesso ali onde está sendo carregado, e no botão de gravação, verificar pela função se o usuário logado faz parte de uma classe que tem ou não permissão para fazer.
Frederico Brigatte***
29/10/2012
Frederico Brigatte***
29/10/2012
Frederico Brigatte***
29/10/2012
Ta dando erro de Interbase library gds32.dll O que fazer?
Claudia Nogueira
29/10/2012
Quando eu estiver em casa eu posto mais detalhes do exemplo.
Ta dando erro de Interbase library gds32.dll O que fazer?
Frederico Brigatte***
29/10/2012
Frederico Brigatte***
29/10/2012
Firebird-2.0.7.13318_0_win32.exe
Mas tem a 2.5, qual é melhor?
Frederico Brigatte***
29/10/2012
Frederico Brigatte***
29/10/2012
Vi aqui no forum o post sobre leitor codigo de barras, voce poderia mandar pra mim também o exemplo? Sobre o UserControl, vc acha ele bom? Eu baixei a 2.0.7, pode ser essa mesmo?
Frederico Brigatte***
29/10/2012
Eu instalei o Firebird 2.0.7 e quando vou rodar o projeto, ta dando um erro:
unavailable database
O que pode ser?
Frederico Brigatte***
29/10/2012
Claudia Nogueira
29/10/2012
Eu instalei o Firebird 2.0.7 e quando vou rodar o projeto, ta dando um erro:
unavailable database
O que pode ser?
Claudia Nogueira
29/10/2012
Vi aqui no forum o post sobre leitor codigo de barras, voce poderia mandar pra mim também o exemplo? Sobre o UserControl, vc acha ele bom? Eu baixei a 2.0.7, pode ser essa mesmo?
Claudia Nogueira
29/10/2012
Mas fique a vontade em estudar o UserControl.
Tem uma explicação nesse link:
[url]http://www.planetadelphi.com.br/artigo/132/usercontrol---controle-os-usu[/url]
e nesse [url]http://edn.embarcadero.com/br/article/36235[/url]
Frederico Brigatte***
29/10/2012
Frederico Brigatte***
29/10/2012
Frederico Brigatte***
29/10/2012
Mas fique a vontade em estudar o UserControl.
Tem uma explicação nesse link:
[url]http://www.planetadelphi.com.br/artigo/132/usercontrol---controle-os-usu[/url]
e nesse [url]http://edn.embarcadero.com/br/article/36235[/url]
Esses links ja tinha visto antes, obrigado pelo retorno. Quero saber como vc faz, me ajuda?
Frederico Brigatte***
29/10/2012
Eu instalei o Firebird 2.0.7 e quando vou rodar o projeto, ta dando um erro:
unavailable database
O que pode ser?
Claudia Nogueira
29/10/2012
Coloquei a versão que eu uso no meu ftp: http://www.cdnweb.com.br/Firebird-2.0.1.12855-1-Win32.exe
Com outra versão vai dar problema.
Eu instalei o Firebird 2.0.7 e quando vou rodar o projeto, ta dando um erro:
unavailable database
O que pode ser?
Frederico Brigatte***
29/10/2012
Frederico Brigatte***
29/10/2012
Claudia,
Instalei a que você postou. Qual login e senha? Me explica como funciona.
Claudia Nogueira
29/10/2012
Claudia,
Instalei a que você postou. Qual login e senha? Me explica como funciona.
Frederico Brigatte***
29/10/2012
Claudia,
Instalei a que você postou. Qual login e senha? Me explica como funciona. Como faço para abrir o banco de dados?
Frederico Brigatte***
29/10/2012
Como uso esse exemplo? Não tem alteração de senha, Logoff? Da uma ajuda ai, por favor. Instalei o IBExpert e consegui abrir, só que não to entendendo.
Frederico Brigatte***
29/10/2012
Claudia Nogueira
29/10/2012
Nesse exemplo fiz 3 tabelas:
CLASSE_ACESSO : guarda o perfil e no exemplo pode ser cadastrado pela tela "Classes de Acesso>Botão Novo";
USUARIO : Tem ligação com a tabela CLASSE_ACESSO e pode ser cadastrado pela tela "Usuários>Botão Novo";
SEM_PERMISSAO : Guarda as operações que a classe de acesso do usuário logado não pode fazer. Todas as operações desse exemplo estão sendo carregadas na função "CarregaAcessos" do DataModule C_acessoDM. No seu sistema nessa função terá outras coisas. No caso pra você entender, se eu quisesse separar o acesso da tela Usuários por botão, ali na função "CarregaAcessos" eu trocaria onde tem:
Inc(iOrdem);
InsereAcessos('USUARIOS', 'Cadastrar Usuários',iOrdem);
por:
Inc(iOrdem);
InsereAcessos('USUARIOS_CADASTRO', 'Cadastrar Usuários',iOrdem);
Inc(iOrdem);
InsereAcessos('USUARIOS_EDICAO', 'Editar Usuários',iOrdem);
Inc(iOrdem);
InsereAcessos('USUARIOS_EXCLUSAO', 'Excluir Usuários',iOrdem);
Feito isso, essas novas restrições apareceriam na tela "Permissões".
Para restringir o acesso a alguma funcionalidade, é só abrir a tela "Permissões", selecionar a classe de acesso, e dar dois cliques na operação e gravar. Para permitir novamente a operação pra classe de acesso é só dar dois cliques novamente, passando para Sim e depois gravar.
Selecionando a classe de acesso, vai mostrar um Não nas operações que a classe não pode fazer e Sim nas que a classe pode.
Na tela de login, carrega a classe de acesso do usuário logado através de uma variável pública que tem no DataModule:
Var iClasseAcessoUsuario, iId_usuario : Integer; sUsuarioLogado : String;
Na tela de login, na função loginvalido está carregando as variáveis:
iId_usuario := C_acessoDM.IboQryGeral.FieldByName('ID_USUARIO').AsInteger;
sUsuarioLogado := C_acessoDM.IboQryGeral.FieldByName('NOME_USUARIO').AsString;
iClasseAcessoUsuario := C_acessoDM.IboQryGeral.FieldByName('ID_CLASSE_ACESSO').AsInteger;
E na tela "Usuários>Botão Novo" colocaria o código:
if not C_acessoDM.Permissao('USUARIOS_CADASTRO', iClasseAcessoUsuario) then
begin
Application.MessageBox('Não tem permissão','Informação',MB_ICONINFORMATION+MB_OK);
Exit;
end;
E na tela "Usuários>Botão Editar" colocaria o código:
if not C_acessoDM.Permissao('USUARIOS_EDICAO', iClasseAcessoUsuario) then
begin
Application.MessageBox('Não tem permissão','Informação',MB_ICONINFORMATION+MB_OK);
Exit;
end;
E na tela "Usuários>Botão Excluir" colocaria o código:
if not C_acessoDM.Permissao('USUARIOS_EXCLUSAO', iClasseAcessoUsuario) then
begin
Application.MessageBox('Não tem permissão','Informação',MB_ICONINFORMATION+MB_OK);
Exit;
end;
Os botões do exemplo Compra e Venda servem somente para demonstrar o uso, dando a mensagem se tem ou não permissão.
Frederico Brigatte***
29/10/2012
Você poderia postar seu email, para facilitar a conversa? O meu é frederico.brigatte@gmail.com e MSN: frederico.brigatte@itelefonica.com.br.
No caso de querer Alterar a Senha e Logoff, tem no seu sistema, só vi Resetar? Tentei cadastrar um usuário e não gravou a senha. Outra coisa que queria é por exemplo limitar também operações na tela de cadastro, por exemplo:
Todas operações ou Somente Consulta.
Claudia Nogueira
29/10/2012
Ele tem que ser totalmente adaptado às necessidades de cada projeto.
No cadastro de usuário eu coloquei pra gravar a senha padrão 1234, e não coloquei demais telas pois fugia do escopo.
Tanto é que a senha nem está criptografada na gravação dos dados, é realmente somente um exemplo.
No caso de você já ter em seu sistema uma tabela de usuários, você teria que adaptar, criando as demais tabelas e telas.
Meu e-mail é claudiadnh@gmail.com.
Você poderia postar seu email, para facilitar a conversa? O meu é frederico.brigatte@gmail.com e MSN: frederico.brigatte@itelefonica.com.br.
No caso de querer Alterar a Senha e Logoff, tem no seu sistema, só vi Resetar? Tentei cadastrar um usuário e não gravou a senha. Outra coisa que queria é por exemplo limitar também operações na tela de cadastro, por exemplo:
Todas operações ou Somente Consulta.
Frederico Brigatte***
29/10/2012
Frederico Brigatte***
29/10/2012
Gostaria de fazer do zero, sem usar o UserControl, vc me ajuda?
Frederico Brigatte***
29/10/2012