Usuários com Senhas

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Usuários com Senhas

Mensagem por Hasse »

Bom dia.

Tenho um programa com vários módulos onde os usuários podem acessar com senha e login.
Hoje o login é válido somente para o módulo que está sendo acessado.
O Login é destruído ao sair do módulo.
Ao entrar novamente no mesmo módulo é necessário digitar a senha novamente.

Desejo ativar um login que seja válido para todos os módulos, mas que expire automaticamente após determinado tempo de inatividade.

Procurei no site mas nada encontrei.

Alguém pode me dar uma luz, uma direção para seguir com o objetivo de atingir esta meta ?
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Usuários com Senhas

Mensagem por JoséQuintas »

Hasse escreveu:Desejo ativar um login que seja válido para todos os módulos, mas que expire automaticamente após determinado tempo de inatividade.
Fiquei na dúvida se a validade vai ser por módulo ou geral.

Só pra dar uma idéia, verifique variável datetime e funções com datetime

Código: Selecionar todos

FUNCTION ValidLogin( cModulo, lUpdate )

   LOCAL nPos, lValido
   STATIC aModuleList := { ;
      { "modulo", Nil, ;
      { "modulo2", Nil } }

   nPos := hb_ASCan( aModuleList, { | aInfo | cModule == aInfo } )
   IF nPos == 0
      AAdd( aModuleList, { cModulo, Nil } )
       nPos := Len( aModuleList )
   ENDIF
   IF lUpdate
      aModuleList[ nPos, 2 ] := HoraAtual()
     RETURN Nil
   ENDIF
   cAtual := HoraAtual()
   lValido := ( Empty( aModuleList[ nPos, 2 ] ) .OR. CalculaTempo( aModuleList[ nPos, 2 ], HoraAtual() ) < "?????" )

   RETURN lValido
ValidLogin( cModulo ) pra validar
ValidLogin( cModulo, .T. ) pra atualizar

E de repente, pra uma senha geral do aplicativo:
ValidLogin( "GERAL" )
ValidLogin( "GERAL", .T. )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Usuários com Senhas

Mensagem por JoséQuintas »

E tem outra coisa a ser vista, caso use senha geral:

Um usuário supervisor deixa lá, expira, e vém um usuário comum e faz login.
liberar tudo pro novo login pode causar estrago.

ou o supervisor faz login num módulo que só ele pode, e vém outro usuário depois.
vai ficar liberado pro novo usuário.

Se não tomar cuidado, ao invés de aumentar a proteção, vai estar é liberando aonde não deve.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Usuários com Senhas

Mensagem por Hasse »

Boa tarde Quintas.

Excelente a tua obervação quanto aos cuidados. Deste detalhe eu já cuidei pois cada um tem o seu Login, Senha e nível de acesso.

Todos os módulos fazem a checagem dos direitos de cada qual. Se acesso total, só consulta ou não permite acesso.

Eu tenho em mente que o Login + nível sejam de âmbito total, ou seja, em todo o programa e não só no módulo atual. E uma vez decorrido o tempo estipulado, somente aquele Login é zerado, ou seja não permite mais nenhum acesso, sendo que um outro que eventualmente está logado cujo tempo ainda não decorreu é mantido. Acho meio complicado....

Contudo, ficarei atento, pois ainda cogito de permitir somente um Login ativo por terminal, ou seja, se um Login estiver ativo e outro for logado, automaticamente o primeiro é zerado ou deletado.

Com a tua prática e experiência, qual opção me recomendarias ?
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Usuários com Senhas

Mensagem por JoséQuintas »

Considerando aquela mesma rotina, "talvez" outra STATIC com usuário.
Se mudar usuário, limpar a lista, e começar tudo de novo.

Aqui faço diferente:
Só aparecem as opções que o usuário pode usar.
Se fosse colocar tempo, seria pra fechar tudo e reiniciar a partir do login, só controlaria tempo mesmo.

Não sei se faltou outra questão no "bolo":
O login inicial, ele tem valor para os módulos ? ou cada novo módulo vai precisar de novo login ?
Senão, o default inicial por módulo deveria ser o geral, e não do zero.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Usuários com Senhas

Mensagem por JoséQuintas »

Hasse escreveu:Com a tua prática e experiência, qual opção me recomendarias ?
Minha experiência é limitada ao que eu uso.
É esse login usuário/senha, que libera o que pode usar, e vai fechando após um período de tempo.
Não tenho casos mais exigentes que isso.

Os níveis são apenas 3:

- usuário
- supervisor da empresa
- eu

Nas definições de acesso, duas opções:

- grupo
- usuário

Um usuário pode pertencer a mais de um grupo.
Se tá liberado para o grupo, fica liberado pra usuários do mesmo grupo.

Então o usuário pode acessar:

- Tudo, se for eu
- Supervisor é o que pode modificar permissões
- Supervisor ou não, tudo que estiver liberado pra senha dele
- Supervisor ou não, tudo que estiver liberado para algum grupo que ele pertença
- Supervisor só pode liberar o que ele tem acesso, pra outros

Um efeito colateral: se um supervisor com menos acessos for mexer, ele acaba removendo acessos.
Nunca me preocupei com isso, porque geralmente cada empresa só tem um supervisor.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Usuários com Senhas

Mensagem por Hasse »

Bom dia Quintas.

São de grande utilidade as consideração que você colocou.
Abriu muito mais a minha visão sobre o assunto.
Obrigado.
Um Abraço e uma boa semana de trabalho.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Usuários com Senhas

Mensagem por JoséQuintas »

José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Usuários com Senhas

Mensagem por Hasse »

Boa tarde Quintas.

Pô amigo, e você afirmou que conhece pouco de senhas e login...

Este último POST afirma o contrário.... Entende e muito...

Parabéns...
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Responder