# HG changeset patch # User Kim Alvefur # Date 1431696741 -7200 # Node ID 353a7d4dfdc268a5fc2a33cda233c10ebf16951a # Parent 6a5c6c95cf78387ea276974fe9e88282dd09df7d mod_storage_xep0227: Store data from mod_auth_internal_hashed in a private namespace diff -r 6a5c6c95cf78 -r 353a7d4dfdc2 plugins/mod_storage_xep0227.lua --- a/plugins/mod_storage_xep0227.lua Fri May 15 15:30:38 2015 +0200 +++ b/plugins/mod_storage_xep0227.lua Fri May 15 15:32:21 2015 +0200 @@ -66,19 +66,36 @@ local handlers = {}; +-- In order to support mod_auth_internal_hashed +local extended = "http://prosody.im/protocol/extended-xep0227\1"; + handlers.accounts = { get = function(self, user) local user = getUserElement(getXml(user, self.host)); if user and user.attr.password then return { password = user.attr.password }; + elseif user then + local data = {}; + for k, v in pairs(user.attr) do + if k:sub(1, #extended) == extended then + data[k:sub(#extended+1)] = v; + end + end + return data; end end; set = function(self, user, data) - if data and data.password then + if data then local xml = getXml(user, self.host); if not xml then xml = createOuterXml(user, self.host); end local usere = getUserElement(xml); - usere.attr.password = data.password; + for k, v in pairs(data) do + if k == "password" then + usere.attr.password = v; + else + usere.attr[extended..k] = v; + end + end return setXml(user, self.host, xml); else return setXml(user, self.host, nil);