Skip to content Search Apps Documentation Source Content File Folder Download Copy Actions State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

assert.gno

1.82 Kb · 80 lines
 1package rbac
 2
 3import (
 4	"strings"
 5
 6	ufmt "gno.land/p/nt/ufmt/v0"
 7
 8	prbac "gno.land/p/gnoswap/rbac/v1"
 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 strings.TrimSpace(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}