Jump to content
Fivewin Brasil

SENHA Acesso Sistema


Theotokos

Recommended Posts

Boa Tarde! Preciso de uma idéia.... O sistema tem controle de acesso por senha / usuário, porem tem uns benditos que esquecem sua senha aberta (gerente) ai funcionário espertinho faz proveito disto e acessa opções que não poderia... Aí o cliente esta me enchendo o saco, para que eu evite isso... mas não faço ideia o que pode ser feito... 

Tinha pensado em colocar um TIMER para que qdo ficasse o sistema sem uso por algum tempo (inativo) o sistema pedisse a senha novamente... mas parece que isso já foi tentado por alguem aqui no forum e não deu certo, por causo do consumo de memória algo assim...

ALGUMA IDÉIA?

Link to comment
Share on other sites

Como que insere essa parte no sistema, eu incluir simplesmente no fonte principal e não compila

//                       typedef struct tagLASTINPUTINFO {
//                           UINT cbSize;
//                           DWORD dwTime;
//                       } LASTINPUTINFO, *PLASTINPUTINFO;


WINUSERAPI BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO);
typedef  BOOL (WINAPI *GETLASTINPUTINFO_)(PLASTINPUTINFO);

HB_FUNC( SYSIDLESECS )
{
   HINSTANCE handle= LoadLibrary("user32.dll");
   if ( handle)
   {
      GETLASTINPUTINFO_ pFunc;
      pFunc = GetProcAddress( handle,"GetLastInputInfo" );
      if (pFunc)
      {
         LASTINPUTINFO lpi;

         lpi.cbSize = sizeof(LASTINPUTINFO);

         if (!pFunc(&lpi))
         {
            hb_retni(0);
         }
         else
         {
            hb_retnd( ( DOUBLE ) ( GetTickCount() - lpi.dwTime ) * 0.001 );
         }
      }
   else
      {
         hb_retni(0);
      }
   }

   if (handle)
      {
         FreeLibrary( handle);
      }
}
#pragma ENDDUMP
***********************************************************************************************+
 

Link to comment
Share on other sites

Eu que tenho sistemas para cartórios a responsabilidade dos usuários é bem complicada.

Tenho 4 métodos para gerenciar senhas

1-O usuário loga com a senha no sistema e tudo fica registrado no seu login. Porem se ele deixar o programa aberto outro pode fazer qualquer coisa em nome dele.

2-Todos os procedimentos de lançamentos, inclusões, alterações etc pede a senha novamente. Isto serve para os computadores onde varios usuarios acessam.

3-Todos os procedimentos nescessitam que passe o cartão RFid registrado para cada usuário.

4-Logon e reconhecimento do serial de um pendrive pessoal do usuario. O programa funcionara somente se o PenDrive estiver conectado no micro. (Veja em \Samples protect.prg)

 

Na minha opnião o melhor método é o cartão RFid quando varias pessoas acessam o mesmo micro.

Link to comment
Share on other sites

1 hora atrás, giovanyvecchi disse:

Eu que tenho sistemas para cartórios a responsabilidade dos usuários é bem complicada.

Tenho 4 métodos para gerenciar senhas

1-O usuário loga com a senha no sistema e tudo fica registrado no seu login. Porem se ele deixar o programa aberto outro pode fazer qualquer coisa em nome dele.

2-Todos os procedimentos de lançamentos, inclusões, alterações etc pede a senha novamente. Isto serve para os computadores onde varios usuarios acessam.

3-Todos os procedimentos nescessitam que passe o cartão RFid registrado para cada usuário.

4-Logon e reconhecimento do serial de um pendrive pessoal do usuario. O programa funcionara somente se o PenDrive estiver conectado no micro. (Veja em \Samples protect.prg)

 

Na minha opnião o melhor método é o cartão RFid quando varias pessoas acessam o mesmo micro.

Excelente ideia. más, e o custo operacional disso? Para cartórios, blz. já que exploram os usuários em muitos $$$$$$, já para empresas comuns, não creio seja acessível, ou é? gracias por explanar, pls.

Regards, saludos.

Link to comment
Share on other sites

Completo:

// C:\FWH..\SAMPLES\SYSIDLE.PRG - By Jose Alvarez.
// MOD. EN: 08/11/2022 By kapiabafwh@gmail.com - Sao Paulo - Brasil.
	#include "FiveWin.ch"
	/*
// function to exit the app when default 'x' number of seconds pass with no activity
// from the keyboard or mouse.
// attention! IT IS NOT THE TIME without activity of our application, it is the inactive time of the PC
	// función para salir de la aplicación cuando pasan 'x' cantidad de segundos predeterminados sin actividad
// del teclado o raton.
// ¡atención! NO ES EL TIEMPO sin actividad de nuestra aplicacion, es el tiempo inactivo de la PC
	// função para sair do aplicativo quando o número padrão 'x' de segundos passa sem atividade
// do teclado ou mouse.
// atenção! NÃO É O TEMPO sem atividade do nosso aplicativo, é o tempo inativo do PC
*/
	STATIC oDlg, oFont, oTimerExit
STATIC nInterval
	MEMVAR nSecondsToOut
	FUNCTION Fnct_Prueba()
	   LOCAL oGet1, oBtnX2, cTitle, aGrad, oSay
   LOCAL cVar1 :=  [SYSIDLE.PRG: BY JOSE ALVAREZ.     ]
	   HB_GCALL( .F. )
	   nSecondsToOut := 55 // (segundos)
	   nInterval := 1 * 60000  //(1 x 60000 = 1 minuto)
	   aGrad  := { { 0.30, CLR_WHITE, CLR_HCYAN },{ 0.30, CLR_WHITE, CLR_HCYAN } }
	   cTitle := "MOVE MOUSE: PRUEBA DE SYSIDLE.PRG: BY JOSE ALVAREZ"
	   DEFINE FONT oFont NAME "TAHOMA" SIZE 0, - 14
	   DEFINE DIALOG oDlg SIZE 600, 200  PIXEL TRUEPIXEL RESIZABLE  ;
      TITLE cTitle GRADIENT aGrad FONT oFont
	   @ 050, 10 GET oGet1 VAR cVar1 bitmap "..\bitmaps\chkyes.bmp" ;
      OF oDlg PIXEL SIZE 300, 24 FONT oFont                     ;
      ACTION( NIL )
   
   oGet1:lBtnTransparent := .T.       // transparent button get oGet1
   oGet1:lAdjustBtn      := .T.       // Button Get Adjust Witdh oGet3
   oGet1:lDisColors      := .F.       // Deactive disable color
   oGet1:nClrTextDis     := CLR_WHITE // Color text disable status
   oGet1:nClrPaneDis     := CLR_BLUE  // Color Pane disable status
	   @ 095, 10 SAY oSay PROMPT "This a Test: No Move Mouse Wait 1 Minute." ;
      OF oDlg SIZE 150, 14 COLOR CLR_BLACK, CLR_WHITE PIXEL FONT oFont   ;
      TRANSPARENT ADJUST
	   @ 120, 250 BTNBMP oBtnx2 SIZE 60, 60 PIXEL OF oDlg FLAT NOBORDER ;
      PROMPT "Exit" FILENAME "..\bitmaps\16x16\Exit.bmp" BOTTOM     ;
      COLOR CLR_BLACK, nRgb( 238, 236, 219 ) ACTION( oDlg:End() )
	   oBtnX2:lCancel := .T.
	   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT ( oGet1:SetFocus(), Fnct_StartCounterTime() )
	RETURN NIL
	FUNCTION Fnct_StartCounterTime ()
	   DEFINE TIMER oTimerExit OF oDlg INTERVAL nInterval ;
      ACTION ( IIF( sysIdleSecs() > nSecondsToOut, fExit(), ) )
	   oTimerExit:Activate()
	RETURN NIL
	FUNCTION fExit()
	   oTimerExit:Deactivate()
   oTimerExit:End()
	   MsgAlert( 'Tu Sesión Finalizó Por Inactividad.', 'Fin de Sesión' )
	   oDlg:End()
   RELEASE FONT oFont
	   FreeResources()
   Release All
   SysRefresh()
   HB_GCALL( .T. )
	   CLEAR MEMORY
	   PostQuitMessage( 0 )
	   QUIT
	RETURN NIL
	// typedef struct tagLASTINPUTINFO {
//    UINT cbSize;
//    DWORD dwTime;
// } LASTINPUTINFO, *PLASTINPUTINFO;
	#pragma BEGINDUMP
	#define _WIN32_WINNT 0x0500
#define WINVER 0x0500
#include "windows.h"
#include "hbapi.h"
	WINUSERAPI BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO);
typedef  BOOL (WINAPI *GETLASTINPUTINFO_)(PLASTINPUTINFO);
	HB_FUNC( SYSIDLESECS )
   {
   HINSTANCE handle = LoadLibrary("USER32.dll");
   if ( handle)
   {
      GETLASTINPUTINFO_ pFunc;
      pFunc = GetProcAddress( handle,"GetLastInputInfo" );
      if (pFunc)
      {
         LASTINPUTINFO lpi;
	         lpi.cbSize = sizeof(LASTINPUTINFO);
	         if (!pFunc(&lpi))
         {
            hb_retni(0);
         }
         else
         {
            hb_retnd( ( DOUBLE ) ( GetTickCount() - lpi.dwTime ) * 0.001 );
         }
      }
   else
      {
         hb_retni(0);
      }
   }
	   if (handle)
      {
         FreeLibrary( handle);
      }
}
#pragma ENDDUMP
	// FIN / END

Regards, saludos.

Link to comment
Share on other sites

24 minutos atrás, giovanyvecchi disse:

Good! Más, como você controla o LEITOR internamente no seu sistema? Podeis mostrar uma IMAGEM e/ou código para vermos, pls?

Gracias, Regards, saludos.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...