go-nostr/nip29/nip29.go

66 lines
1.5 KiB
Go
Raw Permalink Normal View History

2024-01-02 17:23:34 -03:00
package nip29
import (
2024-02-08 16:33:39 -03:00
"slices"
2024-01-02 17:23:34 -03:00
"github.com/nbd-wtf/go-nostr"
)
type Role struct {
Name string
Permissions map[Permission]struct{}
}
type Permission string
2024-01-02 17:23:34 -03:00
const (
PermAddUser Permission = "add-user"
PermEditMetadata Permission = "edit-metadata"
PermDeleteEvent Permission = "delete-event"
PermRemoveUser Permission = "remove-user"
PermAddPermission Permission = "add-permission"
PermRemovePermission Permission = "remove-permission"
PermEditGroupStatus Permission = "edit-group-status"
)
type KindRange []int
var ModerationEventKinds = KindRange{
nostr.KindSimpleGroupAddUser,
nostr.KindSimpleGroupRemoveUser,
nostr.KindSimpleGroupEditMetadata,
nostr.KindSimpleGroupAddPermission,
nostr.KindSimpleGroupRemovePermission,
nostr.KindSimpleGroupDeleteEvent,
nostr.KindSimpleGroupEditGroupStatus,
2024-07-03 22:17:43 -03:00
nostr.KindSimpleGroupCreateGroup,
}
2024-01-02 17:23:34 -03:00
var MetadataEventKinds = KindRange{
nostr.KindSimpleGroupMetadata,
nostr.KindSimpleGroupAdmins,
nostr.KindSimpleGroupMembers,
}
2024-01-18 11:48:43 -03:00
const JoinRequestKind = nostr.KindSimpleGroupJoinRequest
2024-01-02 17:23:34 -03:00
func (kr KindRange) Includes(kind int) bool {
_, ok := slices.BinarySearch(kr, kind)
return ok
}
var (
// used for normal members without admin powers
EmptyRole *Role = nil
PermissionsMap = map[Permission]struct{}{
PermAddUser: {},
PermEditMetadata: {},
PermDeleteEvent: {},
PermRemoveUser: {},
PermAddPermission: {},
PermRemovePermission: {},
PermEditGroupStatus: {},
}
)