diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentUserDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentUserDto.cs
index 534ca68d80..08a8c4c873 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentUserDto.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentUserDto.cs
@@ -15,6 +15,10 @@ public class CurrentUserDto
public Guid? ImpersonatorTenantId { get; set; }
+ public string ImpersonatorUserName { get; set; }
+
+ public string ImpersonatorTenantName { get; set; }
+
public string UserName { get; set; }
public string Name { get; set; }
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs
index ea517463fe..6ecd9fc195 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs
@@ -129,6 +129,8 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
TenantId = _currentUser.TenantId,
ImpersonatorUserId = _currentUser.FindImpersonatorUserId(),
ImpersonatorTenantId = _currentUser.FindImpersonatorTenantId(),
+ ImpersonatorUserName = _currentUser.FindImpersonatorUserName(),
+ ImpersonatorTenantName = _currentUser.FindImpersonatorTenantName(),
UserName = _currentUser.UserName,
SurName = _currentUser.SurName,
Name = _currentUser.Name,
diff --git a/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditLogInfo.cs b/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditLogInfo.cs
index f8fcbeef5e..4df472da24 100644
--- a/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditLogInfo.cs
+++ b/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditLogInfo.cs
@@ -23,6 +23,10 @@ public class AuditLogInfo : IHasExtraProperties
public Guid? ImpersonatorTenantId { get; set; }
+ public string ImpersonatorUserName { get; set; }
+
+ public string ImpersonatorTenantName { get; set; }
+
public DateTime ExecutionTime { get; set; }
public int ExecutionDuration { get; set; }
diff --git a/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingHelper.cs b/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingHelper.cs
index 934bf42583..1f3c6b433c 100644
--- a/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingHelper.cs
+++ b/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingHelper.cs
@@ -136,9 +136,11 @@ public class AuditingHelper : IAuditingHelper, ITransientDependency
UserName = CurrentUser.UserName,
ClientId = CurrentClient.Id,
CorrelationId = CorrelationIdProvider.Get(),
+ ExecutionTime = Clock.Now,
ImpersonatorUserId = CurrentUser.FindImpersonatorUserId(),
+ ImpersonatorUserName = CurrentUser.FindImpersonatorUserName(),
ImpersonatorTenantId = CurrentUser.FindImpersonatorTenantId(),
- ExecutionTime = Clock.Now
+ ImpersonatorTenantName = CurrentUser.FindImpersonatorTenantName(),
};
ExecutePreContributors(auditInfo);
diff --git a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs
index 034336a9d9..5e534226a1 100644
--- a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs
+++ b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs
@@ -77,4 +77,14 @@ public static class AbpClaimTypes
/// Default: "impersonator_userid".
///
public static string ImpersonatorUserId { get; set; } = "impersonator_userid";
+
+ ///
+ /// Default: "impersonator_tenantname".
+ ///
+ public static string ImpersonatorTenantName { get; set; } = "impersonator_tenantname";
+
+ ///
+ /// Default: "impersonator_username".
+ ///
+ public static string ImpersonatorUserName { get; set; } = "impersonator_username";
}
diff --git a/framework/src/Volo.Abp.Security/Volo/Abp/Users/CurrentUserExtensions.cs b/framework/src/Volo.Abp.Security/Volo/Abp/Users/CurrentUserExtensions.cs
index 78fd42ab76..7e10df87c6 100644
--- a/framework/src/Volo.Abp.Security/Volo/Abp/Users/CurrentUserExtensions.cs
+++ b/framework/src/Volo.Abp.Security/Volo/Abp/Users/CurrentUserExtensions.cs
@@ -35,7 +35,7 @@ public static class CurrentUserExtensions
public static Guid? FindImpersonatorTenantId([NotNull] this ICurrentUser currentUser)
{
var impersonatorTenantId = currentUser.FindClaimValue(AbpClaimTypes.ImpersonatorTenantId);
- if (impersonatorTenantId == null || impersonatorTenantId.IsNullOrWhiteSpace())
+ if (impersonatorTenantId.IsNullOrWhiteSpace())
{
return null;
}
@@ -50,7 +50,7 @@ public static class CurrentUserExtensions
public static Guid? FindImpersonatorUserId([NotNull] this ICurrentUser currentUser)
{
var impersonatorUserId = currentUser.FindClaimValue(AbpClaimTypes.ImpersonatorUserId);
- if (impersonatorUserId == null || impersonatorUserId.IsNullOrWhiteSpace())
+ if (impersonatorUserId.IsNullOrWhiteSpace())
{
return null;
}
@@ -61,4 +61,14 @@ public static class CurrentUserExtensions
return null;
}
+
+ public static string FindImpersonatorTenantName([NotNull] this ICurrentUser currentUser)
+ {
+ return currentUser.FindClaimValue(AbpClaimTypes.ImpersonatorTenantName);
+ }
+
+ public static string FindImpersonatorUserName([NotNull] this ICurrentUser currentUser)
+ {
+ return currentUser.FindClaimValue(AbpClaimTypes.ImpersonatorUserName);
+ }
}
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLog.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLog.cs
index ac7df6a47f..55dc191fa7 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLog.cs
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLog.cs
@@ -24,8 +24,12 @@ public class AuditLog : AggregateRoot, IMultiTenant
public virtual Guid? ImpersonatorUserId { get; protected set; }
+ public virtual string ImpersonatorUserName { get; protected set; }
+
public virtual Guid? ImpersonatorTenantId { get; protected set; }
+ public virtual string ImpersonatorTenantName { get; protected set; }
+
public virtual DateTime ExecutionTime { get; protected set; }
public virtual int ExecutionDuration { get; protected set; }
@@ -77,7 +81,9 @@ public class AuditLog : AggregateRoot, IMultiTenant
string url,
int? httpStatusCode,
Guid? impersonatorUserId,
+ string impersonatorUserName,
Guid? impersonatorTenantId,
+ string impersonatorTenantName,
ExtraPropertyDictionary extraPropertyDictionary,
List entityChanges,
List actions,
@@ -101,8 +107,9 @@ public class AuditLog : AggregateRoot, IMultiTenant
Url = url.Truncate(AuditLogConsts.MaxUrlLength);
HttpStatusCode = httpStatusCode;
ImpersonatorUserId = impersonatorUserId;
+ ImpersonatorUserName = impersonatorUserName;
ImpersonatorTenantId = impersonatorTenantId;
-
+ ImpersonatorTenantName = impersonatorTenantName;
ExtraProperties = extraPropertyDictionary;
EntityChanges = entityChanges;
Actions = actions;
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLogInfoToAuditLogConverter.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLogInfoToAuditLogConverter.cs
index 20f5a3629f..6f2b276df3 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLogInfoToAuditLogConverter.cs
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLogInfoToAuditLogConverter.cs
@@ -79,7 +79,9 @@ public class AuditLogInfoToAuditLogConverter : IAuditLogInfoToAuditLogConverter,
auditLogInfo.Url,
auditLogInfo.HttpStatusCode,
auditLogInfo.ImpersonatorUserId,
+ auditLogInfo.ImpersonatorUserName,
auditLogInfo.ImpersonatorTenantId,
+ auditLogInfo.ImpersonatorTenantName,
extraProperties,
entityChanges,
actions,
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContextModelBuilderExtensions.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContextModelBuilderExtensions.cs
index 1c17a374ce..d3ef7abe91 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContextModelBuilderExtensions.cs
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContextModelBuilderExtensions.cs
@@ -31,6 +31,8 @@ public static class AbpAuditLoggingDbContextModelBuilderExtensions
b.Property(x => x.ExecutionDuration).HasColumnName(nameof(AuditLog.ExecutionDuration));
b.Property(x => x.ImpersonatorTenantId).HasColumnName(nameof(AuditLog.ImpersonatorTenantId));
b.Property(x => x.ImpersonatorUserId).HasColumnName(nameof(AuditLog.ImpersonatorUserId));
+ b.Property(x => x.ImpersonatorTenantName).HasColumnName(nameof(AuditLog.ImpersonatorTenantName));
+ b.Property(x => x.ImpersonatorUserName).HasColumnName(nameof(AuditLog.ImpersonatorUserName));
b.Property(x => x.UserId).HasColumnName(nameof(AuditLog.UserId));
b.Property(x => x.UserName).HasMaxLength(AuditLogConsts.MaxUserNameLength).HasColumnName(nameof(AuditLog.UserName));
b.Property(x => x.TenantId).HasColumnName(nameof(AuditLog.TenantId));
diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditLogRepository_Tests.cs b/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditLogRepository_Tests.cs
index 0a56e3f398..17f365147d 100644
--- a/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditLogRepository_Tests.cs
+++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditLogRepository_Tests.cs
@@ -36,6 +36,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
@@ -87,6 +89,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId2,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
@@ -140,6 +144,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
@@ -191,6 +197,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId2,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
@@ -242,6 +250,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.SpecifyKind(DateTime.Parse("2020-01-01 01:00:00"), DateTimeKind.Utc),
ExecutionDuration = 45,
ClientIpAddress = ipAddress,
@@ -293,6 +303,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId2,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.SpecifyKind(DateTime.Parse("2020-01-01 03:00:00"), DateTimeKind.Utc),
ExecutionDuration = 55,
ClientIpAddress = ipAddress,
@@ -346,6 +358,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
@@ -397,6 +411,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId2,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
@@ -452,6 +468,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
@@ -503,6 +521,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId2,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
@@ -559,6 +579,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
@@ -610,6 +632,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId2,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
@@ -673,6 +697,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
@@ -723,6 +749,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId2,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
@@ -780,6 +808,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
@@ -831,6 +861,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId2,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
@@ -893,6 +925,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
@@ -944,6 +978,8 @@ public abstract class AuditLogRepository_Tests : AuditLoggingTes
UserId = userId2,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditStore_Basic_Tests.cs b/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditStore_Basic_Tests.cs
index 102456bc66..9174bfc6b9 100644
--- a/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditStore_Basic_Tests.cs
+++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditStore_Basic_Tests.cs
@@ -35,6 +35,8 @@ public abstract class AuditStore_Basic_Tests : AuditLoggingTestB
UserId = userId,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
@@ -90,6 +92,8 @@ public abstract class AuditStore_Basic_Tests : AuditLoggingTestB
UserId = userId,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,
@@ -141,6 +145,8 @@ public abstract class AuditStore_Basic_Tests : AuditLoggingTestB
UserId = userId,
ImpersonatorUserId = Guid.NewGuid(),
ImpersonatorTenantId = Guid.NewGuid(),
+ ImpersonatorTenantName = "default",
+ ImpersonatorUserName = "admin",
ExecutionTime = DateTime.Today,
ExecutionDuration = 42,
ClientIpAddress = ipAddress,