-module(euphorik_protocole).
-export([
- register/1,
+ register/2,
login/1,
logout/1,
profile/1,
% Une utilisateur s'enregistre avec un tuple {Login, Password}.
-register([{login, Login}, {password, Password}]) ->
- case euphorik_minichat:user_by_login(Login) of
- {ok, _} ->
- erreur("Login déjà existant");
- _ ->
- User = euphorik_minichat:nouveau_user(Login, Password, generer_cookie()),
- json_reponse_login_ok(User)
+register([{login, Login}, {password, Password}], IP) ->
+ Can_register = euphorik_minichat:can_register(IP),
+ if Can_register ->
+ case euphorik_minichat:user_by_login(Login) of
+ {ok, _} ->
+ erreur("Login déjà existant");
+ _ ->
+ User = euphorik_minichat:nouveau_user(Login, Password, generer_cookie()),
+ json_reponse_login_ok(User)
+ end;
+ true ->
+ erreur_register_flood()
end;
% Enregistrement sans {Login, Password}
-register([]) ->
- User = euphorik_minichat:nouveau_user("<nick>", generer_cookie()),
- json_reponse_login_ok(User).
+register([], IP) ->
+ Can_register = euphorik_minichat:can_register(IP),
+ if Can_register ->
+ User = euphorik_minichat:nouveau_user("<nick>", generer_cookie()),
+ json_reponse_login_ok(User);
+ true ->
+ erreur_register_flood()
+ end.
+
+erreur_register_flood() ->
+ erreur("Trop de register (flood)").
+
\r
% Un utilisateur se logge (avec un couple {login, mot de passe})