view mod_muc_members_json/README.md @ 5853:97c9b76867ca

mod_log_ringbuffer: Detach event handlers on logging reload (thanks Menel) Otherwise the global event handlers accumulate, one added each time logging is reoladed, and each invocation of the signal or event triggers one dump of each created ringbuffer.
author Kim Alvefur <zash@zash.se>
date Sun, 03 Mar 2024 11:23:40 +0100
parents 6696075e26e2
children
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
  ------- ------------------