Search Apps Documentation Source Content File Folder Download Copy Actions Download

assert.gno

1.79 Kb ยท 80 lines
 1package rbac
 2
 3import (
 4	"strings"
 5
 6	"gno.land/p/nt/ufmt"
 7
 8	prbac "gno.land/p/gnoswap/rbac"
 9)
10
11// 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}
20
21// 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}
30
31// 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}
42
43// 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}
52
53func assertIsValidAddress(addr address) {
54	if !addr.IsValid() {
55		panic(makeErrorWithDetails(
56			errInvalidAddress,
57			ufmt.Sprintf("address: %s", addr.String()),
58		))
59	}
60}
61
62func assertNotAdminRole(roleName string) {
63	if roleName == prbac.ROLE_ADMIN.String() {
64		panic(makeErrorWithDetails(
65			errAdminRoleUpdateForbidden,
66			ufmt.Sprintf("role name: %s", roleName),
67		))
68	}
69}
70
71func assertIsAdminOrGovernance(addr address) {
72	if manager.IsAuthorized(prbac.ROLE_ADMIN.String(), addr) || manager.IsAuthorized(prbac.ROLE_GOVERNANCE.String(), addr) {
73		return
74	}
75
76	panic(makeErrorWithDetails(
77		errCallerIsNotAdminOrGovernance,
78		ufmt.Sprintf("caller: %s", addr.String()),
79	))
80}