1package permissions23import (4 "strings"56 "gno.land/p/gnoland/boards/v0"7)89// Option configures permissions.10type Option func(*Permissions)1112// UseSingleUserRole configures permissions to only allow one role per user.13func UseSingleUserRole() Option {14 return func(p *Permissions) {15 p.singleUserRole = true16 }17}1819// WithSuperRole configures permissions to have a super role.20// A super role is the one that have all permissions.21// This type of role doesn't need to be mapped to any permission.22func WithSuperRole(r boards.Role) Option {23 return func(p *Permissions) {24 if p.superRole != "" {25 panic("permissions super role can be assigned only once")26 }2728 name := string(r)29 if strings.TrimSpace(name) == "" {30 panic("permissions super role name is required")31 }3233 if _, err := p.group.AddRole(name); err != nil {34 panic(err)35 }36 p.superRole = r37 }38}39Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.