public override async Task <IDisplayResult> UpdateAsync(CommonPart part, UpdatePartEditorContext context) { var currentUser = _httpContextAccessor.HttpContext?.User; if (!await _authorizationService.AuthorizeAsync(currentUser, StandardPermissions.SiteOwner, part)) { return(null); } var settings = context.TypePartDefinition.GetSettings <CommonPartSettings>(); if (!settings.DisplayOwnerEditor) { if (part.ContentItem.Owner == null) { part.ContentItem.Owner = currentUser.FindFirstValue(ClaimTypes.NameIdentifier); } } else { var model = new OwnerEditorViewModel(); if (part.ContentItem.Owner != null) { var user = await _userManager.FindByIdAsync(part.ContentItem.Owner); model.OwnerName = user.UserName; } var priorOwnerName = model.OwnerName; await context.Updater.TryUpdateModelAsync(model, Prefix); if (model.OwnerName != priorOwnerName) { var newOwner = (await _userManager.FindByNameAsync(model.OwnerName)); if (newOwner == null) { context.Updater.ModelState.AddModelError("CommonPart.OwnerName", S["Invalid user name"]); } else { part.ContentItem.Owner = await _userManager.GetUserIdAsync(newOwner); } } } return(await EditAsync(part, context)); }
public override async Task <IDisplayResult> UpdateAsync(CommonPart part, UpdatePartEditorContext context) { var currentUser = _httpContextAccessor.HttpContext?.User; if (currentUser == null || !(await _authorizationService.AuthorizeAsync(currentUser, StandardPermissions.SiteOwner, part))) { return(null); } var settings = context.TypePartDefinition.GetSettings <CommonPartSettings>(); if (!settings.DisplayOwnerEditor) { if (part.ContentItem.Owner == null) { part.ContentItem.Owner = currentUser.Identity.Name; } } else { var model = new OwnerEditorViewModel(); if (part.ContentItem.Owner != null) { model.Owner = part.ContentItem.Owner; } var priorOwner = model.Owner; await context.Updater.TryUpdateModelAsync(model, Prefix); if (!string.IsNullOrEmpty(part.ContentItem.Owner) && model.Owner != priorOwner) { var newOwner = await _userService.GetUserAsync(model.Owner); if (newOwner == null) { context.Updater.ModelState.AddModelError("CommonPart.Owner", S["Invalid user name"]); } else { part.ContentItem.Owner = newOwner.UserName; } } } return(await EditAsync(part, context)); }
public void PublishingShouldFailIfOwnerIsUnknown() { var contentManager = _container.Resolve <IContentManager>(); var updateModel = new Mock <IUpdateModel>(); var user = contentManager.New <IUser>("User"); _authn.Setup(x => x.GetAuthenticatedUser()).Returns(user); var item = contentManager.Create <ICommonPart>("test-item", VersionOptions.Draft, init => { }); var viewModel = new OwnerEditorViewModel { Owner = "User" }; updateModel.Setup(x => x.TryUpdateModel(viewModel, "", null, null)).Returns(true); contentManager.UpdateEditor(item.ContentItem, updateModel.Object); }
public override async Task <IDisplayResult> UpdateAsync(CommonPart part, BuildPartEditorContext context) { var currentUser = _httpContextAccessor.HttpContext?.User; if (currentUser == null || !(await _authorizationService.AuthorizeAsync(currentUser, StandardPermissions.SiteOwner, part))) { return(null); } var settings = GetSettings(part); if (settings.DisplayOwnerEditor) { var model = new OwnerEditorViewModel(); await context.Updater.TryUpdateModelAsync(model, Prefix); if (!string.IsNullOrEmpty(part.ContentItem.Owner) || !context.IsNew) { part.ContentItem.Owner = model.Owner; } } return(await EditAsync(part, context)); }