admin.gno
2.06 Kb ยท 82 lines
1package users
2
3import (
4 "std"
5
6 "gno.land/r/gov/dao"
7 susers "gno.land/r/sys/users"
8)
9
10var paused = false // XXX: replace with p/moul/authz
11
12// NewSetPausedExecutor allows GovDAO to pause or unpause this realm
13func NewSetPausedExecutor(newPausedValue bool) dao.ProposalRequest {
14 cb := func() error {
15 paused = newPausedValue
16 return nil
17 }
18
19 e := dao.NewSimpleExecutor(cb, "")
20
21 return dao.NewProposalRequest("Pause users/v1 realm", "", e)
22}
23
24// ProposeNewName allows GovDAO to propose a new name for an existing user
25// The associated address and all previous names of a user that changes a name
26// are preserved, and all resolve to the new name.
27func ProposeNewName(addr std.Address, newName string) dao.ProposalRequest {
28 if matched := reUsername.MatchString(newName); !matched {
29 panic(ErrInvalidUsername)
30 }
31
32 userData := susers.ResolveAddress(addr)
33 if userData == nil {
34 panic(susers.ErrUserNotExistOrDeleted)
35 }
36
37 cb := func() error {
38 return userData.UpdateName(newName)
39 }
40
41 e := dao.NewSimpleExecutor(cb, "")
42
43 return dao.NewProposalRequest("Propose a new name using users/v1 realm", "", e)
44}
45
46// ProposeDeleteUser allows GovDAO to propose deletion of a user
47// This will make the associated address and names unresolvable.
48// WARN: After deletion, the same address WILL NOT be able to register a new name.
49func ProposeDeleteUser(addr std.Address, desc string) dao.ProposalRequest {
50 userData := susers.ResolveAddress(addr)
51 if userData == nil {
52 panic(susers.ErrUserNotExistOrDeleted)
53 }
54
55 cb := func() error {
56 return userData.Delete()
57 }
58
59 e := dao.NewSimpleExecutor(cb, "")
60
61 return dao.NewProposalRequest("Propose deleting a name using users/v1 realm", desc, e)
62}
63
64// ProposeNewRegisterPrice allows GovDAO to update the price of registration
65func ProposeNewRegisterPrice(newPrice int64) dao.ProposalRequest {
66 if newPrice < 0 {
67 panic("invalid price")
68 }
69
70 cb := func() error {
71 registerPrice = newPrice
72 return nil
73 }
74
75 e := dao.NewSimpleExecutor(cb, "")
76
77 return dao.NewProposalRequest(
78 "Propose change the price for name registration using users/v1 realm",
79 "",
80 e,
81 )
82}