1package user23import (4 "chain"5 "strconv"67 "gno.land/p/akkadia/beta/accesscontrol"8 "gno.land/r/akkadia/beta/admin"9)1011const (12 SetListLimitEvent = "SetListLimit"13 SetFrozenEvent = "SetFrozen"14)1516var (17 listLimit int = 100 // Max items per list query18 isFrozen = true19)2021func SetListLimit(cur realm, limit int) {22 accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)23 if limit < 1 {24 panic("limit must be at least 1")25 }2627 oldLimit := listLimit28 listLimit = limit2930 chain.Emit(31 SetListLimitEvent,32 "oldLimit", strconv.Itoa(oldLimit),33 "newLimit", strconv.Itoa(limit),34 )35}3637func GetListLimit() int {38 return listLimit39}4041// SetFrozen controls direct user creation and deletion only.42func SetFrozen(cur realm, frozen bool) {43 accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)44 oldFrozen := isFrozen45 isFrozen = frozen46 chain.Emit(47 SetFrozenEvent,48 "oldFrozen", strconv.FormatBool(oldFrozen),49 "newFrozen", strconv.FormatBool(frozen),50 )51}52AdminCreateUser(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)
AdminDeleteUser(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)
AdminUpdateUser(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, propKeys string, propValues string)
CreateUser(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})
DeleteAll(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})
DeleteUser(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})
GetListLimit() int
GetTotalUserSize() int
HasUser(addr string) bool
ListUsers(page int, count int) []string
ListUsersByAddresses(addrs ....uverse.address) []map[string]string
Render(iUrl string) string
SetFrozen(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}, frozen bool)
SetListLimit(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}, limit int)
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.