Comparison

plugins/mod_tokenauth.lua @ 12772:daa654dbd8de

mod_tokenauth: Allow attaching an arbitrary data table to a token
author Matthew Wild <mwild1@gmail.com>
date Thu, 13 Oct 2022 22:46:19 +0100
parent 12743:19113f232423
child 12913:012fa81d1f5d
comparison
equal deleted inserted replaced
12771:e9fcc69ea508 12772:daa654dbd8de
11 return prosody.hosts[host].authz.get_role_by_name(role); 11 return prosody.hosts[host].authz.get_role_by_name(role);
12 end 12 end
13 return usermanager.get_user_role(username, host); 13 return usermanager.get_user_role(username, host);
14 end 14 end
15 15
16 function create_jid_token(actor_jid, token_jid, token_role, token_ttl) 16 function create_jid_token(actor_jid, token_jid, token_role, token_ttl, token_data)
17 token_jid = jid.prep(token_jid); 17 token_jid = jid.prep(token_jid);
18 if not actor_jid or token_jid ~= actor_jid and not jid.compare(token_jid, actor_jid) then 18 if not actor_jid or token_jid ~= actor_jid and not jid.compare(token_jid, actor_jid) then
19 return nil, "not-authorized"; 19 return nil, "not-authorized";
20 end 20 end
21 21
31 expires = token_ttl and (os.time() + token_ttl) or nil; 31 expires = token_ttl and (os.time() + token_ttl) or nil;
32 jid = token_jid; 32 jid = token_jid;
33 33
34 resource = token_resource; 34 resource = token_resource;
35 role = token_role; 35 role = token_role;
36 data = token_data;
36 }; 37 };
37 38
38 local token_id = id.long(); 39 local token_id = id.long();
39 local token = base64.encode("1;"..jid.join(token_username, token_host)..";"..token_id); 40 local token = base64.encode("1;"..jid.join(token_username, token_host)..";"..token_id);
40 token_store:set(token_username, token_id, token_info); 41 token_store:set(token_username, token_id, token_info);