public IActionResult CapabilitiesList(int userId) { if (userId == 0) { return(R.Fail.WithError(ErrorCodes.ParentEntityMustBeNonZero).Result); } User user = null; if (userId < 0 || (user = _userService.Get(userId)) == null) { return(NotFound()); } var roleIds = user.Roles.Select(x => x.Id).ToArray(); var roleCapabilities = _capabilityService.GetByRolesConsolidated(roleIds).OrderBy(x => x.Name); var userCapabilities = _capabilityService.GetByUser(userId); var allCapabilities = _capabilityService.Get(out int _, x => true, x => x.Name); var availableCapabilities = allCapabilities.Where(x => roleCapabilities.All(y => y.Id != x.Id)).ToList(); var activeCapabilityModels = roleCapabilities.Select(_roleModelFactory.Create); var availableCapabilitiesModel = availableCapabilities.Select(x => { var model = _roleModelFactory.Create(x); model.Active = userCapabilities?.Any(y => y.Id == x.Id) ?? false; return(model); }).ToList(); var roleModels = user.Roles.Select(_roleModelFactory.Create); return(R.Success.With("capabilities", activeCapabilityModels) .With("availableCapabilities", availableCapabilitiesModel) .With("roles", roleModels).Result); }
public void Role_capability_tests_Succeeds() { var role1 = new Role() { Name = "Test Role", SystemName = "TestRole", IsActive = true, IsSystemRole = false }; _roleService.Insert(role1); var role2 = new Role() { Name = "Test Role 2", SystemName = "TestRole", IsActive = true, IsSystemRole = false }; _roleService.Insert(role2); var accessAdminCap = _capabilityService.FirstOrDefault(x => x.Name == CapabilitySystemNames.AccessAdministration); var createOrderCap = _capabilityService.FirstOrDefault(x => x.Name == CapabilitySystemNames.CreateOrder); var editProductCap = _capabilityService.FirstOrDefault(x => x.Name == CapabilitySystemNames.EditProduct); var user = new User() { Name = "Test User", CreatedOn = DateTime.UtcNow, UpdatedOn = DateTime.UtcNow, LastLoginDate = null, Active = true }; _userService.Insert(user); _capabilityService.SetRoleCapabilities(role1.Id, new [] { accessAdminCap.Id }); _capabilityService.SetRoleCapabilities(role2.Id, new [] { editProductCap.Id }); _capabilityService.SetUserCapabilities(user.Id, new[] { createOrderCap.Id }); _roleService.SetUserRoles(user.Id, new [] { role1.Id, role2.Id }); //refetch to load all data user = _userService.Get(user.Id); var consoliatedCapabilities = _capabilityService.GetByRolesConsolidated(new[] { role1.Id, role2.Id }); Assert.AreEqual(2, consoliatedCapabilities.Count()); Assert.IsTrue(user.Can(CapabilitySystemNames.AccessAdministration)); Assert.IsTrue(user.Can(CapabilitySystemNames.EditProduct)); Assert.IsTrue(user.Can(CapabilitySystemNames.CreateOrder)); Assert.IsFalse(user.Can(CapabilitySystemNames.DeleteUser)); }
public IList <Capability> GetConsolidatedCapabilities(int[] roleIds) { return(_capabilityService.GetByRolesConsolidated(roleIds)); }