From 665853d99933d25ff67a65ef44e9604606ffb752 Mon Sep 17 00:00:00 2001 From: Florian Zeitz Date: Fri, 2 Dec 2011 19:24:54 +0100 Subject: util.dataforms: Fix form verification --- util/dataforms.lua | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'util/dataforms.lua') diff --git a/util/dataforms.lua b/util/dataforms.lua index e4d24cf6..b69df819 100644 --- a/util/dataforms.lua +++ b/util/dataforms.lua @@ -120,12 +120,18 @@ function form_t.data(layout, stanza) end end - local reader = field_readers[field.type]; - local verifier = field.verifier or field_verifiers[field.type]; - if reader then - data[field.name] = reader(tag); - if verifier then - errors[field.name] = verifier(data[field.name], tag, field.required); + if not tag then + if field.required then + errors[field.name] = "Required value missing"; + end + else + local reader = field_readers[field.type]; + local verifier = field.verifier or field_verifiers[field.type]; + if reader then + data[field.name] = reader(tag); + if verifier then + errors[field.name] = verifier(data[field.name], tag, field.required); + end end end end @@ -161,7 +167,7 @@ field_readers["jid-single"] = field_verifiers["jid-single"] = function (data, field_tag, required) - if #data == 0 and required then + if ((not data) or (#data == 0)) and required then return "Required value missing"; end if not jid_prep(data) then -- cgit v1.2.3 From fef2f58cb652bf2a0fd8ed27cf99e5b7bed63f42 Mon Sep 17 00:00:00 2001 From: Florian Zeitz Date: Sat, 3 Dec 2011 17:10:48 +0100 Subject: util.dataforms: Fix verfication for booleans --- util/dataforms.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'util/dataforms.lua') diff --git a/util/dataforms.lua b/util/dataforms.lua index b69df819..d4a1865c 100644 --- a/util/dataforms.lua +++ b/util/dataforms.lua @@ -252,7 +252,7 @@ field_readers["boolean"] = field_verifiers["boolean"] = function (data, field_tag, required) data = field_readers["text-single"](field_tag); - if #data == 0 and required then + if ((not data) or (#data == 0)) and required then return "Required value missing"; end if data ~= "1" and data ~= "true" and data ~= "0" and data ~= "false" then -- cgit v1.2.3