Exemple #1
0
        public void TestMultipleGroupTypeModelInMemory()
        {
            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);

            e.AddPolicy("alice", "data1", "read");
            e.AddPolicy("bob", "data2", "write");
            e.AddPolicy("data_group_admin", "data_group", "write");
            e.AddNamedGroupingPolicy("g", "alice", "data_group_admin");
            e.AddNamedGroupingPolicy("g2", "data1", "data_group");
            e.AddNamedGroupingPolicy("g2", "data2", "data_group");

            Assert.True(e.Enforce("alice", "data1", "read"));
            Assert.True(e.Enforce("alice", "data1", "write"));
            Assert.False(e.Enforce("alice", "data2", "read"));
            Assert.True(e.Enforce("alice", "data2", "write"));
        }
Exemple #2
0
        public IList <Article> GetArticlesForAdminPanel(int currentUserId)
        {
            var e = new Enforcer("CasbinConfig/rbac_model.conf", "CasbinConfig/rbac_policy.csv");

            var obj = "article";
            var act = "read";

            //Сначала проверям, что пользователь имеет права на чтение статей
            if (e.Enforce(currentUserId.ToString(), obj, act))
            {
                //Получаем список ролей пользователя
                var currentUserRoles = e.GetRolesForUser(currentUserId.ToString());
                //Проверяем, является ли пользователем админиом или супервизором
                var isAdmin = currentUserRoles.Any(x => x == "admin" || x == "supervisor");

                //Если админ, вернуть все записи, иначе только те, которые принадлежат пользователю
                if (isAdmin)
                {
                    return(_context.Articles.ToList());
                }
                else
                {
                    return(_context.Articles.Where(x => x.OwnerId == currentUserId).ToList());
                }
            }
            else
            {
                // отклонить запрос, показать ошибку
                throw new Exception("403");
            }
        }
Exemple #3
0
        public void testRoleLinks()
        {
            Enforcer e = new Enforcer("examples/rbac_model.conf");

            e.EnableAutoBuildRoleLinks(false);
            e.BuildRoleLinks();
            e.Enforce("user501", "data9", "read");
        }
Exemple #4
0
        public void TestEnforceWithMultipleRoleManager()
        {
            var e = new Enforcer(TestModelFixture.GetNewTestModel(
                                     _testModelFixture._rbacMultipleModelText,
                                     _testModelFixture._rbacMultiplePolicyText));

            var roleManager = new DefaultRoleManager(5);

            roleManager.AddMatchingFunc((arg1, arg2) => arg1.Equals(arg2));
            e.SetRoleManager(roleManager);
            bool result = e.Enforce("@adm-user", "org::customer1", "cust1", "manage");

            Assert.True(result);

            roleManager.AddMatchingFunc((arg1, arg2) => !arg1.Equals(arg2));
            e.SetRoleManager(roleManager);
            result = e.Enforce("@adm-user", "org::customer1", "cust1", "manage");
            Assert.False(result);
        }
Exemple #5
0
 public static bool Auth(this Enforcer ob, string sub, string obj, string act)
 {
     try
     {
         return(ob.Enforce(sub, obj, act));
     }
     catch (Exception _)
     {
         return(false);
     }
 }
Exemple #6
0
        public void TestEnforceWithMultipleEval()
        {
            var e = new Enforcer(TestModelFixture.GetNewTestModel(
                                     _testModelFixture._rbacMultipleEvalModelText,
                                     _testModelFixture._rbacMultipleEvalPolicyText));

            bool result = e.Enforce(
                "domain1",
                new { Role = "admin" },
                new { Name = "admin_panel" },
                "view");

            Assert.True(result);
        }
        public void TestTypConvertorAttribute()
        {
            var adapter  = new EFCoreAdapter <Guid>(_context);
            var enforcer = new Enforcer(_modelProvideFixture.GetNewAbacModel(), adapter);

            enforcer.LoadPolicy();

            var flag = enforcer.Enforce(new
            {
                IsTenantMember = "true",
                Age            = 30
            }, "/data2", "write");

            Assert.True(flag);
        }
Exemple #8
0
        public static void CheckEnvironmentAccess(string sub, string obj, string act, string env)
        {
            var e = new Enforcer("./casbin-config/env_model.conf", "./casbin-config/env_policy.csv");

            if (e.Enforce(sub, obj, act, env))
            {
                // permit alice to read data1
                Console.WriteLine("Access Granted");
            }
            else
            {
                // deny the request, show an error
                Console.WriteLine("Access Denied");
            }
        }
Exemple #9
0
        public void DeleteArticle(int currentUserId, Article deleteArticle)
        {
            var e = new Enforcer("CasbinConfig/delete_model.conf", "CasbinConfig/rbac_policy.csv");

            var act = "delete";

            //Проверям, что пользователь имеет права на редактирование статьи
            if (e.Enforce(currentUserId.ToString(), deleteArticle, act))
            {
                //Удаляем статью
                _context.Articles.Remove(deleteArticle);
                _context.SaveChanges();
            }
            else
            {
                // отклонить запрос, показать ошибку
                throw new Exception("403");
            }
        }
        public void TestAgeAttribute()
        {
            var adapter  = new EFCoreAdapter <Guid>(_context);
            var enforcer = new Enforcer(_modelProvideFixture.GetNewAbacModel(), adapter);

            enforcer.LoadFilteredPolicy(new Filter
            {
                P = new List <string> {
                    "", "", "", "formlang"
                },
            });

            var flag = enforcer.Enforce(new
            {
                Age            = 30,
                IsTenantMember = "false",
            }, "/data1", "read");

            Assert.True(flag);
        }
Exemple #11
0
        public void UpdateArticle(int currentUserId, Article newArticle)
        {
            var e = new Enforcer("CasbinConfig/rbac_with_abac_model.conf", "CasbinConfig/rbac_policy.csv");

            var act = "modify";

            //Проверям, что пользователь имеет права на редактирование статьи
            if (e.Enforce(currentUserId.ToString(), newArticle, act))
            {
                //Обновляем статью, и сохраняем изменения
                _context.Articles.Update(newArticle);
                _context.SaveChanges();

                var v = _context.Articles.FirstOrDefault(x => x.Id == 1);
                Console.WriteLine($"New name before changed = {v.Name}");
            }
            else
            {
                // отклонить запрос, показать ошибку
                throw new Exception("403");
            }
        }
Exemple #12
0
 internal static void testEnforceWithoutUsers(Enforcer e, String obj, String act, Boolean res)
 {
     Assert.Equal(res, e.Enforce(obj, act));
 }
Exemple #13
0
 internal static void testEnforce(Enforcer e, String sub, Object obj, String act, Boolean res)
 {
     Assert.Equal(res, e.Enforce(sub, obj, act));
 }
        public IActionResult checkRbacWithoutDomain(string userName, string domain, string permissionName)
        {
            var response = _enforcer.Enforce(userName, domain, permissionName);

            return(Ok(response));
        }
Exemple #15
0
 internal static void TestDomainEnforce(Enforcer e, string sub, string dom, string obj, string act, bool res)
 {
     Assert.Equal(res, e.Enforce(sub, dom, obj, act));
 }
Exemple #16
0
 internal static void TestEnforceWithoutUsers(Enforcer e, string obj, string act, bool res)
 {
     Assert.Equal(res, e.Enforce(obj, act));
 }
Exemple #17
0
 internal static void testDomainEnforce(Enforcer e, String sub, String dom, String obj, String act, Boolean res)
 {
     Assert.Equal(res, e.Enforce(sub, dom, obj, act));
 }
Exemple #18
0
 internal static void TestEnforce(Enforcer e, object sub, object obj, string act, bool res)
 {
     Assert.Equal(res, e.Enforce(sub, obj, act));
 }
Exemple #19
0
 public bool VerifyUserPermission(string userId, string familyId, string resource, string action)
 {
     return(_enforcer.Enforce(userId, familyId, resource, action));
 }