diff --git a/Oqtane.Server/Controllers/UserController.cs b/Oqtane.Server/Controllers/UserController.cs index b63f644b..6d146758 100644 --- a/Oqtane.Server/Controllers/UserController.cs +++ b/Oqtane.Server/Controllers/UserController.cs @@ -28,9 +28,10 @@ namespace Oqtane.Controllers private readonly IJwtManager _jwtManager; private readonly IFileRepository _files; private readonly ISettingRepository _settings; + private readonly ISyncManager _syncManager; private readonly ILogManager _logger; - public UserController(IUserRepository users, ITenantManager tenantManager, IUserManager userManager, ISiteRepository sites, IUserPermissions userPermissions, IJwtManager jwtManager, IFileRepository files, ISettingRepository settings, ILogManager logger) + public UserController(IUserRepository users, ITenantManager tenantManager, IUserManager userManager, ISiteRepository sites, IUserPermissions userPermissions, IJwtManager jwtManager, IFileRepository files, ISettingRepository settings, ISyncManager syncManager, ILogManager logger) { _users = users; _tenantManager = tenantManager; @@ -40,6 +41,7 @@ namespace Oqtane.Controllers _jwtManager = jwtManager; _files = files; _settings = settings; + _syncManager = syncManager; _logger = logger; } @@ -253,6 +255,7 @@ namespace Oqtane.Controllers if (_userPermissions.GetUser(User).UserId == user.UserId) { await HttpContext.SignOutAsync(Constants.AuthenticationScheme); + _syncManager.AddSyncEvent(_tenantManager.GetAlias(), EntityNames.User, user.UserId, "Logout"); _logger.Log(LogLevel.Information, this, LogFunction.Security, "User Logout {Username}", (user != null) ? user.Username : ""); } } @@ -266,6 +269,7 @@ namespace Oqtane.Controllers { await _userManager.LogoutUserEverywhere(user); await HttpContext.SignOutAsync(Constants.AuthenticationScheme); + _syncManager.AddSyncEvent(_tenantManager.GetAlias(), EntityNames.User, user.UserId, "Logout"); _logger.Log(LogLevel.Information, this, LogFunction.Security, "User Logout Everywhere {Username}", (user != null) ? user.Username : ""); } } diff --git a/Oqtane.Server/Extensions/OqtaneSiteAuthenticationBuilderExtensions.cs b/Oqtane.Server/Extensions/OqtaneSiteAuthenticationBuilderExtensions.cs index cb0303e6..56b0d3bd 100644 --- a/Oqtane.Server/Extensions/OqtaneSiteAuthenticationBuilderExtensions.cs +++ b/Oqtane.Server/Extensions/OqtaneSiteAuthenticationBuilderExtensions.cs @@ -645,6 +645,9 @@ namespace Oqtane.Extensions } } + var _syncManager = httpContext.RequestServices.GetRequiredService(); + _syncManager.AddSyncEvent(alias, EntityNames.User, user.UserId, "Login"); + _logger.Log(LogLevel.Information, "ExternalLogin", Enums.LogFunction.Security, "External User Login Successful For {Username} From IP Address {IPAddress} Using Provider {Provider}", user.Username, httpContext.Connection.RemoteIpAddress.ToString(), providerName); } } diff --git a/Oqtane.Server/Managers/UserManager.cs b/Oqtane.Server/Managers/UserManager.cs index 5b68eeb2..7745f429 100644 --- a/Oqtane.Server/Managers/UserManager.cs +++ b/Oqtane.Server/Managers/UserManager.cs @@ -374,6 +374,8 @@ namespace Oqtane.Managers _users.UpdateUser(user); _logger.Log(LogLevel.Information, this, LogFunction.Security, "User Login Successful For {Username} From IP Address {IPAddress}", user.Username, LastIPAddress); + _syncManager.AddSyncEvent(alias, EntityNames.User, user.UserId, "Login"); + if (setCookie) { await _identitySignInManager.SignInAsync(identityuser, isPersistent); diff --git a/Oqtane.Server/Pages/Logout.cshtml.cs b/Oqtane.Server/Pages/Logout.cshtml.cs index 42334416..5d16ea84 100644 --- a/Oqtane.Server/Pages/Logout.cshtml.cs +++ b/Oqtane.Server/Pages/Logout.cshtml.cs @@ -35,6 +35,7 @@ namespace Oqtane.Pages { await _userManager.LogoutUserEverywhere(user); } + _syncManager.AddSyncEvent(alias, EntityNames.User, user.UserId, "Logout"); _syncManager.AddSyncEvent(alias, EntityNames.User, user.UserId, SyncEventActions.Reload); }