annotate mod_fallback_vcard/mod_fallback_vcard.lua @ 5715:8488ebde5739

mod_http_oauth2: Skip consent screen if requested by client and same scopes already granted This follows the intent behind the OpenID Connect 'prompt' parameter when it does not include the 'consent' keyword, that is the client wishes to skip the consent screen. If the user has already granted the exact same scopes to the exact same client in the past, then one can assume that they may grant it again.
author Kim Alvefur <zash@zash.se>
date Tue, 14 Nov 2023 23:03:37 +0100
parents ceb594a14a18
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1899
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local datamanager = require "util.datamanager";
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 local usermanager = require "core.usermanager";
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 local st = require "util.stanza";
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 local host = module.host;
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 local jid_split = require "util.jid".split;
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 local orgname = module:get_option_string("default_vcard_orgname");
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 local orgmail = module:get_option_boolean("default_vcard_orgmail");
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 module:hook("iq/bare/vcard-temp:vCard", function(event)
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 local session, stanza = event.origin, event.stanza;
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 local to = stanza.attr.to;
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 local username = jid_split(to);
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 if not username then return end
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 local vcard = datamanager.load(username, host, "vcard");
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 local data = datamanager.load(username, host, "account_details");
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 local exists = usermanager.user_exists(username, host);
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 module:log("debug", "has %s: %s", "vcard", tostring(vcard));
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 module:log("debug", "has %s: %s", "data", tostring(data));
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21 module:log("debug", "has %s: %s", "exists", tostring(exists));
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 data = data or {};
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 if not(vcard) and data and exists then
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25 -- MAYBE
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 -- first .. " " .. last
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 -- first, last = name:match("^(%w+) (%w+)$")
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 local vcard = st.reply(stanza):tag("vCard", { xmlns = "vcard-temp" })
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 :tag("VERSION"):text("3.0"):up()
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 :tag("N")
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 :tag("FAMILY"):text(data.last or ""):up()
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 :tag("GIVEN"):text(data.first or ""):up()
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 :up()
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 :tag("FN"):text(data.name or ""):up()
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 :tag("NICKNAME"):text(data.nick or username):up()
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
36 :tag("JABBERID"):text(username.."@"..host):up();
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37 if orgmail then
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
38 vcard:tag("EMAIL"):tag("USERID"):text(username.."@"..host):up():up();
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
39 elseif data.email then
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
40 vcard:tag("EMAIL"):tag("USERID"):text(data.email):up():up();
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
41 end
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
42 if orgname then
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
43 vcard:tag("ORG"):tag("ORGNAME"):text(orgname):up():up();
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
44 end
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
45 session.send(vcard);
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
46 return true;
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
47 end
ceb594a14a18 mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff changeset
48 end, 1);