MENUS - VB.NET

JOAOBENEVIDES 16/09/2015 10:15:31
#451449
Ola Pessoal Tenho um sistema feito em vb.net + c# . com menus queria comecar a controlar onde os usuarios tem permisão ou nao para entrar , alguem tem exemplo que possa me passa , os menus estao criando em menustrip sem banco de dados ou xml , queria manter um melhor permisao dos usuarios

Obrigado , se tiverem exemplo me indicar algo
fico grato

Joao Spagnol
VINNIFERRAZ 16/09/2015 10:30:03
#451452
Resposta escolhida
cria um campo de permissão na sua tabela de login. Depois é só verificar o conteudo dela ao logar
ai se a permissão for X por exemplo desabilita
se for Y não

é isso
JOAOBENEVIDES 16/09/2015 10:49:15
#451453
entao esta é a logica mais como busco os menus e nome deles para eu gravar na tabela ?
VINNIFERRAZ 16/09/2015 12:59:10
#451461
vc nao vai gravar os nomes dos menus na tabela
o que será gravado sera um campo de permissão, os campos serão desabilitados em tempo de execução no código fonte

ai vc vai fazendo a verificação no form dos menus, caso o campo permissão seja admin então nao desabilita nada, caso seja usuario desabilita n coisas, entendeu?

e só vc criar uma variavel publica pra isso e fazer ela receber o campo permissão e depois ir verificando qual o conteudo dessa variavel

VINNIFERRAZ 16/09/2015 13:07:05
#451462
pra modo de teste faça assim
coloque uma variavel no seu form principal( onde estão os menus) chama ela de getpermission
c#
public static string getpermission;
getpermission = [Ô]admin[Ô];
if (getpermission != [Ô]admin[Ô])
{
menucadastro.Enabled = false;
menuimprime.Enabled = false;
menuetc.Enabled = false;
}
else
{

}
isso irá funcionar, agora basta vc fazer o mesmo usando um select no banco de dados, passando o valor por um datareader e fazer
getpermission = dr[[Ô]seucampo[Ô]].ToString();
ou
getpermission = dr.Item[[Ô]seucampo[Ô]].ToString();

não testei os códigos, mas irão funcionar pra vc ter uma idéia de como fazer dessa forma
MESTRE 16/09/2015 16:39:32
#451471
O Meu criei varios campos INT(1) na tabela usuario, defino todos os campos visible = false de default na propriedade mesmo

0 -> para não permitido
1 -> para permitido

Daí leio os resultados com um DataReader e faço um:
  If campo = 1 then me.menu1.visible=true 


O que for 0 já vai tar visible=false mesmo então já era..
NICKOSOFT 16/09/2015 16:44:08
#451472
não tenho aki, mas fiz um esquema na unha q achei longo, porem totalmente funcional....
mas no meu caso tem uma tabela menu no BD onde crio o nome do menu, idusuario, e uma opção visível ou não...
JOAOBENEVIDES 16/09/2015 17:13:43
#451473
NICKOSOFT , se puder me passar fico grato
VINNIFERRAZ 16/09/2015 19:51:27
#451476
Nicksoft, diferente isso que vc fez..
tem alguma melhoria em desempenho ao metodo tradicional?
joaobenevides, o metodo do meste também funciona, o que vc precisa realmente fazer é checar um campo com if depois de buscar ele com um datareader
JCM0867 16/09/2015 20:30:17
#451478
Eu fiz assim, criei um form com todo o menu em botões que muda de cor ao serem clicados
Azul é acesso completo, Vermelho é somente leitura e cinza sem acesso, tb pode ser 1, 2 e 3.
essas cores devem ser salvas no login de cada usuario (salva o código da cor).
Ao entrar no sistema e digitar o usuário e login, basta tratar o menu ou forms conforme as cores do cadastro do usuário.

primeiramente ele restringe os acessos ao menu (cor cinza)
Ao entrar num form ele deverá analisar se aquele form tem acesso azul (acessa tudo ou vermelho (acesso parcial, desabilitando Incluir, Altera, Salvar)
cada usuário terá uma tripa de campos, um para cada form

apenas um usuário master tem acesso a configuração dos acessos.

Bem trabalhado ficou bacana, veja na imagem:

NICKOSOFT 17/09/2015 05:36:38
#451482
Citação:

:
NICKOSOFT , se puder me passar fico grato


pode ser q fique mais difícil de entender, faço em camadas no mesmo projeto, então to colocando o principal....vou tentar incluir algumas citacoes
  
[ô]cadastrar os menus
For i = 0 To Me.Controls.Count - 1[ô]for pelos controles simples
If TypeOf Me.Controls(i) Is CheckBox Then[ô]se for os checkbox precisa tratar
Dim IncluirMenu As New clsMenu[ô][ô]chama a classe
IncluirMenu.IdUsuario = Incluir.ID[ô]ja busquei fora do laco o id do usuário recém criado e cadastrado na tabela de usuários...
IncluirMenu.Menu = Me.Controls(i).Name[ô]incluo no campo menu da tabela menu o nome do controle, como ve na imagem, cada checkbox tem o mnublabla o mesmo nome do menu no form principal....
Dim objeto As CheckBox[ô]trato pra obter o estado do check e salvar
objeto = Me.Controls(i)
If objeto.Checked = True Then
IncluirMenu.Enable = False
Else
IncluirMenu.Enable = True
End If
IncluirMenu.Incluir()[ô]efetivando a inclusão das informacoes
End If
Next

no form principal, o inicio do código, pq é enorme e cresce conforme tiver mais menus....
  
Dim Sql As String = [Ô]select * from menu where idusuario=@idusuario[Ô]
Dim ds As DataSet
ds = Busca.RetornaDS(Sql, parametrosNomes, parametrosValores)

If ds.Tables(0).Rows.Count > 0 Then
For i = 0 To ds.Tables(0).Rows.Count - 1
Select Case ds.Tables(0).Rows(i).Item([Ô]menu[Ô]).ToString.ToLower
Case [Ô]mnumatriculas[Ô]
If ds.Tables(0).Rows(i).Item([Ô]enable[Ô]).ToString = False Then
mnuMatriculas.Enabled = False
Else
mnuMatriculas.Enabled = True
End If
Case [Ô]mnumatricula[Ô]
If ds.Tables(0).Rows(i).Item([Ô]enable[Ô]).ToString = False Then
mnuMatricula.Enabled = False
Else
mnuMatricula.Enabled = True
End If

vejam não sei se é o mais certo ou mais pratico, talvez mais eficiente, mas considero de alta flexibilidade....não vou criar grupos de usuários, cada usuário criado pode ter seu perfil único......
Página 1 de 2 [20 registro(s)]
Tópico encerrado , respostas não são mais permitidas