annotate mod_default_vcard/mod_default_vcard.lua @ 4210:a0937b5cfdcb

mod_invites_page: Remove preauth URI button This button is incompatible with the majority of XMPP clients around, yet based on feedback from users, many are drawn to click it when they have any XMPP client installed already. In the case where the user already has software installed, we would prefer them to select it from the software list so they can follow the setup process suited to their specific client (we already track which software supports preauth URIs). If their client is not listed, they can still use the manual registration link instead.
author Matthew Wild <mwild1@gmail.com>
date Fri, 16 Oct 2020 11:03:38 +0100
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);