We use Rocket :) web framework written in Rust
Now we have OpenAPI for roles (thanks to juhaku / utoipa
) and web interface using HTMX and Tera templates.
curl http://localhost:8000/users/ | jq
[
{
"_id": "rocket.cat",
"roles": [
"bot"
],
"status": "online",
"username": "rocket.cat",
"active": true
},
{
"_id": "G7RXKXa3w9pMn3RMt",
"roles": [
"user",
"admin"
],
"status": "offline",
"username": "dpl",
"active": true
}
]
curl http://localhost:8000/permissions/ | jq
[
{
"_id": "access-permissions",
"roles": [
"admin"
]
},
{
"_id": "access-marketplace",
"roles": [
"admin",
"user"
]
},
{
"_id": "access-setting-permissions",
"roles": [
"admin"
]
},
{
"_id": "add-oauth-service",
"roles": [
"admin"
]
},
{
"_id": "add-user-to-joined-room",
"roles": [
"admin",
"owner",
"moderator"
]
},
{
"_id": "add-user-to-any-c-room",
"roles": [
"admin"
]
},
{
"_id": "kick-user-from-any-c-room",
"roles": [
"admin"
]
},
{
"_id": "api-bypass-rate-limit",
"roles": [
"admin",
"bot",
"app"
]
},
{
"_id": "archive-room",
"roles": [
"admin",
"owner"
]
},
{
"_id": "assign-admin-role",
"roles": [
"admin"
]
},
{
"_id": "assign-roles",
"roles": [
"admin"
]
},
{
"_id": "ban-user",
"roles": [
"admin",
"owner",
"moderator"
]
},
...
curl http://localhost:8000/roles/ | jq
[
{
"_id": "admin",
"scope": "Users",
"name": "admin"
},
{
"_id": "moderator",
"scope": "Subscriptions",
"name": "moderator"
},
{
"_id": "leader",
"scope": "Subscriptions",
"name": "leader"
},
{
"_id": "owner",
"scope": "Subscriptions",
"name": "owner"
},
{
"_id": "user",
"scope": "Users",
"name": "user"
},
{
"_id": "bot",
"scope": "Users",
"name": "bot"
},
{
"_id": "app",
"scope": "Users",
"name": "app"
},
{
"_id": "guest",
"scope": "Users",
"name": "guest"
},
{
"_id": "anonymous",
"scope": "Users",
"name": "anonymous"
},
{
"_id": "livechat-agent",
"scope": "Users",
"name": "livechat-agent"
},
{
"_id": "livechat-manager",
"scope": "Users",
"name": "livechat-manager"
},
{
"_id": "livechat-monitor",
"scope": "Users",
"name": "livechat-monitor"
}
]