File

mod_muc_members_json/README.md @ 6199:fe8222112cf4

mod_conversejs: Serve base app at / This makes things slightly less awkward for the browser to figure out which URLs belong to a PWA. The app's "start URL" was previously without the '/' and therefore was not considered within the scope of the PWA. Now the canonical app URL will always have a '/'. Prosody/mod_http should take care of redirecting existing links without the trailing / to the new URL. If you have an installation at https://prosody/conversejs then it is now at https://prosody/conversejs/ (the first URL will now redirect to the second URL if you use it). The alternative would be to make the PWA scope include the parent, i.e. the whole of https://prosody/ in this case. This might get messy if other PWAs are provided by the same site or Prosody installation, however.
author Matthew Wild <mwild1@gmail.com>
date Tue, 11 Feb 2025 13:18:38 +0000
parent 5716:6696075e26e2
line wrap: on
line source

---
labels:
- 'Stage-Beta'
summary: 'Import MUC membership info from a JSON file'
...

Introduction
============

This module allows you to import MUC membership information from an external
URL in JSON format.

Details
=======

If you have an organization or community and lots of members and/or channels,
it can be frustrating to manage MUC affiliations manually. This module will
fetch a JSON file from a configured URL, and use that to automatically set the
MUC affiliations.

It also supports hats/badges.

Configuration
=============

Add the module to the MUC host (not the global modules\_enabled):

        Component "conference.example.com" "muc"
            modules_enabled = { "muc_members_json" }

You can define (globally or per-MUC component) the following options:

  Name                  Description
  --------------------- --------------------------------------------------
  muc_members_json_url  The URL to the JSON file describing memberships
  muc_members_json_mucs The MUCs to manage, and their associated configuration

The `muc_members_json_mucs` setting determines which rooms will be managed by
the plugin, and how to map roles to hats (if desired).

``` lua
muc_members_json_mucs = {
	-- This configures hats for the myroom@<this MUC host> MUC
	myroom = {
		-- The optional field 'member_hat' defines a hat that will be
		-- added to any user that is listed in the members JSON
		-- (regardless of what roles they have, if any)
		member_hat = {
			id = "urn:uuid:6a1b143a-1c5c-11ee-80aa-4ff1ce4867dc";
			title = "Cool Member";
		};
		-- The optional field 'team_hats' defines one or more hats
		-- that will be assigned to users that have the specified
		-- roles in the JSON.
		team_hats = {
			janitor = {
				id = "urn:uuid:ec32f550-7d5f-11ee-81ee-6b139cac3bf6";
				title = "Janitor";
			}
		}
	};
}
```

JSON format
===========

``` json
{
  "members": [
    {
      "jids": [
        "user@example.com",
        "user2@example.com"
      ]
    },
    {
      "jids": ["user3@example.com"],
      "roles": ["janitor"]
    }
  ]
}
```

The JSON format must be an object with a `members` array.

Each member must have a `jids` field, and optionally a `roles` field (both are
arrays of strings).

Compatibility
=============

  ------- ------------------
  trunk   Works
  0.12    Works
  ------- ------------------