Search Apps Documentation Source Content File Folder Download Copy Actions Download

user_admin.gno

1.41 Kb · 56 lines
 1package user
 2
 3import (
 4	"chain"
 5
 6	"gno.land/p/akkadia/v0/accesscontrol"
 7	"gno.land/p/akkadia/v0/validate"
 8	"gno.land/r/akkadia/v0/admin"
 9)
10
11func AdminCreateUser(cur realm, addr address, propKeys, propValues string) {
12	assertNotFrozen()
13	accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)
14	assertIsValidAddress(addr)
15	props := parsePropertiesCSV(propKeys, propValues)
16	validateCreateProperties(props)
17	userStore.Create(addr, props)
18	chain.Emit(CreateUserEvent,
19		"address", addr.String(),
20	)
21}
22
23func AdminUpdateUser(cur realm, addr address, propKeys, propValues string) {
24	assertNotFrozen()
25	accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)
26	assertIsValidAddress(addr)
27	props := parsePropertiesCSV(propKeys, propValues)
28	validateUpdateProperties(props)
29	userStore.Update(addr, props)
30	chain.Emit(UpdateUserEvent,
31		"address", addr.String(),
32	)
33}
34
35func AdminDeleteUser(cur realm, addr address) {
36	assertNotFrozen()
37	accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)
38	assertIsValidAddress(addr)
39	userStore.Delete(addr)
40	chain.Emit(DeleteUserEvent,
41		"address", addr.String(),
42	)
43}
44
45func SetUserMetadata(cur realm, addr address, metadata string) {
46	assertNotFrozen()
47	accesscontrol.AssertIsAdminOrOperator(0, cur, admin.IsAdmin, admin.IsOperator)
48	assertIsValidAddress(addr)
49	validate.AssertStringTextLen(metadata, true, "user metadata")
50	userStore.SetMetadata(addr, metadata)
51
52	chain.Emit(
53		SetUserMetadataEvent,
54		"address", addr.String(),
55	)
56}