UserControl alguém usa?

Delphi

29/10/2012

Boa tarde,

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***

Frederico Brigatte***

Curtidas 0

Respostas

Claudia Nogueira

Claudia Nogueira

29/10/2012

Eu uso com controle por perfil.
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]
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Esse exemplo controla operações de CRUD?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Esse exemplo controla operações de CRUD? Obrigado pelo retorno.
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

29/10/2012

Pode controlar qualquer operação. Tem um lugar no projeto que eu defino tudo que tem que ter controle de acesso. No caso do exemplo, eu coloquei somente algumas operações.
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.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Meu banco é o MySQL, como posso adaptar? O exemplo é interbase, certo? Teria um
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Nesse exemplo não usa o UserControl, certo? Não estou conseguindo compreender esse exemplo. No caso, queria que o usuário x tivesse acesso somente para consulta da tabela x, ele faz isso? Onde vejo isso no exemplo?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Nesse exemplo não usa o UserControl, certo? Não estou conseguindo compreender esse exemplo. No caso, queria que o usuário x tivesse acesso somente para consulta da tabela x, ele faz isso? Onde vejo isso no exemplo?


Ta dando erro de Interbase library gds32.dll O que fazer?
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

29/10/2012

Instalar o Firebird 2.0.
Quando eu estiver em casa eu posto mais detalhes do exemplo.

Nesse exemplo não usa o UserControl, certo? Não estou conseguindo compreender esse exemplo. No caso, queria que o usuário x tivesse acesso somente para consulta da tabela x, ele faz isso? Onde vejo isso no exemplo?


Ta dando erro de Interbase library gds32.dll O que fazer?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Teria o link do firebird 2.0? Tem msn? Ai fica mais fácil de conversar, o meu é frederico.brigatte@itelefonica.com.br, meu email é frederico.brigatte@gmail.com

GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Baixei esse firebird:

Firebird-2.0.7.13318_0_win32.exe

Mas tem a 2.5, qual é melhor?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Claudia, vc acha o usercontrol bom? É melhor fazer esse tipo de controle na mão ou com ele?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Claudia,

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?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Claudia,

Eu instalei o Firebird 2.0.7 e quando vou rodar o projeto, ta dando um erro:

unavailable database

O que pode ser?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Claudia, to precisando da sua ajuda.
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

29/10/2012

Coloquei a versão que eu uso no meu ftp: [url]www.cdnweb.com.br/Firebird-2.0.1.12855-1-Win32.exe[/url]

Claudia,

Eu instalei o Firebird 2.0.7 e quando vou rodar o projeto, ta dando um erro:

unavailable database

O que pode ser?
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

29/10/2012

Assim que eu chegar em casa vou separar o material para enviar.

Claudia,

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?
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

29/10/2012

Eu não gosto do UserControl e nem uso, por isso eu postei uma outra solução. Pelo que entendi o tipo de controle que você gostaria de fazer, era bem parecido com o controle que eu faço.

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]

Claudia, vc acha o usercontrol bom? É melhor fazer esse tipo de controle na mão ou com ele?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Ok, poderia me ajudar por enquanto com o UserControl. Pra fazer o que quero, tem que ter outra tabela, ou pode utilizar a mesma que ele cria?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Poderia me explicar como vc faz? Estou querendo mudar, pois acho meio complicado o UserControl, apesar de ser bom, mas foi descontinuado. Poderia me ajudar?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Eu não gosto do UserControl e nem uso, por isso eu postei uma outra solução. Pelo que entendi o tipo de controle que você gostaria de fazer, era bem parecido com o controle que eu faço.

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]

Claudia, vc acha o usercontrol bom? É melhor fazer esse tipo de controle na mão ou com ele?


Esses links ja tinha visto antes, obrigado pelo retorno. Quero saber como vc faz, me ajuda?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Claudia,

Eu instalei o Firebird 2.0.7 e quando vou rodar o projeto, ta dando um erro:

unavailable database

O que pode ser?
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

29/10/2012

A versão que eu usei nesse exemplo foi essa que coloquei no FTP.

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.

Claudia,

Eu instalei o Firebird 2.0.7 e quando vou rodar o projeto, ta dando um erro:

unavailable database

O que pode ser?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Poderia me explicar como funciona o seu sistema?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Poderia me explicar como funciona o seu sistema?

Claudia,

Instalei a que você postou. Qual login e senha? Me explica como funciona.
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

29/10/2012

Têm dois usuários cadastrados. Um é SV e senha em branco e o outro é VENDEDOR com senha = 1234.

Poderia me explicar como funciona o seu sistema?

Claudia,

Instalei a que você postou. Qual login e senha? Me explica como funciona.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Poderia me explicar como funciona o seu sistema?

Claudia,

Instalei a que você postou. Qual login e senha? Me explica como funciona. Como faço para abrir o banco de dados?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Claudia,

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.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Claudia, me ajuda. To precisando falar com vc.
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

29/10/2012

Esse não é o sistema completo, separei somente as partes interessantes para entender o controle de acesso e coloquei alguns botões para o exemplo.

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.


Claudia, me ajuda. To precisando falar com vc.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Obrigado pelo retorno.

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.
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

29/10/2012

Fiz esse exemplo em 10 minutos, somente pra ajudar no conceito.
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.

Obrigado pelo retorno.

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.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Não tenho, pois estou usando o UserControl. Vc poderia me ajudar a montar, ou teria um exemplo mais completo só com esse assunto? Obrigado pelo email.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Não tenho, pois estou usando o UserControl. Vc poderia me ajudar a montar, ou teria um exemplo mais completo só com esse assunto? Obrigado pelo email.


Gostaria de fazer do zero, sem usar o UserControl, vc me ajuda?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

29/10/2012

Claudia, preciso falar com vc. Não sei mais que banco usa no projeto que vc mandou pra mim. Baixei o Firebird-2.0.1.12855-1-Win32 mas quando vou abrir o banco pelo Delphi da Unavailable Database. Poderia me ajudar?
GOSTEI 0
POSTAR