Exemple #1
0
        public async Task TestMultipleGroupTypeModelInMemoryAsync()
        {
            var m = Model.Model.CreateDefault();

            m.AddDef("r", "r", "sub, obj, act");
            m.AddDef("p", "p", "sub, obj, act");
            m.AddDef("g", "g", "_, _");
            m.AddDef("g", "g2", "_, _");
            m.AddDef("e", "e", "some(where (p.eft == allow))");
            m.AddDef("m", "m", "g(r.sub, p.sub) && g2(r.obj, p.obj) && r.act == p.act");

            var e = new Enforcer(m);
            await e.AddPolicyAsync("alice", "data1", "read");

            await e.AddPolicyAsync("bob", "data2", "write");

            await e.AddPolicyAsync("data_group_admin", "data_group", "write");

            await e.AddNamedGroupingPolicyAsync("g", "alice", "data_group_admin");

            await e.AddNamedGroupingPolicyAsync("g2", "data1", "data_group");

            await e.AddNamedGroupingPolicyAsync("g2", "data2", "data_group");

            Assert.True(await e.EnforceAsync("alice", "data1", "read"));
            Assert.True(await e.EnforceAsync("alice", "data1", "write"));
            Assert.False(await e.EnforceAsync("alice", "data2", "read"));
            Assert.True(await e.EnforceAsync("alice", "data2", "write"));
        }
Exemple #2
0
 internal static async Task TestEnforceWithoutUsersAsync(Enforcer e, string obj, string act, bool res)
 {
     Assert.Equal(res, await e.EnforceAsync(obj, act));
 }
Exemple #3
0
 internal static async Task TestEnforceAsync(Enforcer e, object sub, object obj, string act, bool res)
 {
     Assert.Equal(res, await e.EnforceAsync(sub, obj, act));
 }