MOD évite de faire plein de "register" à la suite et ainsi de saturer la bd de plein...
[euphorik.git] / modules / erl / euphorik_protocole.erl
index 7519ba8..59f8def 100755 (executable)
@@ -5,7 +5,7 @@
 
 -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})