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")); }
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"); } }
public void testRoleLinks() { Enforcer e = new Enforcer("examples/rbac_model.conf"); e.EnableAutoBuildRoleLinks(false); e.BuildRoleLinks(); e.Enforce("user501", "data9", "read"); }
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); }
public static bool Auth(this Enforcer ob, string sub, string obj, string act) { try { return(ob.Enforce(sub, obj, act)); } catch (Exception _) { return(false); } }
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); }
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"); } }
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); }
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"); } }
internal static void testEnforceWithoutUsers(Enforcer e, String obj, String act, Boolean res) { Assert.Equal(res, e.Enforce(obj, act)); }
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)); }
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)); }
internal static void TestEnforceWithoutUsers(Enforcer e, string obj, string act, bool res) { Assert.Equal(res, e.Enforce(obj, act)); }
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)); }
internal static void TestEnforce(Enforcer e, object sub, object obj, string act, bool res) { Assert.Equal(res, e.Enforce(sub, obj, act)); }
public bool VerifyUserPermission(string userId, string familyId, string resource, string action) { return(_enforcer.Enforce(userId, familyId, resource, action)); }