Take the community feedback survey now.
                AI OnAI Off
            
        Take the community feedback survey now.
Hi,
You could hook into the ContentSecuritySaved event in the IContentSecurityRepository.
Something like the following:
    [InitializableModule]
    [ModuleDependency(typeof(Web.InitializationModule))]
    public class SecuritySavedEventInitializationModule : IInitializableModule
    {
        private readonly ILogger _log = LogManager.GetLogger(typeof(SecuritySavedEventInitializationModule));
        public void Initialize(InitializationEngine context)
        {
            var contentSecurityRepository = ServiceLocator.Current.GetInstance<IContentSecurityRepository>();
            contentSecurityRepository.ContentSecuritySaved += LogContentSecuritySaved;
        }
        private void LogContentSecuritySaved(object sender, ContentSecurityEventArg e)
        {
            var principal = PrincipalInfo.CurrentPrincipal;
            var contentLoader = ServiceLocator.Current.GetInstance<IContentLoader>();
            IContent content;
            if (!contentLoader.TryGet(e.ContentLink, out content))
            {
                return;
            }
            IEnumerable<string> permissions = e.ContentSecurityDescriptor.Entries.Select(entry => $"{entry.Name}: {entry.Access.ToString()}");
            var message =
                $"{principal.Identity.Name} changed access rights for {content.Name} ({content.ContentLink}). Permissions: {string.Join(", ", permissions)}";
            _log.Log(Level.Information, message);
        }
        public void Uninitialize(InitializationEngine context)
        {
            var contentSecurityRepository = ServiceLocator.Current.GetInstance<IContentSecurityRepository>();
            contentSecurityRepository.ContentSecuritySaved -= LogContentSecuritySaved;
        }
    }[InitializableModule]
[ModuleDependency(typeof(EPiServer.Web.InitializationModule))]
public class EpiserverInitialization : IInitializableModule
{
    private ILogger _log;
    public void Initialize(InitializationEngine context)
    {
       _log = EPiServer.Logging.LogManager.GetLogger(typeof(EpiserverInitialization));
            var securityRepo = EPiServer.ServiceLocation.ServiceLocator.Current.GetInstance<IContentSecurityRepository>();
       securityRepo.ContentSecuritySaved += SecurityRepo_ContentSecuritySaved;
    }
    private void SecurityRepo_ContentSecuritySaved(object sender, ContentSecurityEventArg e)
    {
            _log.Information($"Content security has been changed for {e.ContentLink} by {HttpContext.Current.User.Identity.Name}");
    }
    public void Uninitialize(InitializationEngine context)
    {
        var securityRepo = EPiServer.ServiceLocation.ServiceLocator.Current.GetInstance<IContentSecurityRepository>();
        securityRepo.ContentSecuritySaved -= SecurityRepo_ContentSecuritySaved;
    }
} 
    
    
    
Hi,
I want to track activity of the user for "Set Access Rights" section, Is there any way to create a custom logging for the same ?
Kindly let me know if anyone has any usefull info to track the above issue.
Thanks,
Chandrakant H