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}