Annotate

mod_adhoc_groups/mod_adhoc_groups.lua @ 5821:fdf3056021dc

mod_http_oauth2: Tweak fallback error text Since the oauth error is more like the error condition, a symbolic error code, not the most human-friendly. Many error cases do have human-readable error descriptions that should be fine on their own, or changed to be. As a fallback, capitalize the error name.
author Kim Alvefur <zash@zash.se>
date Sat, 23 Dec 2023 00:01:30 +0100
parent 4031:b2a6e163a6b4
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
4031
b2a6e163a6b4 mod_adhoc_groups: Fix check for error on group creation
Kim Alvefur <zash@zash.se>
parents: 4030
diff changeset
93 return false, "That group already exists";
b2a6e163a6b4 mod_adhoc_groups: Fix check for error on group creation
Kim Alvefur <zash@zash.se>
parents: 4030
diff changeset
94 elseif err then
b2a6e163a6b4 mod_adhoc_groups: Fix check for error on group creation
Kim Alvefur <zash@zash.se>
parents: 4030
diff changeset
95 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
96 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
97
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
98 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
99 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
100 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
101
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
102 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
103 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
104
2848
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
105 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
106 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
107 "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
108 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
109 function ()
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
110 local group_list = {};
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
111 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
112 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
113 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
114 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
115 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
116 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
117 end,
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
118 _(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
119 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
120 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
121 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
122 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
123
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
124 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
125 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
126 if err then
2870
d8325dfb6a13 mod_adhoc_groups: Fix typos [codespell]
Kim Alvefur <zash@zash.se>
parents: 2848
diff changeset
127 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
128 else
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
129 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
130 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
131 end
4030
0d7293c37e1a mod_adhoc_groups: Fix responding with "You are already in this group." (was never sent before)
Karol Topolski <ktopolski.it@gmail.com>
parents: 2870
diff changeset
132 if group[user] then
2848
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
133 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
134 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
135
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
136 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
137 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
138 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
139
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
140 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
141 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
142 subscribe(user, member);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
143 subscribe(member, user);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
144 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
145 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
146
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
147 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
148 end)), "local_user"));