view mod_http_muc_kick/README.md @ 5682:527c747711f3

mod_http_oauth2: Limit revocation to clients own tokens in strict mode RFC 7009 section 2.1 states: > The authorization server first validates the client credentials (in > case of a confidential client) and then verifies whether the token was > issued to the client making the revocation request. If this > validation fails, the request is refused and the client is informed of > the error by the authorization server as described below. The first part was already covered (in strict mode). This adds the later part using the hash of client_id recorded in 0860497152af It still seems weird to me that revoking a leaked token should not be allowed whoever might have discovered it, as that seems the responsible thing to do.
author Kim Alvefur <zash@zash.se>
date Sun, 29 Oct 2023 11:30:49 +0100
parents 9fc52ccfb445
children
line wrap: on
line source

# Introduction


This module allows kicking users out of MUCs via HTTP.  
It can be used in combination with [mod_muc_http_auth](https://modules.prosody.im/mod_muc_http_auth.html) as a complement to externalize MUC access.

This module expects a JSON payload with the following keys:
* `nickname` Mandatory. The nickname of the user to be kicked.
* `muc` Mandatory. The JID of the muc to kick the user from.
* `reason` Optional. A comment explaining the reason of the kick (More details https://xmpp.org/extensions/xep-0045.html#example-91).

Example:
```
{
    nickname: "Bob",
    muc: "snuggery@chat.example.org",
}
```
If the user was kicked successfuly, the module will return a 200 status code.  
Otherwise, the according status code will be returned in the response, as well as a JSON payload providing an error message.
```
{
    error: "Missing nickname and/or MUC"
}
```

The path this module listens on is `/muc_kick`.  
Example of a request to kick `Bob` from the `snuggery@chat.example.org` MUC using cURL:

```
curl --header "Content-Type: application/json" \
  --request POST \
  -H "Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" \
  --data '{"nickname":"Bob","muc":"snuggery@chat.example.org"}' \
  http://chat.example.org:5280/muc_kick
```



# Configuring

## Enabling

``` {.lua}
Component "chat.example.org" "muc"

modules_enabled = {
    "http_muc_kick";
}

http_muc_kick_authorization_header = "Basic YWxhZGRpbjpvcGVuc2VzYW1l" -- Check the Settings section below

```


## Settings

|Name |Description |Default |
|-----|------------|--------|
|http_muc_kick_authorization_header| Value of the Authorization header expected by every request when trying to kick a user. Example: `Basic dXNlcm5hbWU6cGFzc3dvcmQ=`| nil |

Even though there is no check on whether the Authorization header provided is a valid one,
please be aware that if `http_muc_kick_authorization_header` is nil, the module will not load as a reminder that some authorization should be enforced for this module.