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

assert.gno

1.13 Kb · 36 lines
 1package access
 2
 3import "gno.land/p/onbloc/access/manager"
 4
 5func assertIsRlmCurrent(_ int, rlm realm) {
 6	if !rlm.IsCurrent() {
 7		panic(ErrSpoofedRealm)
 8	}
 9}
10
11// AssertCanCall panics unless caller can call selector on the calling realm's target path.
12// Union reference:
13// https://github.com/unionlabs/union/blob/8cff0ff34f6baa4cdb1e4650a08985dd05de0c5a/cosmwasm/access-managed/src/restricted.rs#L38-L66
14func AssertCanCall(_ int, rlm realm, selector manager.Selector) {
15	assertIsRlmCurrent(0, rlm)
16
17	caller := rlm.Previous().Address()
18	target := rlm.PkgPath()
19	if !accessState.IsAuthorized(caller, target, selector) {
20		panic(AccessManagerUnauthorizedCallError(caller, target, selector))
21	}
22}
23
24func assertCanManageTarget(_ int, rlm realm) {
25	caller := rlm.Previous().Address()
26	if !accessState.CanManageTarget(caller).Immediate {
27		panic(AccessManagerUnauthorizedAccountError(caller, manager.AdminRole))
28	}
29}
30
31func assertCanAdminRole(_ int, rlm realm, role manager.RoleId) {
32	caller := rlm.Previous().Address()
33	if !accessState.CanAdminRole(role, caller).Immediate {
34		panic(AccessManagerUnauthorizedAccountError(caller, accessState.GetRoleAdmin(role)))
35	}
36}