annotate mod_default_vcard/mod_default_vcard.lua @ 5424:b45d9a81b3da

mod_http_oauth2: Revert role selector, going to try something else Back out f2c7bb3af600 Allowing only a single role to be encoded into the grant takes away the possibility of having multiple roles in the grant, one of which is selected when issuing an access token. It also takes away the ability to have zero roles granted, which could be useful e.g. when you only need OIDC scopes.
author Kim Alvefur <zash@zash.se>
date Sun, 07 May 2023 19:40:57 +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);