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));
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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));
        }