public virtual ActionResult ApplyPermissions(PermissionOperationsModel model) { var role = roleService.Find(model.RoleId); if (role == null || role.NotPermissible) { throw new HttpException((int)HttpStatusCode.NotFound, Translate("Messages.CouldNotFoundEntity")); } RoleHelper.ApplyRolePermissions(model); Success(Translate("Messages.SuccessfullyApplyPermissions")); return RedirectToAction(MVC.Admin.Role.Permissions(model.RoleId, String.Format("{0}_{1}", model.ResourceId, (int)model.Area))); }
/// <summary> /// Applies the role permissions. /// </summary> /// <param name="model">The model.</param> public static void ApplyRolePermissions(PermissionOperationsModel model) { var permissionService = ServiceLocator.Current.GetInstance<IPermissionService>(); var permissions = permissionService.GetPermission(model.RoleId, model.ResourceId, null); if (permissions == null) { permissions = new Permission { Role = { Id = model.RoleId }, EntityType = { Id = model.ResourceId }, }; if (model.OperationIds != null) { foreach (var operation in model.OperationIds) { permissions.Permissions = permissions.Permissions | operation; } } } else { var objectTypeService = ServiceLocator.Current.GetInstance<IEntityTypeService>(); var resourceType = objectTypeService.Find(model.ResourceId); if (resourceType != null) { var operations = GetResourceOperations(resourceType, model.Area); foreach (var operation in operations) { if (model.OperationIds == null || !model.OperationIds.Contains(operation.Key)) { permissions.Permissions = permissions.Permissions & (~operation.Key); } else { permissions.Permissions = permissions.Permissions | operation.Key; } } } } permissionService.Save(permissions); }