annotate mod_adhoc_groups/mod_adhoc_groups.lua @ 3503:882180b459a0

mod_pubsub_post: Restructure authentication and authorization (BC) This deprecates the default "superuser" actor model and makes the default equivalent to the previous "request.id". A single actor and secret per node is supported because HTTP and WebHooks don't normally include any authorization identity. Allowing authentication bypass when no secret is given should be relatively safe when the actor is unprivileged, as will be unless explicitly configured otherwise.
author Kim Alvefur <zash@zash.se>
date Sat, 30 Mar 2019 21:16:13 +0100
parents d8325dfb6a13
children 0d7293c37e1a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1545
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local rostermanager = require"core.rostermanager";
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 local jid_join = require"util.jid".join;
2848
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
3 local jid_split = require"util.jid".split;
1545
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 local host = module.host;
2848
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
5 local st = require "util.stanza";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
6
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
7 local groups = module:open_store("groups");
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
8 local memberships = module:open_store("groups", "map");
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
9
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
10 module:depends("adhoc");
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
11
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
12 local adhoclib = module:require "adhoc";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
13 local dataform = require"util.dataforms";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
14 local adhoc_inital_data = require "util.adhoc".new_initial_data_form;
1545
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 -- Make a *one-way* subscription. User will see when contact is online,
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 -- contact will not see when user is online.
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 local function subscribe(user, contact)
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 local user_jid, contact_jid = jid_join(user, host), jid_join(contact, host);
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21 -- Update user's roster to say subscription request is pending...
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 rostermanager.set_contact_pending_out(user, host, contact_jid);
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 -- Update contact's roster to say subscription request is pending...
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 rostermanager.set_contact_pending_in(contact, host, user_jid);
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25 -- Update contact's roster to say subscription request approved...
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 rostermanager.subscribed(contact, host, user_jid);
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 -- Update user's roster to say subscription request approved...
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 rostermanager.process_inbound_subscription_approval(user, host, contact_jid);
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29
1798
3ae8c81a348b mod_roster_allinall: Cleanup, remove unused variables [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1545
diff changeset
30 -- Push updates to both rosters
1545
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 rostermanager.roster_push(user, host, contact_jid);
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 rostermanager.roster_push(contact, host, user_jid);
2848
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
33
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
34 module:send(st.presence({ type = "probe", from = user_jid, to = contact_jid }));
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
35 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
36
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
37 local create_form = dataform.new {
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
38 title = "Create a new group";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
39 {
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
40 type = "hidden";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
41 name = "FORM_TYPE";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
42 value = "xmpp:zash.se/adhoc_groups#new";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
43 };
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
44 {
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
45 type = "text-single";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
46 name = "group";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
47 label = "Name of group";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
48 required = true;
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
49 };
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
50 };
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
51
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
52 local join_form = dataform.new {
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
53 title = "Pick the group to join";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
54 {
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
55 type = "hidden";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
56 name = "FORM_TYPE";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
57 value = "xmpp:zash.se/adhoc_groups#join";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
58 };
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
59 {
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
60 type = "list-single";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
61 name = "group";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
62 label = "Available groups";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
63 required = true;
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
64 };
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
65 };
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
66
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
67 local function _(f)
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
68 return function (fields, form_err, data)
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
69 local ok, message = f(fields, form_err, data);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
70 if ok then
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
71 return { status = "completed", info = message };
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
72 else
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
73 return { status = "completed", error = { message = message} };
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
74 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
75 end
1545
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
76 end
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
77
2848
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
78 module:add_item("adhoc",
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
79 adhoclib.new("Create group",
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
80 "xmpp:zash.se/adhoc_groups#new",
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
81 adhoc_inital_data(create_form,
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
82 function ()
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
83 return {};
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
84 end,
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
85 _(function (fields, form_err, data)
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
86 local user = jid_split(data.from);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
87 if form_err then
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
88 return false, "Problem in submitted form";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
89 end
1545
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
90
2848
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
91 local group, err = groups:get(fields.group);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
92 if group then
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
93 if err then
2870
d8325dfb6a13 mod_adhoc_groups: Fix typos [codespell]
Kim Alvefur <zash@zash.se>
parents: 2848
diff changeset
94 return false, "An error occurred on the server. Please try again later.";
2848
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
95 else
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
96 return false, "That group already exists";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
97 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
98 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
99
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
100 if not groups:set(fields.group, { [user] = true }) then
2870
d8325dfb6a13 mod_adhoc_groups: Fix typos [codespell]
Kim Alvefur <zash@zash.se>
parents: 2848
diff changeset
101 return false, "An error occurred while creating the group";
2848
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
102 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
103
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
104 return true, ("The %s group has been created"):format(fields.group);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
105 end)), "local_user")); -- Maybe admins only?
1545
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
106
2848
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
107 module:add_item("adhoc",
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
108 adhoclib.new("Join group",
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
109 "xmpp:zash.se/adhoc_groups#join",
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
110 adhoc_inital_data(join_form,
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
111 function ()
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
112 local group_list = {};
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
113 for group in groups:users() do
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
114 table.insert(group_list, group);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
115 module:log("debug", "Group: %q", group);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
116 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
117 table.sort(group_list);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
118 return { group = group_list };
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
119 end,
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
120 _(function (fields, form_err, data)
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
121 local user = jid_split(data.from);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
122 if form_err then
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
123 return false, "Problem in submitted form";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
124 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
125
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
126 local group, err = groups:get(fields.group);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
127 if not group then
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
128 if err then
2870
d8325dfb6a13 mod_adhoc_groups: Fix typos [codespell]
Kim Alvefur <zash@zash.se>
parents: 2848
diff changeset
129 return false, "An error occurred on the server. Please try again later.";
2848
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
130 else
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
131 return false, "No such group";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
132 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
133 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
134 if group[data.from] then
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
135 return false, "You are already in this group.";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
136 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
137
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
138 if not memberships:set(fields.group, user, true) then
2870
d8325dfb6a13 mod_adhoc_groups: Fix typos [codespell]
Kim Alvefur <zash@zash.se>
parents: 2848
diff changeset
139 return false, "An error occurred while adding you to the group";
2848
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
140 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
141
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
142 for member in pairs(group) do
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
143 if member ~= user then
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
144 subscribe(user, member);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
145 subscribe(member, user);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
146 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
147 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
148
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
149 return true, ("Welcome to the %s group"):format(fields.group);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
150 end)), "local_user"));