Annotate

plugins/muc/language.lib.lua @ 12729:73a45ba6e3f1

muc: Re-allow non-admins to configure persistence (thanks Meaz) Non-admins don't have a role on MUC services by default. Not even prosody:user. This meant they had no :create-persistent-room permission, even if muc_room_allow_persistent was true (the default). Now we only check the role permissions if persistent room creation is restricted, otherwise we skip any permission checks, just like previous versions.
author Matthew Wild <mwild1@gmail.com>
date Wed, 28 Sep 2022 17:47:00 +0100
parent 10063:13ccc2f05007
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6204
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
1 -- Prosody IM
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
2 -- Copyright (C) 2008-2010 Matthew Wild
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
3 -- Copyright (C) 2008-2010 Waqas Hussain
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
4 -- Copyright (C) 2014 Daurnimator
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
5 --
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
6 -- This project is MIT/X11 licensed. Please see the
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
7 -- COPYING file in the source package for more information.
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
8 --
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
9
8833
9c90cd2fc4c3 MUC: Add support for setting a room language (closes #1149)
Kim Alvefur <zash@zash.se>
parents: 8831
diff changeset
10 local function get_language(room)
9c90cd2fc4c3 MUC: Add support for setting a room language (closes #1149)
Kim Alvefur <zash@zash.se>
parents: 8831
diff changeset
11 return room._data.language;
6204
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
12 end
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
13
8833
9c90cd2fc4c3 MUC: Add support for setting a room language (closes #1149)
Kim Alvefur <zash@zash.se>
parents: 8831
diff changeset
14 local function set_language(room, language)
9c90cd2fc4c3 MUC: Add support for setting a room language (closes #1149)
Kim Alvefur <zash@zash.se>
parents: 8831
diff changeset
15 if language == "" then language = nil; end
9c90cd2fc4c3 MUC: Add support for setting a room language (closes #1149)
Kim Alvefur <zash@zash.se>
parents: 8831
diff changeset
16 if get_language(room) == language then return false; end
9c90cd2fc4c3 MUC: Add support for setting a room language (closes #1149)
Kim Alvefur <zash@zash.se>
parents: 8831
diff changeset
17 room._data.language = language;
6204
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
18 return true;
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
19 end
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
20
8829
6dd7fea941f6 MUC: Use correct field name for description in disco#info (fixes #1148)
Kim Alvefur <zash@zash.se>
parents: 7401
diff changeset
21 local function add_disco_form(event)
6dd7fea941f6 MUC: Use correct field name for description in disco#info (fixes #1148)
Kim Alvefur <zash@zash.se>
parents: 7401
diff changeset
22 table.insert(event.form, {
8833
9c90cd2fc4c3 MUC: Add support for setting a room language (closes #1149)
Kim Alvefur <zash@zash.se>
parents: 8831
diff changeset
23 name = "muc#roominfo_lang";
8830
5d7db3c7c026 MUC: Pass description via formdata field where it should be
Kim Alvefur <zash@zash.se>
parents: 8829
diff changeset
24 value = "";
8829
6dd7fea941f6 MUC: Use correct field name for description in disco#info (fixes #1148)
Kim Alvefur <zash@zash.se>
parents: 7401
diff changeset
25 });
8833
9c90cd2fc4c3 MUC: Add support for setting a room language (closes #1149)
Kim Alvefur <zash@zash.se>
parents: 8831
diff changeset
26 event.formdata["muc#roominfo_lang"] = get_language(event.room);
8829
6dd7fea941f6 MUC: Use correct field name for description in disco#info (fixes #1148)
Kim Alvefur <zash@zash.se>
parents: 7401
diff changeset
27 end
6dd7fea941f6 MUC: Use correct field name for description in disco#info (fixes #1148)
Kim Alvefur <zash@zash.se>
parents: 7401
diff changeset
28
6204
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
29 local function add_form_option(event)
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
30 table.insert(event.form, {
8833
9c90cd2fc4c3 MUC: Add support for setting a room language (closes #1149)
Kim Alvefur <zash@zash.se>
parents: 8831
diff changeset
31 name = "muc#roomconfig_lang";
9034
1c709e3d2e5e MUC: Improve labels of all config form items
Matthew Wild <mwild1@gmail.com>
parents: 8833
diff changeset
32 label = "Language tag for room (e.g. 'en', 'de', 'fr' etc.)";
6204
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
33 type = "text-single";
9034
1c709e3d2e5e MUC: Improve labels of all config form items
Matthew Wild <mwild1@gmail.com>
parents: 8833
diff changeset
34 desc = "Indicate the primary language spoken in this room";
10063
13ccc2f05007 MUC: Advertise language field as such via XEP-0122
Kim Alvefur <zash@zash.se>
parents: 9035
diff changeset
35 datatype = "xs:language";
8833
9c90cd2fc4c3 MUC: Add support for setting a room language (closes #1149)
Kim Alvefur <zash@zash.se>
parents: 8831
diff changeset
36 value = get_language(event.room) or "";
6204
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
37 });
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
38 end
8831
f25fa63750fb MUC: Some spacing to improve readability
Kim Alvefur <zash@zash.se>
parents: 8830
diff changeset
39
8829
6dd7fea941f6 MUC: Use correct field name for description in disco#info (fixes #1148)
Kim Alvefur <zash@zash.se>
parents: 7401
diff changeset
40 module:hook("muc-disco#info", add_disco_form);
9035
173c0e16e704 MUC: Add sections in room config form
Matthew Wild <mwild1@gmail.com>
parents: 9034
diff changeset
41 module:hook("muc-config-form", add_form_option, 100-3);
6204
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
42
8833
9c90cd2fc4c3 MUC: Add support for setting a room language (closes #1149)
Kim Alvefur <zash@zash.se>
parents: 8831
diff changeset
43 module:hook("muc-config-submitted/muc#roomconfig_lang", function(event)
9c90cd2fc4c3 MUC: Add support for setting a room language (closes #1149)
Kim Alvefur <zash@zash.se>
parents: 8831
diff changeset
44 if set_language(event.room, event.value) then
6204
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
45 event.status_codes["104"] = true;
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
46 end
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
47 end);
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
48
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
49 return {
8833
9c90cd2fc4c3 MUC: Add support for setting a room language (closes #1149)
Kim Alvefur <zash@zash.se>
parents: 8831
diff changeset
50 get = get_language;
9c90cd2fc4c3 MUC: Add support for setting a room language (closes #1149)
Kim Alvefur <zash@zash.se>
parents: 8831
diff changeset
51 set = set_language;
6204
c3254827698d plugins/muc/muc.lib: Move description functions out to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
52 };