Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hidden Checkbox list values do not persist after saving when modified with SendingContentNotification #17385

Open
DanielToxic opened this issue Oct 28, 2024 · 1 comment
Labels

Comments

@DanielToxic
Copy link
Contributor

Which Umbraco version are you using? (Please write the exact version, example: 10.1.0)

13.5.2

Bug summary

When using SendingContentNotification to conditionally hide specific properties or tabs for certain user groups, any hidden Checkbox list field loses its value if a user from one of these groups saves the content. This results in the loss of Checkbox list values when a user with permission to view these fields later accesses the content. Interestingly, Textarea fields persist as expected, indicating the issue is specific to Checkbox list fields.

Specifics

Affected URL: Umbraco Backoffice on Content Node with hidden properties/tabs using Checkbox lists.
Browsers Tested: Chrome, Edge
Error Details: No specific error messages. Checkbox list field values are cleared if hidden when a restricted user saves.

Code Example

public class HidePropertiesNotification : INotificationHandler<SendingContentNotification>
{
    private readonly IBackOfficeSecurityAccessor _backOfficeSecurityAccessor;

    public HidePropertiesNotification(IBackOfficeSecurityAccessor backOfficeSecurityAccessor)
    {
        _backOfficeSecurityAccessor = backOfficeSecurityAccessor;
    }

    public void Handle(SendingContentNotification notification)
    {
        var user = _backOfficeSecurityAccessor.BackOfficeSecurity.CurrentUser;
        if (user == null) return;

        foreach (var variant in notification.Content.Variants)
        {
            // Hiding the "content" tab's specific properties for restricted groups
            var adminTab = variant.Tabs?.FirstOrDefault(x => x.Alias == "content");
            if (adminTab != null)
            {
                // Filtering out the "adminCheckboxList" property while leaving other properties intact
                adminTab.Properties = adminTab.Properties?.Where(x => x.Alias != "adminCheckboxList");
            }
        }
    }
}

Steps to reproduce

  1. Add a property to a document type using a Checkbox list.
  2. Implement SendingContentNotification to hide specific Checkbox list properties (like adminCheckboxList) or an entire tab for users in specific groups.
  3. Log in as a user in one of these restricted groups, edit and save the content without seeing the hidden properties.
  4. Log in as a user with access to the hidden fields and check if the values in the hidden Checkbox list field have persisted.

Expected result / actual result

Expected: Hidden Checkbox list field values should persist after saving, regardless of the user’s role. Textarea fields behave correctly and retain their values.

Actual: Hidden Checkbox list values are lost if a restricted user saves the content, leading to missing data when a user with the appropriate permissions views it later. However, Textarea fields retain their values as expected, showing this issue specifically affects Checkbox lists.

Copy link

Hi there @DanielToxic!

Firstly, a big thank you for raising this issue. Every piece of feedback we receive helps us to make Umbraco better.

We really appreciate your patience while we wait for our team to have a look at this but we wanted to let you know that we see this and share with you the plan for what comes next.

  • We'll assess whether this issue relates to something that has already been fixed in a later version of the release that it has been raised for.
  • If it's a bug, is it related to a release that we are actively supporting or is it related to a release that's in the end-of-life or security-only phase?
  • We'll replicate the issue to ensure that the problem is as described.
  • We'll decide whether the behavior is an issue or if the behavior is intended.

We wish we could work with everyone directly and assess your issue immediately but we're in the fortunate position of having lots of contributions to work with and only a few humans who are able to do it. We are making progress though and in the meantime, we will keep you in the loop and let you know when we have any questions.

Thanks, from your friendly Umbraco GitHub bot 🤖 🙂

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant