diff --git a/SharedLibraryCore/BaseController.cs b/SharedLibraryCore/BaseController.cs
index c9107042..fa92c424 100644
--- a/SharedLibraryCore/BaseController.cs
+++ b/SharedLibraryCore/BaseController.cs
@@ -61,7 +61,7 @@ namespace SharedLibraryCore
Client ??= new EFClient()
{
ClientId = -1,
- Level = EFClient.Permission.User,
+ Level = EFClient.Permission.Banned,
CurrentAlias = new EFAlias() { Name = "Webfront Guest" }
};
}
diff --git a/SharedLibraryCore/Events/GameEvent.cs b/SharedLibraryCore/Events/GameEvent.cs
index 974617b5..2248b02e 100644
--- a/SharedLibraryCore/Events/GameEvent.cs
+++ b/SharedLibraryCore/Events/GameEvent.cs
@@ -151,6 +151,14 @@ namespace SharedLibraryCore
/// a client's permission was changed
///
ChangePermission = 111,
+ ///
+ /// client logged in to webfront
+ ///
+ Login = 112,
+ ///
+ /// client logged out of webfront
+ ///
+ Logout = 113,
// events "generated" by IW4MAdmin
///
diff --git a/SharedLibraryCore/Services/ChangeHistoryService.cs b/SharedLibraryCore/Services/ChangeHistoryService.cs
index 4aa4a3f6..3f6580ec 100644
--- a/SharedLibraryCore/Services/ChangeHistoryService.cs
+++ b/SharedLibraryCore/Services/ChangeHistoryService.cs
@@ -66,7 +66,23 @@ namespace SharedLibraryCore.Services
CurrentValue = ((EFClient.Permission)e.Extra).ToString()
};
break;
- default:
+ case GameEvent.EventType.Login:
+ change = new EFChangeHistory()
+ {
+ OriginEntityId = e.Origin.ClientId,
+ Comment = "Logged In To Webfront",
+ TypeOfChange = EFChangeHistory.ChangeType.Command,
+ CurrentValue = e.Data
+ };
+ break;
+ case GameEvent.EventType.Logout:
+ change = new EFChangeHistory()
+ {
+ OriginEntityId = e.Origin.ClientId,
+ Comment = "Logged Out of Webfront",
+ TypeOfChange = EFChangeHistory.ChangeType.Command,
+ CurrentValue = e.Data
+ };
break;
}
diff --git a/WebfrontCore/Controllers/API/ClientController.cs b/WebfrontCore/Controllers/API/ClientController.cs
index 14a8eca7..f01de4e3 100644
--- a/WebfrontCore/Controllers/API/ClientController.cs
+++ b/WebfrontCore/Controllers/API/ClientController.cs
@@ -119,6 +119,14 @@ namespace WebfrontCore.Controllers.API
var claimsIdentity = new ClaimsIdentity(claims, "login");
var claimsPrinciple = new ClaimsPrincipal(claimsIdentity);
await SignInAsync(claimsPrinciple);
+
+ Manager.AddEvent(new GameEvent()
+ {
+ Origin = privilegedClient,
+ Type = GameEvent.EventType.Login,
+ Owner = Manager.GetServers().First(),
+ Data = HttpContext.Connection.RemoteIpAddress.ToString()
+ });
return Ok();
}
@@ -137,6 +145,17 @@ namespace WebfrontCore.Controllers.API
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task LogoutAsync()
{
+ if (Authorized)
+ {
+ Manager.AddEvent(new GameEvent()
+ {
+ Origin = Client,
+ Type = GameEvent.EventType.Logout,
+ Owner = Manager.GetServers().First(),
+ Data = HttpContext.Connection.RemoteIpAddress.ToString()
+ });
+ }
+
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
return Ok();
diff --git a/WebfrontCore/Controllers/AccountController.cs b/WebfrontCore/Controllers/AccountController.cs
index 6041e9c8..cd80294e 100644
--- a/WebfrontCore/Controllers/AccountController.cs
+++ b/WebfrontCore/Controllers/AccountController.cs
@@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Mvc;
using SharedLibraryCore;
using SharedLibraryCore.Interfaces;
using System;
+using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks;
@@ -50,6 +51,14 @@ namespace WebfrontCore.Controllers
var claimsIdentity = new ClaimsIdentity(claims, "login");
var claimsPrinciple = new ClaimsPrincipal(claimsIdentity);
await SignInAsync(claimsPrinciple);
+
+ Manager.AddEvent(new GameEvent()
+ {
+ Origin = privilegedClient,
+ Type = GameEvent.EventType.Login,
+ Owner = Manager.GetServers().First(),
+ Data = HttpContext.Connection.RemoteIpAddress.ToString()
+ });
return Ok();
}
@@ -66,6 +75,17 @@ namespace WebfrontCore.Controllers
[HttpGet]
public async Task LogoutAsync()
{
+ if (Authorized)
+ {
+ Manager.AddEvent(new GameEvent()
+ {
+ Origin = Client,
+ Type = GameEvent.EventType.Logout,
+ Owner = Manager.GetServers().First(),
+ Data = HttpContext.Connection.RemoteIpAddress.ToString()
+ });
+ }
+
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
return RedirectToAction("Index", "Home");
}