summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMickaël Rémond <mickael.remond@process-one.net>2006-06-13 16:52:38 +0000
committerMickaël Rémond <mickael.remond@process-one.net>2006-06-13 16:52:38 +0000
commitbd276f0b07653bda09c4d88e0230dc5baf6dd8d2 (patch)
tree77deed45e88a4a08010798ef157541a173f3ae2f /src
parent* src/mod_pubsub/mod_pubsub.erl: Discovery query on an item does (diff)
* src/ejabberd_auth.erl: Fixed broken multiple connection with
anonymous login problem (EJAB-107). * src/ejabberd_auth_anonymous.erl: Likewise. SVN Revision: 579
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_auth.erl9
-rw-r--r--src/ejabberd_auth_anonymous.erl3
2 files changed, 11 insertions, 1 deletions
diff --git a/src/ejabberd_auth.erl b/src/ejabberd_auth.erl
index f2c3f4b5..e3839c49 100644
--- a/src/ejabberd_auth.erl
+++ b/src/ejabberd_auth.erl
@@ -25,6 +25,7 @@
get_password/2,
get_password_s/2,
is_user_exists/2,
+ is_user_exists_in_other_modules/3,
remove_user/2,
remove_user/3,
plain_password_required/1,
@@ -130,6 +131,14 @@ is_user_exists(User, Server) ->
M:is_user_exists(User, Server)
end, auth_modules(Server)).
+%% Check if the user exists in all authentications module except the module
+%% passed as parameter
+is_user_exists_in_other_modules(Module, User, Server) ->
+ lists:any(
+ fun(M) ->
+ M:is_user_exists(User, Server)
+ end, auth_modules(Server)--[Module]).
+
remove_user(User, Server) ->
lists:foreach(
fun(M) ->
diff --git a/src/ejabberd_auth_anonymous.erl b/src/ejabberd_auth_anonymous.erl
index e63c6648..5090a353 100644
--- a/src/ejabberd_auth_anonymous.erl
+++ b/src/ejabberd_auth_anonymous.erl
@@ -149,7 +149,8 @@ check_password(User, Server, Password) ->
check_password(User, Server, _Password, _StreamID, _Digest) ->
%% We refuse login for registered accounts (They cannot logged but
%% they however are "reserved")
- case ejabberd_auth:is_user_exists(User, Server) of
+ case ejabberd_auth:is_user_exists_in_other_modules(?MODULE,
+ User, Server) of
true -> false;
false -> login(User, Server)
end.