kreta/KretaWeb/Logger/RequestUserRenderer.cs
2024-03-13 00:33:46 +01:00

43 lines
1.3 KiB
C#

using System;
using System.Collections.Generic;
using Kreta.Web.Logging.Logger;
using Kreta.Web.Security;
namespace Kreta.Web.Logger
{
/// <summary>
/// Logging field renderer
/// </summary>
class RequestUserRenderer : LoggingFieldRenderer
{
/// <summary>
/// Render
/// </summary>
/// <param name="fieldName">Field</param>
/// <param name="context">Context</param>
public override void Render(string fieldName, LoggingFieldRendererContext context)
{
if (string.Compare(RequestResponseLoggingFields.Request.User, fieldName, StringComparison.OrdinalIgnoreCase) != 0)
{
return;
}
string user = context.GetFieldValue(fieldName) as string;
if (!string.IsNullOrWhiteSpace(user))
{
try
{
List<string> roles = ClaimData.FelhasznaloSzerepCsomagok;
if (roles != null && roles.Count > 0)
{
context.SetFieldValue(fieldName, $"{user}/[{string.Join(",", roles)}]");
}
}
catch (Exception ex)
{
context.SetFieldValue(fieldName, ex.ToString());
}
}
}
}
}