Setar data para conta expirar no Grails
31/05/2012 16:44
0
Estou desenvolvendo um sistema com grails e meu cliente gostaria de ter uma funcionalidade que fosse possível ao ele criar um novo usuario no sistema, ele definir uma data para a conta ficar inativa (expired). Estou utilizando o spring security ui para a tela de login. Pensei num algoritmo que quando ele criasse o usuario, ele passava a data para a conta expirar e quando o usuario logasse com a sua senha, o sistema verificaria no login se aquela conta está expirada ou não... mas nao estou conseguindo implementar essa funcionalidade especifica... alguem ja implementou esse tipo de coisa em grails?
Tags: spring security ui, spring security core, expirar conta, data, date


0
Brother, quem cria o usuário? Um idéia! Ao invés de salvar uma data pode fazer pela quantidade de dias ou até a data mesmo, mas destinada á um grupo por exemplo ou até mesmo por perfil do usuário! então um usuário de perfil tal ou que pertence a tal grupo vai sempre ter um quantidade de dias para sua senha expirar, isso ao meu ver pouparia espaço e trabalho de salvar sempre uma data de expiração quando for cadastrar um usuário.


0
Olá Márcio.
O Spring Security cria um domínio com os dados da conta do usuário.
Insira um campo para data de expiração, que pode receber um valor padronizado (6 meses, por exemplo) ao criar a conta e utilize o controller do campo para verificar se a data está ou não expirada quando o usuário efetuar o login.

Veja também na documentação do plugin (link abaixo) se alguma das opções podem lhe auxiliar:
Account Locking and Forcing Password Change
01/06/2012 02:00


0
Olá ari! Então eu ja declarei no Domain User um Date que seta a data para expirar, mas nao tenho ideia de como implementar essa funcionalidade, penso que entao que isso deveria ser um listener não? Você nao teria um exemplo de como isso poderia ser feito?
01/06/2012 13:48


0
implemente uma função que pegue a data atual e compare com a data de expiração da conta quando ele loga antes de entrar no sistema analisa se já esta expirado ou não.
01/06/2012 17:58


0
Olá Márcio.
É isso mesmo que o Manthay falou.
No controller de login do Spring Security você deve encontrar o método que faz a autenticação do usuário. Implemente a função para verificar a data expirada neste método:
if ( dataexpiracao > dataatual ) {
flash.message = "Data expirada"
return
}
02/06/2012 13:10


0
ainda nao consegui implementar. Fiz um listener que me ajuda a recuperar o usuario após ele conseguir logar-se (Segue código)
class ContaExpiradaListener implements ApplicationListener<InteractiveAuthenticationSuccessEvent> {

@Override
public void onApplicationEvent(InteractiveAuthenticationSuccessEvent event) {

def auth = event.authentication.getPrincipal()
User user = User.findByUsername(auth.username)

if(user)
{
user.setAccountExpired(true)
}

println "${user.accountExpired}"
}

}


e o injetei nos beans do spring(resources.groovy). Mesmo assim, o grails continua deixando ele logar e acusa o accountExpired como false, mesmo eu o setando para true
02/06/2012 18:36


0
aqui o erro ocorre justamente pq eu nao consigo salvar essa informação pro banco de dados :(
04/06/2012 12:57


0
fiz uma solução (não tão elegante :s ) para resolver por enquanto. Alterei a default target do spring para um metodo que compara as datas somente. Caso sejam iguais, set o account expired para true, senao redireciono para a pagina padrao do spring. Ficou algo mais ou menos assim :

def verificarContaExpirada = {

def user = User.findByUsername(springSecurityService.principal.username)
def dataAtual = new Date(System.currentTimeMillis()).toString()

if(dataAtual.equals(user.dataDeExpiracao.toString()))
user.setAccountExpired(true)
else
redirect action:search

}

meio gambiarra, mas acredito que soluções melhores devam existir
04/06/2012 14:05



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto