Fórum Renovar senha de usuario a cada 6 meses #394595
27/01/2011
0
Recentemente envie uma pergunta a este forum sobre como renovar a senha a cada 6 meses de acordo com a data dos sistema. Recebi algumas respostas. Também questionei no Forum do DEVMEDIA e obtive a seguinte resposta:
Uses
DateUtils;
..
...
Var
DataAlteracao : TDateTime;
begin
//Pega a data da ultima alteracao no banco
DataAlteracao := DataModule1.Query1.FieldByName('dataalte').AsString;
//Incrementa essa data em seis meses
DataAlteracao := IncMonth(DataAlteracao,6);
if DataAlteracao >= Now then
ShowMessage('Voce tem que mudar sua senha em até 5 dias!');
//Incrementa a data de alteração em cinco dias
DataAlteracao := IncDay(DataAlteracao,5);
if DataAlteracao >= Now then
ShowMessage('Acesso negado.Contate o administrador do sistema')
end;
Fiz este código no evento onshow do meu formulário de login, porém ele funciona para cadastros com data inferior a 2011. Com cadastro efetuados apartir de janeiro de 2011 ele acrescenta os 6 meses. E que eu gostaria (como o da minha empresa em que trabalho) chegando próximo a data o usuario seja avisa que ele tem 7, 6, 5, 4, 3, 2, 1 dias para renovar a sua senha senão ela será bloqueada.
Obtive uma resposta no Forum Active Delphi assim: Pode fazer isso usando a função DaysBetween
Código:
Showmessage( 'Faltam ' + IntToStr( DaysBetween( dataFinal, dataInicial ) ) + ' dias.' );
Uses
DateUtils;
..
...
Var
DataAlteracao : TDateTime;
begin
//Pega a data da ultima alteracao no banco
DataAlteracao := DataModule1.Query1.FieldByName('dataalte').AsString;
//Incrementa essa data em seis meses
DataAlteracao := IncMonth(DataAlteracao,6);
if DataAlteracao >= Now then
ShowMessage('Voce tem que mudar sua senha em até 5 dias!');
//Incrementa a data de alteração em cinco dias
DataAlteracao := IncDay(DataAlteracao,5);
if DataAlteracao >= Now then
ShowMessage('Acesso negado.Contate o administrador do sistema')
end;
Fiz este código no evento onshow do meu formulário de login, porém ele funciona para cadastros com data inferior a 2011. Com cadastro efetuados apartir de janeiro de 2011 ele acrescenta os 6 meses. E que eu gostaria (como o da minha empresa em que trabalho) chegando próximo a data o usuario seja avisa que ele tem 7, 6, 5, 4, 3, 2, 1 dias para renovar a sua senha senão ela será bloqueada.
Obtive uma resposta no Forum Active Delphi assim: Pode fazer isso usando a função DaysBetween
Código:
Showmessage( 'Faltam ' + IntToStr( DaysBetween( dataFinal, dataInicial ) ) + ' dias.' );
Carlos Leonel
Curtir tópico
+ 0
Responder
Posts
29/01/2011
Vander
Carlos,
Pela lógica que postou ele irá incrementar seis meses "DataAlteracao := IncMonth(DataAlteracao,6);" após a data que obteve do banco.
Se você fez o cadastro em 2011, exemplo, 20/01/2011 a senha expira daqui a seis meses, ou seja, 20/07/2011, só irá avisar quando estiver nesta data.
Para simular coloque a data do seu computador em qalquer dia de agosto de 2011 e faça o teste.
Em relação ao aviso é só trocar:
ShowMessage('Acesso negado.Contate o administrador do sistema')
por
Showmessage( 'Faltam ' + IntToStr( DaysBetween( Now, DataAlteracao ) ) + ' dias.' );
At.
Obs.: Para que não consigam burlar a segurança de seu sistema, não utlize a função "NOW", retorne pelo banco de dados de seu servidor a data, pois para alterar a data do servidor somente o adminstrador teria acesso a este tipo de alteração.
Responder
Gostei + 0
16/05/2013
José
Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)