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}