comparison mod_atom/mod_atom.lua @ 3424:6ae875c98daf

mod_atom: Check whether user exists This is in order to prevent creation of PEP service objects for non-existant users.
author Kim Alvefur <zash@zash.se>
date Thu, 03 Jan 2019 11:39:28 +0100
parents 4a8fa0364f35
children 61368aec97d6
comparison
equal deleted inserted replaced
3423:4a8fa0364f35 3424:6ae875c98daf
1 -- HTTP Access to PEP -> microblog 1 -- HTTP Access to PEP -> microblog
2 -- By Kim Alvefur <zash@zash.se> 2 -- By Kim Alvefur <zash@zash.se>
3 3
4 local mod_pep = module:depends"pep"; 4 local mod_pep = module:depends"pep";
5 5
6 local um = require "core.usermanager";
6 local nodeprep = require "util.encodings".stringprep.nodeprep; 7 local nodeprep = require "util.encodings".stringprep.nodeprep;
7 local st = require "util.stanza"; 8 local st = require "util.stanza";
8 9
9 module:depends("http") 10 module:depends("http")
10 module:provides("http", { 11 module:provides("http", {
13 local request, response = event.request, event.response; 14 local request, response = event.request, event.response;
14 local actor = request.ip; 15 local actor = request.ip;
15 16
16 user = nodeprep(user); 17 user = nodeprep(user);
17 if not user then return 400; end 18 if not user then return 400; end
19 if not um.user_exists(user, module.host) then
20 return 404;
21 end
18 22
19 local pubsub_service = mod_pep.get_pep_service(user); 23 local pubsub_service = mod_pep.get_pep_service(user);
20 local ok, items = pubsub_service:get_items("urn:xmpp:microblog:0", actor); 24 local ok, items = pubsub_service:get_items("urn:xmpp:microblog:0", actor);
21 if ok then 25 if ok then
22 response.headers.content_type = "application/xml"; 26 response.headers.content_type = "application/xml";