+% slapage d'un user (avertissement)
+slap(
+ [
+ {cookie, Cookie},
+ {user_id, User_id},
+ {reason, Reason}
+ ]) ->
+ % controle que l'utilisateur est un admin
+ case euphorik_bd:user_by_cookie(Cookie) of
+ {ok, User1 = #user{ek_master = true}} ->
+ case euphorik_bd:user_by_id(User_id) of
+ {ok, User1} ->
+ euphorik_bd:nouveau_message_sys(lists:flatten(io_lib:format("~s s'auto slap~s.",
+ [
+ User1#user.pseudo,
+ if Reason =/= [] -> " - Raison: " ++ Reason; true -> "" end
+ ]
+ ))),
+ json_reponse_ok();
+ {ok, User2 = #user{ek_master = false}} ->
+ euphorik_bd:nouveau_message_sys(lists:flatten(io_lib:format("~s se fait slaper par ~s.~s",
+ [
+ User2#user.pseudo,
+ User1#user.pseudo,
+ if Reason =/= [] -> " - Raison: " ++ Reason; true -> "" end ++ "."
+ ]
+ ))),
+ json_reponse_ok();
+ {ok, _} ->
+ erreur("L'utilisateur est lui même un ekMaster");
+ _ ->
+ erreur("Utilisateur à slaper inconnu")
+ end;
+ _ ->
+ erreur("Utilisateur inconnu ou non ek master")
+ end.
+
+
+put_troll(
+ [
+ {cookie, Cookie},
+ {content, Content}
+ ]
+) ->
+ % controle que l'utilisateur est un admin
+ case euphorik_bd:user_by_cookie(Cookie) of
+ {ok, User = #user{ek_master = true}} ->
+ case euphorik_bd:put_troll(User#user.id, Content) of
+ max_troll_reached_per_user ->
+ erreur(lists:flatten(io_lib:format("Le nombre de troll maximum par utilisateur est atteint : ~w ", [?NB_MAX_TROLL_WAITING_BY_USER])));
+ max_troll_reached ->
+ erreur(lists:flatten(io_lib:format("Le nombre de troll maximum en attente est atteint : ~w ", [?NB_MAX_TROLL_WAITING])));
+ _Id ->
+ json_reponse_ok()
+ end;
+ _ ->
+ erreur("Seul les ekMaster peuvent proposer des trolls")
+ end.
+
+
+mod_troll(
+ [
+ {cookie, Cookie},
+ {troll_id, Troll_id},
+ {content, Content}
+ ]
+) ->
+ % controle que l'utilisateur est un admin
+ case euphorik_bd:user_by_cookie(Cookie) of
+ {ok, User = #user{ek_master = true}} ->
+ User_id = User#user.id,
+ case euphorik_bd:troll_by_id(Troll_id) of
+ {ok, #troll{id_user = User_id}} ->
+ euphorik_bd:mod_troll(Troll_id, Content),
+ json_reponse_ok();
+ _ ->
+ erreur("Vous ne posséder pas ce troll")
+ end;
+ _ ->
+ erreur("Seul les ekMaster peuvent proposer des trolls")
+ end.
+
+
+del_troll(
+ [
+ {cookie, Cookie},
+ {troll_id, Troll_id}
+ ]
+) ->
+ % controle que l'utilisateur est un admin
+ case euphorik_bd:user_by_cookie(Cookie) of
+ {ok, User = #user{ek_master = true}} ->
+ User_id = User#user.id,
+ case euphorik_bd:troll_by_id(Troll_id) of
+ {ok, #troll{id_user = User_id}} ->
+ euphorik_bd:del_troll(Troll_id),
+ json_reponse_ok();
+ _ ->
+ erreur("Vous ne posséder pas ce troll")
+ end;
+ _ ->
+ erreur("Seul les ekMaster peuvent proposer des trolls")
+ end.
+
+
+unban_ip(
+ [
+ {cookie, Cookie},
+ {ip, IP}
+ ]
+) ->
+ case euphorik_bd:user_by_cookie(Cookie) of
+ {ok, #user{ek_master = true}} ->
+ euphorik_bd:deban(unserialize_ip(IP)),
+ json_reponse_ok();
+ _ ->
+ erreur("Seul les ekMaster peuvent connaitre la liste des ips bannies")
+ end.
+
+
+list_banned_ips(
+ [
+ {cookie, Cookie}
+ ]
+) ->
+ case euphorik_bd:user_by_cookie(Cookie) of
+ {ok, #user{ek_master = true}} ->
+ {
+ struct,
+ [
+ {reply, "list_banned_ips"},
+ {list, {array, lists:map(
+ fun({IP, T, Users}) ->
+ {struct,
+ [
+ {ip, serialize_ip(IP)},
+ {remaining_time, format_minutes(T)},
+ {users, {array, lists:map(
+ fun({Pseudo, Login}) ->
+ {struct,
+ [
+ {nick, Pseudo},
+ {login, Login}
+ ]
+ }
+ end,
+ Users
+ )}}
+ ]
+ }
+ end,
+ euphorik_bd:list_ban()
+ )}}
+ ]
+ };
+ _ ->
+ erreur("Seul les ekMaster peuvent connaitre la liste des ips bannies")
+ end.
+
+