aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_auth_mnesia.erl
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2016-05-04 21:01:05 +0300
committerAlexey Shchepin <alexey@process-one.net>2016-05-05 15:51:58 +0300
commit0ea0ba3004282636c95bc86c3aac8755fcf7f8b1 (patch)
tree1330b6db70f7f6100c1997851faece5ad569391f /src/ejabberd_auth_mnesia.erl
parentMerge remote-tracking branch 'processone/pr/1088' (diff)
Update more SQL queries
Diffstat (limited to 'src/ejabberd_auth_mnesia.erl')
-rw-r--r--src/ejabberd_auth_mnesia.erl23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/ejabberd_auth_mnesia.erl b/src/ejabberd_auth_mnesia.erl
index 9029404d6..58e22c79c 100644
--- a/src/ejabberd_auth_mnesia.erl
+++ b/src/ejabberd_auth_mnesia.erl
@@ -25,6 +25,8 @@
-module(ejabberd_auth_mnesia).
+-compile([{parse_transform, ejabberd_sql_pt}]).
+
-behaviour(ejabberd_config).
-author('alexey@process-one.net').
@@ -43,6 +45,7 @@
-include("ejabberd.hrl").
-include("logger.hrl").
+-include("ejabberd_sql_pt.hrl").
-record(passwd, {us = {<<"">>, <<"">>} :: {binary(), binary()} | '$1',
password = <<"">> :: binary() | scram() | '_'}).
@@ -473,12 +476,22 @@ is_password_scram_valid(Password, Scram) ->
export(_Server) ->
[{passwd,
fun(Host, #passwd{us = {LUser, LServer}, password = Password})
+ when LServer == Host,
+ is_binary(Password) ->
+ [?SQL("delete from users where username=%(LUser)s;"),
+ ?SQL("insert into users(username, password) "
+ "values (%(LUser)s, %(Password)s);")];
+ (Host, #passwd{us = {LUser, LServer}, password = #scram{} = Scram})
when LServer == Host ->
- Username = ejabberd_sql:escape(LUser),
- Pass = ejabberd_sql:escape(Password),
- [[<<"delete from users where username='">>, Username, <<"';">>],
- [<<"insert into users(username, password) "
- "values ('">>, Username, <<"', '">>, Pass, <<"');">>]];
+ StoredKey = Scram#scram.storedkey,
+ ServerKey = Scram#scram.serverkey,
+ Salt = Scram#scram.salt,
+ IterationCount = Scram#scram.iterationcount,
+ [?SQL("delete from users where username=%(LUser)s;"),
+ ?SQL("insert into users(username, password, serverkey, salt, "
+ "iterationcount) "
+ "values (%(LUser)s, %(StoredKey)s, %(ServerKey)s,"
+ " %(Salt)s, %(IterationCount)d);")];
(_Host, _R) ->
[]
end}].