ssbc / go-ssb-room

Room server implemented in Go
MIT License
187 stars 36 forks source link

Track inviters and ban-ners #217

Open staltz opened 3 years ago

staltz commented 3 years ago

This is an idea for the future, not something for community launch:

Track inviter: it would be good that for each member, we would store and display the ID of the other member who invited them. If things start going wrong in the community up to the point where Wario has to be removed as a member, it would be good to know who invited Wario to begin with. Was it Goomba? And who invited Goomba? And so forth.

Track ban-ner: similarly, we could track who banned someone.

cryptix commented 3 years ago

For invites we already track this so we need to copy this info to the member and change the schema a bit.

For banned people we need to change the schema a bit (right now we just have the comment).

For both changes we need to think about how we should cascade deletes when a the ban-ner/inviter is removed. I suspect we want to update to unknown?

staltz commented 3 years ago

For invites we already track this so we need to copy this info to the member and change the schema a bit.

For banned people we need to change the schema a bit (right now we just have the comment).

:+1:

For both changes we need to think about how we should cascade deletes when a the ban-ner/inviter is removed. I suspect we want to update to unknown?

Good point! Could we keep the SSB ID? Then the community can still track what happened.

I guess in the database that would mean storing both the Member ID and the SSB ID of the inviter, because the Member ID allows the UI to show a link to the inviter, and the SSB ID is a fallback when there is no longer a Member ID.

cryptix commented 3 years ago

Hmm.. yea that is possible but seems a bit messy. We dont support members changing their pubkeys so it might be fine but idk...

It feels very similar to https://github.com/ssb-ngi-pointer/rooms2/issues/8, I'm not 100% sure but maybe I'd rather have an audit table with the actions then sprinkle stuff on other tables.

staltz commented 3 years ago

Good point, I can see that an audit table and an audit page which just lists the latest actions can be sufficient for the purpose of tracking who invited who. It also would provide a bit more time-related context.

One note though https://github.com/ssb-ngi-pointer/rooms2/issues/8 is about an audit feed, I think before we have that, it would be useful to have an audit table.