1package rbac23import (4 "strings"56 ufmt "gno.land/p/nt/ufmt/v0"78 prbac "gno.land/p/gnoswap/rbac/v1"9)1011// assertIsOwner panics if address is not the current owner.12func assertIsOwner(addr address) {13 if manager.Owner() != addr {14 panic(makeErrorWithDetails(15 errCallerIsNotOwner,16 ufmt.Sprintf("caller: %s", addr.String()),17 ))18 }19}2021// assertIsPendingOwner panics if address is not the pending owner.22func assertIsPendingOwner(addr address) {23 if manager.PendingOwner() != addr {24 panic(makeErrorWithDetails(25 errCallerIsNotPendingOwner,26 ufmt.Sprintf("caller: %s", addr.String()),27 ))28 }29}3031// assertIsAdmin panics if address is not authorized for admin role.32func assertIsAdmin(addr address) {33 if !manager.IsAuthorized(prbac.ROLE_ADMIN.String(), addr) {34 panic(35 makeErrorWithDetails(36 errCallerIsNotAdmin,37 ufmt.Sprintf("caller: %s", addr.String()),38 ),39 )40 }41}4243// assertIsValidRoleName panics if roleName is invalid (empty or whitespace-only).44func assertIsValidRoleName(roleName string) {45 if strings.TrimSpace(roleName) == "" {46 panic(makeErrorWithDetails(47 errInvalidRoleName,48 ufmt.Sprintf("role name: %q", roleName),49 ))50 }51}5253func assertIsValidAddress(addr address) {54 if !addr.IsValid() {55 panic(makeErrorWithDetails(56 errInvalidAddress,57 ufmt.Sprintf("address: %s", addr.String()),58 ))59 }60}6162func assertNotAdminRole(roleName string) {63 if strings.TrimSpace(roleName) == prbac.ROLE_ADMIN.String() {64 panic(makeErrorWithDetails(65 errAdminRoleUpdateForbidden,66 ufmt.Sprintf("role name: %s", roleName),67 ))68 }69}7071func assertIsAdminOrGovernance(addr address) {72 if manager.IsAuthorized(prbac.ROLE_ADMIN.String(), addr) || manager.IsAuthorized(prbac.ROLE_GOVERNANCE.String(), addr) {73 return74 }7576 panic(makeErrorWithDetails(77 errCallerIsNotAdminOrGovernance,78 ufmt.Sprintf("caller: %s", addr.String()),79 ))80}81AcceptOwnership(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string})
GetOwner() string
GetPendingOwner() string
GetRoleAddress(roleName string) (string, interface {Error func() string})
IsOwner(addr string) bool
IsPendingOwner(addr string) bool
RegisterRole(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, roleName string, roleAddress string)
RemoveRole(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, roleName string)
Render(path string) string
TransferOwnership(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, addr string)
UpdateRoleAddress(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, roleName string, addr string)
Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.
vm/qrender output, sanitized (docs/render-security.md) and displayed in an empty-sandbox iframe — scripts, forms and popups cannot run. Links stay inert in-preview; right-click to open.