Add GroupServ, with groups that grant channel access
User groups (!name) — a founder plus member accounts, each with group- access flags (the shared flag primitive: F founder, f manage, i invite, c chan-access, s set, m memo). REGISTER/DROP/INFO/LIST/ADD/DEL/FLAGS; event-sourced and federated like accounts. The flagship interconnection: a channel access entry may name a !group, so every member inherits that channel access. Resolution is group-aware — a new db.channel_caps() unions a user's direct access with any group they belong to, and the engine's join handler auto-ops/voices through it. So "ChanServ FLAGS #chan !team +o" auto-ops every member of !team, and removing someone from the group revokes it. Opt-in.
This commit is contained in:
parent
c7a4d5be27
commit
09be99785e
10 changed files with 602 additions and 17 deletions
|
|
@ -1,5 +1,5 @@
|
|||
[workspace]
|
||||
members = ["api", "inspircd", "chanserv", "nickserv", "example", "botserv", "memoserv", "statserv", "hostserv", "operserv", "diceserv", "infoserv", "reportserv"]
|
||||
members = ["api", "inspircd", "chanserv", "nickserv", "example", "botserv", "memoserv", "statserv", "hostserv", "operserv", "diceserv", "infoserv", "reportserv", "groupserv"]
|
||||
|
||||
[package]
|
||||
name = "fedserv"
|
||||
|
|
@ -21,6 +21,7 @@ fedserv-operserv = { path = "operserv" }
|
|||
fedserv-diceserv = { path = "diceserv" }
|
||||
fedserv-infoserv = { path = "infoserv" }
|
||||
fedserv-reportserv = { path = "reportserv" }
|
||||
fedserv-groupserv = { path = "groupserv" }
|
||||
tokio = { version = "1", features = ["net", "io-util", "rt-multi-thread", "macros", "time", "sync", "process"] }
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue