annotate mod_default_vcard/mod_default_vcard.lua @ 5519:83ebfc367169

mod_http_oauth2: Return Authentication Time per OpenID Core Section 2 Mandatory To Implement, either MUST include or OPTIONAL depending on things we don't look at, so might as well include it all the time. Since we do not persist authentication state with cookies or such, the authentication time will always be some point between the user being sent to the authorization endpoint and the time they are sent back to the client application.
author Kim Alvefur <zash@zash.se>
date Mon, 05 Jun 2023 22:32:44 +0200
parents 7236cdec3ea1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
455
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local datamanager = require "util.datamanager";
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 local st = require "util.stanza";
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 local host = module.host;
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 module:hook("user-registered", function(event)
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 local username = event.username;
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 local data = datamanager.load(username, host, "account_details");
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 local vcard = datamanager.load(username, host, "vcard");
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 --module:log("debug", "Has account details: %s", data and "yes" or "no");
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 --module:log("debug", "Has vCard: %s", vcard and "yes" or "no");
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 if data and not vcard then
936
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
12 local name, first, last = data.name, data.first, data.last;
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
13 if not name and (first and last) then
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
14 name = first .. " " .. last;
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
15 elseif name and not (first and last) then
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
16 first, last = name:match("^(%w+)%s+(%w+)$")
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
17 end
455
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 local vcard = st.stanza("vCard", { xmlns = "vcard-temp" })
936
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
19 :tag("VERSION"):text("3.0"):up();
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
20 if first or last then
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
21 vcard:tag("N")
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
22 :tag("FAMILY"):text(last or ""):up()
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
23 :tag("GIVEN"):text(first or ""):up()
455
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 :up()
936
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
25 end
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
26 if name then
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
27 vcard:tag("FN"):text(name or ""):up()
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
28 end
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
29 vcard:tag("NICKNAME"):text(data.nick or username):up();
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
30 if data.email then
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
31 vcard:tag("EMAIL"):tag("USERID"):text(data.email):up():up();
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
32 end
455
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 local ok, err = datamanager.store(username, host, "vcard", st.preserialize(vcard));
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 if not ok then
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 module:log("error", "Couldn't save vCard data, %s", err);
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
36 end
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37 end
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
38 end);