Citation :tu ignores vraiment ce qui se passe ou c'est pour faire genre ? Parce que c'est quand même important d'avoir conscience de ce qui se passenon je ne suis pas encore rentré dans le code du framework pour voir comment c'est géré [edit: je compte bien le faire]
Citation :Et qu'est-ce qu'il y a dans l'action de traitement du formulaire de connexion ?
Dans la création du formulaire, on demande la validation (qui se fera via "ajax") du champ email. idem pour le user ou le password.
Code :
wf:wire(submit_login, user_email, #validate { validators=[
#is_required { text="Requis" },
#is_email { text="Email non valide" }
]}),
Citation :Et comment récupères-tu ton objet User (ou ton hash) dans ta base de données (ou autre source de données) depuis cet identifiant ?
un bout de code qui vérifie dans la base l'existence d'un tel login
Code :
login(Email, Password) ->
PasswordAsMd5 = erlang:md5(Password),
case db_utils:do (qlc:q ([X#users.username || X <- mnesia:table(users),
X#users.email == Email,
X#users.password == PasswordAsMd5]))
of
{error, _} -> bad_login ;
[User|[]] ->
{ok, User}
end.
Pour désobscurcir :
case wf:user() of
undefined -> wf:redirect_to_login(Url);
_ -> %% ok on appelle le contrôleur
end,
...
il n'y a pas d'objets en Erlang, mais les fonctions sont groupées par modules, les appels de fonctions sont de la forme module:fonction(arg1, arg2, ...)
switch(wf::user()) {
case undefined : return wf::redirect_to_login($mon_url);
default: // appel du controleur
undefined est un atom, comme les trucs en ruby qui s'appellent, je crois, les symbols. ( :undifned )