PERMISSAO DE ACESSO DE TELAS PARA USUARIOS
Preciso de uma rotina em vb6 que faça o seguinte:
Meu aplicativo tera um administrador, e este, podera definir permissões de outros usuarios na tela de login.
txtlogin (user)
txtpass(***)
cmbnivel(ADMINISTRADOR)
Onde tivesse um exemplo de que se for administrador tem permissão total sobre os formularios e se for usuario alguns são restritos.
Gostaria de saber uma rotina ou um exemplo funcional para efetuar essa proeza...
Muito obrigado...
Meu aplicativo tera um administrador, e este, podera definir permissões de outros usuarios na tela de login.
txtlogin (user)
txtpass(***)
cmbnivel(ADMINISTRADOR)
Onde tivesse um exemplo de que se for administrador tem permissão total sobre os formularios e se for usuario alguns são restritos.
Gostaria de saber uma rotina ou um exemplo funcional para efetuar essa proeza...
Muito obrigado...
Você tem duas saÃdas:
1- mais simples, criar variáveis públicas num módulo e ao iniciar seu login, carrega as permissões do usuário numa tabela (DB) com todas as permissões dele ex: Where IDFuncionário = xxx
Então faz um loop no recordset verificando qual permissão ele tem e coloca true na variável correspondente. Ao abrir a tela principal já associa os itens do menu as variáveis, então fica itemMenu1.enabled = variávelItem1
2- a cada carregamento de tela que fizer, vai no banco e procura só as permissões dessa tela e funconário.
Nota: A opção 1 acho melhor, pois memoria hoje todo micro tem, e não serão umas 20 ou 50 variáveis públicas que farão a diferença. Agora a opção 2, poderá sobrecarregar o fluxo na rede, pois sempre estará acessando o banco para pegar as permissões de cada tela/funcionário. Então se o programa tem muitas telas e acessos, poderá ter um grande fluxo na rede.
O inconveniente da primeira opção é que se houver alteração nas permissões o usuário só será afetado no próximo login.
1- mais simples, criar variáveis públicas num módulo e ao iniciar seu login, carrega as permissões do usuário numa tabela (DB) com todas as permissões dele ex: Where IDFuncionário = xxx
Então faz um loop no recordset verificando qual permissão ele tem e coloca true na variável correspondente. Ao abrir a tela principal já associa os itens do menu as variáveis, então fica itemMenu1.enabled = variávelItem1
2- a cada carregamento de tela que fizer, vai no banco e procura só as permissões dessa tela e funconário.
Nota: A opção 1 acho melhor, pois memoria hoje todo micro tem, e não serão umas 20 ou 50 variáveis públicas que farão a diferença. Agora a opção 2, poderá sobrecarregar o fluxo na rede, pois sempre estará acessando o banco para pegar as permissões de cada tela/funcionário. Então se o programa tem muitas telas e acessos, poderá ter um grande fluxo na rede.
O inconveniente da primeira opção é que se houver alteração nas permissões o usuário só será afetado no próximo login.
Rapaz, eu tenho o seguinte:
Cadastro de usuarios, Cad. Sistema, Sistema_menu, SistemaUsuario
Usuarios: Dados do Usuário
Sistema: Informações sobre o sistema
Sistemas_Menu: Cadastra os nomes dos menus identicos ao definido no vb6 com seus nÃveis de deslocamento e codigo do Menu_Pai qdo ele for um sub_menu.
Sistema_Usuario: Codigo do sistema, codigo do usuário e nÃvel de acesso ao sistema (Administrador, operador)
Usuario_Acesso: Usuario, sistema, codMenu, Pode acessar(sim/nao), Tipo de acesso(Consulta/Manutenção)
Vc pode cadastrar inclusive os menus de consultas e relatóros e dar permissão de acesso a cada um deles.
Qdo o usuário é administrador fica com permissão total a todos os menus.
No load do formMdi pu formMenu, vc faz a checagem se os menus vão ficar habilitados ou não dependendo se pode acessar ou não.
Lo load de cada form, vc checa se o acesso dele é de consulta ou de manutenção, se for de consulta, inabilita botoes de gravar/alterar/deletar.
A idéia está aÃ, agora é mão na massa.
Abraços.
Cadastro de usuarios, Cad. Sistema, Sistema_menu, SistemaUsuario
Usuarios: Dados do Usuário
Sistema: Informações sobre o sistema
Sistemas_Menu: Cadastra os nomes dos menus identicos ao definido no vb6 com seus nÃveis de deslocamento e codigo do Menu_Pai qdo ele for um sub_menu.
Sistema_Usuario: Codigo do sistema, codigo do usuário e nÃvel de acesso ao sistema (Administrador, operador)
Usuario_Acesso: Usuario, sistema, codMenu, Pode acessar(sim/nao), Tipo de acesso(Consulta/Manutenção)
Vc pode cadastrar inclusive os menus de consultas e relatóros e dar permissão de acesso a cada um deles.
Qdo o usuário é administrador fica com permissão total a todos os menus.
No load do formMdi pu formMenu, vc faz a checagem se os menus vão ficar habilitados ou não dependendo se pode acessar ou não.
Lo load de cada form, vc checa se o acesso dele é de consulta ou de manutenção, se for de consulta, inabilita botoes de gravar/alterar/deletar.
A idéia está aÃ, agora é mão na massa.
Abraços.
Entendi e isso que eu quero vc poderia disponibilizar o codigo pra min?
Private Sub cmdAutenticar_Click()
Dim sql As String
sql = [Ô]select * from login where user=[ô][Ô] & txtuser.Text & [Ô][ô] and pass=[ô][Ô] & txtpass.Text & [Ô][ô][ô] and nivel=[ô][Ô] & cmbnivel.text & [Ô][ô][Ô]
Set login = conexao.Execute(sql)
If login.EOF Then
m = MsgBox([Ô]Usuário não encontrado, digite novamente[Ô], vbCritical, [Ô]Autenticação[Ô])
txtuser.Text = Empty
txtpass.Text = Empty
txtuser.SetFocus
Else
m = MsgBox([Ô]Usuário encontrado com sucesso[Ô], vbInformation, [Ô]Autenticação[Ô])
m = MsgBox([Ô]Carregando o sistema[Ô], vbInformation, [Ô]Autenticação[Ô])
Unload Me
MDIForm1.Show
End If
End Sub
Se cmbnivel for igual a gerente ele libera os forms pedidos, se for vendedor liberar os forms que são pedidos e etc.
como que eu iria fazer isso?
sendo que eu teria que buscar no bd se o cara e mesmo gerente se for igual ele deixa visivel os menus ou forms que ele tem permicao se nao for ele da a mensagem de que ele esta proibido de fazer aquilo.
James Bond...
O que eu faço é o seguinte:
Tenho as seguintes tabelas:
Funções - Esta tabela contém todas as funções (form) do sistema, identificadas por um ID (código).
Perfil - Uma tabela com os perfis de usuário criados pelo administrador do sistema
Permissões - Uma tabela que relaciona o perfil criado pelo adm com as funções(ID) que o determinado perfil tem acesso.
Usuários - cadastro do usuário, com senha e perfil atribuÃdo.
Quando um usuário loga o sistema, verifico qual é o pefil, desabilito todas os acessos, vou até o permissões e busco função a função se o mesmo está liberado para o perfil do usuário logado. Se estiver, enabled = true.
Isso facilita quando um usuário mudar de função, basta o adm trocar o perfil do mesmo para que ele tenha outras liberações no sistema. Ou caso um grupo de usuários de mesmo perfil tenha uma nova função no sistema, basta o adm liberar no perfil.
Funciona 100%.
O que eu faço é o seguinte:
Tenho as seguintes tabelas:
Funções - Esta tabela contém todas as funções (form) do sistema, identificadas por um ID (código).
Perfil - Uma tabela com os perfis de usuário criados pelo administrador do sistema
Permissões - Uma tabela que relaciona o perfil criado pelo adm com as funções(ID) que o determinado perfil tem acesso.
Usuários - cadastro do usuário, com senha e perfil atribuÃdo.
Quando um usuário loga o sistema, verifico qual é o pefil, desabilito todas os acessos, vou até o permissões e busco função a função se o mesmo está liberado para o perfil do usuário logado. Se estiver, enabled = true.
Isso facilita quando um usuário mudar de função, basta o adm trocar o perfil do mesmo para que ele tenha outras liberações no sistema. Ou caso um grupo de usuários de mesmo perfil tenha uma nova função no sistema, basta o adm liberar no perfil.
Funciona 100%.
Cara eu fiz assim
criei uma tabela permissões
IDUser Int
Permi Varchar(500)
em um formulário coloquei um triview
para cadaopção do menu criei um nó
Cadastro
Fornecedor
Cliente
Contas a Pagar
Consultar
Lançar
Pagar
Contas a Receber
Baixar
Consultar
Lançar
Quado um usuario é cadastrado eu Preencho a tabela permissões
IDUser = 1
Permi 01N02N03N04N05N06N07N08N
01N SIGNIGFICA QUE NÃO TERà ACESSO A CADASTRO
02n SIGNIFICA QUE NÃO PODERà CADASTRAR FORNECEDOR
o ADMINISTRADOR APÓS CADASTRAR O USUARIO ABRE A TELA DE PERMISSÕES, SELECIONA O USUÃRIO E MARCA AS PERMISSÕES, APÓS SALVAR
Permi 01s02s03s04s05s06s07s08s
Ao iniciar o sistema abro a tabela e faço um loop
e vou habilitando as opções que estejam com S.
Isso é só para liberar a tela ou não, caso vc queira permitir ou não inclusão,alteração,exclusão basta adicionar no triview + opções.
esse metodo tem algumas vantagens e também tem desvantagem
vantagem
nenhum usuário abrindo o BD irá saber o que habilita quem.
Desvantagem
se precisar acrescentar ou excluir alguma opção do menu o trabaho é enorme, a não ser que vc coloque as opções do menu em uma tabela.
criei uma tabela permissões
IDUser Int
Permi Varchar(500)
em um formulário coloquei um triview
para cadaopção do menu criei um nó
Cadastro
Fornecedor
Cliente
Contas a Pagar
Consultar
Lançar
Pagar
Contas a Receber
Baixar
Consultar
Lançar
Quado um usuario é cadastrado eu Preencho a tabela permissões
IDUser = 1
Permi 01N02N03N04N05N06N07N08N
01N SIGNIGFICA QUE NÃO TERà ACESSO A CADASTRO
02n SIGNIFICA QUE NÃO PODERà CADASTRAR FORNECEDOR
o ADMINISTRADOR APÓS CADASTRAR O USUARIO ABRE A TELA DE PERMISSÕES, SELECIONA O USUÃRIO E MARCA AS PERMISSÕES, APÓS SALVAR
Permi 01s02s03s04s05s06s07s08s
Ao iniciar o sistema abro a tabela e faço um loop
e vou habilitando as opções que estejam com S.
Isso é só para liberar a tela ou não, caso vc queira permitir ou não inclusão,alteração,exclusão basta adicionar no triview + opções.
esse metodo tem algumas vantagens e também tem desvantagem
vantagem
nenhum usuário abrindo o BD irá saber o que habilita quem.
Desvantagem
se precisar acrescentar ou excluir alguma opção do menu o trabaho é enorme, a não ser que vc coloque as opções do menu em uma tabela.
>
é ARNALDOCRUZ, o meu é um pouco parecido com o seu mas tem 4 check-box para cada form, Consultar, Alterar, Excluir, Imprimir.
E tbém entro na mesma desvantagem, tenho que cadastrar no BD cada novo form, relatório o seilá o que.
Mas ainda acho bom.
<
é ARNALDOCRUZ, o meu é um pouco parecido com o seu mas tem 4 check-box para cada form, Consultar, Alterar, Excluir, Imprimir.
E tbém entro na mesma desvantagem, tenho que cadastrar no BD cada novo form, relatório o seilá o que.
Mas ainda acho bom.
<
Como eu teria que alterar aquilo no meu botao [ô]cmdAutenticar[ô]
Alguem???
Alterar o que James?
Foram expostos modelos de liberações por usuário... Depende de como vc vai fazer.
No seu caso, depois de Unload Me e antes de MDIForm1.Show (ou dentro de, se este form for o que tem o menu de opções), você irá liberar ou não as opções para o usuário logado.
Mas para isso, vc terá que fazer um modelo de liberações, vc já o fez? A única coisa q vc postou foi o código de um botão de login... Como isso vai se processar no seu sistema, depende da estrutura que vc tem (ou vai criar)...
Foram expostos modelos de liberações por usuário... Depende de como vc vai fazer.
No seu caso, depois de Unload Me e antes de MDIForm1.Show (ou dentro de, se este form for o que tem o menu de opções), você irá liberar ou não as opções para o usuário logado.
Mas para isso, vc terá que fazer um modelo de liberações, vc já o fez? A única coisa q vc postou foi o código de um botão de login... Como isso vai se processar no seu sistema, depende da estrutura que vc tem (ou vai criar)...
Tópico encerrado , respostas não são mais permitidas