Bonjour,
j’ai apprécié la demo Ajax de Sébastien ,
http://demo-por2006.xilinus.com/ajax, et je l’ai utilisée pour dynamiser
ma fenêtre de Login.
Mias je n’ai pas réussi à conserver les comportements que j’avais
définis auparavant :
en cas d’authentification réussie, retourner à l’url de l’appel . Je le
faisais avec une méthode retour_origine_appel_ou_defaut, définie dans
application.rb mais là , je ne sais pas comment l’intégrer dans le code.
Ma vue connexion est structurée comme celle index de la demo, et mon
contrôleur de connexion comme suit (la méthode connecter correspond Ã
celle create de la demo). J’ai déjà vérifié la validité du login.
def connecter
render :nothing => true, :status => ‘204 No Content’ and return
unless request.xhr? and request.post?
@candidat=
Utilisateur.find_by_identifiant(params[:utilisateur][:identifiant])
render :update do |page|
if Utilisateur.authentifier(params[:utilisateur][:identifiant],
params[:utilisateur][:mot_passe])
@candidat.err_connexion = 0
@candidat.save
session[:utilisateur] = @candidat
page.replace_html “connexion”, :partial => ‘accueil’
#content_tag(“span”, “Authentification réussie”, :class => “succes”)
/ _#retour_origine_appel_ou_defaut dans ce cas je veux
retourner à la page d’appel ou aller à l’accueil _/
else
@candidat.err_connexion += 1
page.replace_html "connexion", content_tag("span", "Le mot de
passe saisi ne correspond pas à celui enregistré \n Vous ne disposez
plus que de #{[email protected]_connexion} tentatives de connexion !",
:class => “erreur”)
…
if @candidat.err_connexion == 3
Notification::deliver_mail_compte_bloque(@candidat,
@request.remote_ip)
@candidat.actif = 0
@candidat.adresse_ip = @request.remote_ip
page.replace_html “connexion”, content_tag(“span”, “Votre
compte est bloqué, veuillez contacter votre administrateur”, :class =>
“erreur”)
/# rediriger vers une page dédiée compte_bloque/
end
@candidat.save
end
page.show "connexion"
page.visual_effect :highlight, :connexion
page.visual_effect :fade, "connexion", :delay => 3
page[:connexion_form].reset();
end
end
Je ne sais pas comment effectuer les redirections dans les cas cités .
:-((
D’avance merci de vos conseils.
Nicolas Fesneau