public ActionResult EditPermissions(int roleId) { var permissions = permissionProviders.Value.SelectMany(x => x.GetPermissions()).ToList(); var allPermissions = permissionService.GetRecords(); foreach (var permission in permissions) { if (allPermissions.All(x => x.Name != permission.Name)) { var newPermission = new Domain.Permission { Name = permission.Name, Category = string.IsNullOrEmpty(permission.Category) ? "Miscellaneous" : permission.Category, Description = permission.Description }; permissionService.Insert(newPermission); allPermissions.Add(newPermission); } } var role = roleService.GetById(roleId); var rolePermissions = membershipService.GetPermissionsForRole(role.Id); var model = new UpdatePermissionsModel { RoleId = roleId, Permissions = rolePermissions.Select(x => x.Id).ToArray() }; var retult = new ControlFormResult <UpdatePermissionsModel>(model) { Title = T("Edit Role Permissions"), ShowBoxHeader = false, FormWrapperStartHtml = Constants.Form.FormWrapperStartHtml, FormWrapperEndHtml = Constants.Form.FormWrapperEndHtml }; var selectListItems = new List <ExtendedSelectListItem>(); foreach (var categoryGroup in allPermissions.OrderBy(x => x.Category, new PermissionComparer(StringComparer.InvariantCultureIgnoreCase)).GroupBy(x => x.Category)) { selectListItems.AddRange(categoryGroup.OrderBy(x => x.Description) .Select(permission => new ExtendedSelectListItem { Category = permission.Category, Text = permission.Description, Value = permission.Id.ToString() })); } retult.RegisterExternalDataSource(x => x.Permissions, selectListItems); return(retult); }
public ActionResult EditPermissions(UpdatePermissionsModel model) { membershipService.AssignPermissionsToRole(model.RoleId, model.Permissions); return(new AjaxResult().Alert(T("Cập nhật phân quyền thành công!"))); }