/// <summary> /// Setups the default role permissions. /// </summary> /// <param name="operations">The operations.</param> /// <param name="type">The type.</param> /// <param name="entityId">The entity id.</param> public void SetupDefaultRolePermissions(IEnumerable <IPermissionOperation> operations, Type type, long?entityId) { var permissionService = ServiceLocator.Current.GetInstance <IPermissionService>(); var entityTypeService = ServiceLocator.Current.GetInstance <IEntityTypeService>(); EntityType entityType = entityTypeService.GetByType(type); if (operations != null && entityType != null) { //setup permissions for Owner var ownerPermissions = new Permission { EntityId = entityId, EntityType = entityType, Role = new Role { Id = (long)SystemRole.Owner }, Permissions = operations.Where( permissionOperation => permissionOperation.OwnerDefaultAcess). Aggregate(0, (current, permissionOperation) => current | permissionOperation.Key) }; permissionService.Save(ownerPermissions); //setup permissions for User var userPermissions = new Permission { EntityId = entityId, EntityType = entityType, Role = new Role { Id = (long)SystemRole.User }, Permissions = operations.Where( permissionOperation => permissionOperation.UserDefaultAccess). Aggregate(0, (current, permissionOperation) => current | permissionOperation.Key) }; permissionService.Save(userPermissions); //setup permissions for Guest var guestPermissions = new Permission { EntityId = entityId, EntityType = entityType, Role = new Role { Id = (long)SystemRole.Guest }, Permissions = operations.Where( permissionOperation => permissionOperation.GuestDefaultAcess). Aggregate(0, (current, permissionOperation) => current | permissionOperation.Key) }; permissionService.Save(guestPermissions); } }
protected static void SetupPermissions() { var entityTypeService = ServiceLocator.Current.GetInstance<IEntityTypeService>(); var existingItems = entityTypeService.GetAll().ToList(); var itemsToRemove = existingItems.Where(item => !MvcApplication.PermissibleObjects.Exists(it => item.Name == PermissionsHelper.GetEntityType(it.GetType()))).ToList(); var itemsToAdd = MvcApplication.PermissibleObjects.Where(item => !existingItems.Exists(it => it.Name == PermissionsHelper.GetEntityType(item.GetType()))).ToList(); foreach (IPermissible item in itemsToAdd) { var entityType = new EntityType { Name = PermissionsHelper.GetEntityType(item.GetType()), }; entityTypeService.Save(entityType); } foreach (var item in itemsToRemove) { entityTypeService.Delete(item); } }
/// <summary> /// Gets the resource operations. /// </summary> /// <param name="resource">The resource.</param> /// <param name="area">The area.</param> /// <returns></returns> public static IEnumerable<IPermissionOperation> GetResourceOperations(EntityType resource, PermissionArea area) { var permissibleObject = MvcApplication.PermissibleObjects.FirstOrDefault( perm => PermissionsHelper.GetEntityType(perm.GetType()) == resource.Name); if (permissibleObject != null) { return permissibleObject.Operations.Where(operation => (area == PermissionArea.Plugin || operation.Area == area) && operation.OperationLevel != PermissionOperationLevel.Object); } return null; }