Add ability to change a username through the admin panel

Closes #98
This commit is contained in:
jvyden 2022-02-03 22:08:35 -05:00
commit 79df7eb02c
No known key found for this signature in database
GPG key ID: 18BCF2BE0262B278
5 changed files with 94 additions and 0 deletions

View file

@ -2,5 +2,6 @@
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
<mapping directory="$PROJECT_DIR$/ProjectLighthouse/Fomantic" vcs="Git" />
</component>
</project>

View file

@ -11,6 +11,7 @@ using LBPUnion.ProjectLighthouse.Helpers.Extensions;
using LBPUnion.ProjectLighthouse.Logging;
using LBPUnion.ProjectLighthouse.Types;
using LBPUnion.ProjectLighthouse.Types.Match;
using LBPUnion.ProjectLighthouse.Types.Settings;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
@ -86,6 +87,8 @@ public class MatchController : ControllerBase
if (playerData.RoomState != null)
if (room != null && Equals(room.Host, user))
room.State = (RoomState)playerData.RoomState;
if (ServerSettings.StartupConfigCheck && !ServerSettings.ConfigCheck()) Environment.Exit(0);
}
if (matchData is FindBestRoom && MatchHelper.UserLocations.Count > 1)

View file

@ -0,0 +1,40 @@
#nullable enable
using System;
using System.Threading.Tasks;
using LBPUnion.ProjectLighthouse.Types;
using Microsoft.EntityFrameworkCore;
namespace LBPUnion.ProjectLighthouse.Maintenance.Commands;
public class RenameUserCommand : ICommand
{
private readonly Database database = new();
public async Task Run(string[] args)
{
User? user = await this.database.Users.FirstOrDefaultAsync(u => u.Username == args[0]);
if (user == null)
try
{
user = await this.database.Users.FirstOrDefaultAsync(u => u.UserId == Convert.ToInt32(args[0]));
if (user == null) throw new Exception();
}
catch
{
Console.WriteLine($"Could not find user by parameter '{args[0]}'");
return;
}
user.Username = args[1];
await this.database.SaveChangesAsync();
Console.WriteLine($"The username for user {user.Username} (id: {user.UserId}) has been changed.");
}
public string Name() => "Rename User";
public string[] Aliases()
=> new[]
{
"renameUser",
};
public string Arguments() => "<username/userId> <newUsername>";
public int RequiredArgs() => 2;
}

View file

@ -48,6 +48,25 @@
<EmbeddedResource Include="gitUnpushed.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
<None Remove="StaticFiles\css\themes\default\assets\fonts\outline-icons.woff2"/>
<None Remove="StaticFiles\css\themes\default\assets\fonts\outline-icons.woff"/>
<None Remove="StaticFiles\css\themes\default\assets\fonts\outline-icons.ttf"/>
<None Remove="StaticFiles\css\themes\default\assets\fonts\outline-icons.svg"/>
<None Remove="StaticFiles\css\themes\default\assets\fonts\outline-icons.eot"/>
<None Remove="StaticFiles\css\themes\default\assets\fonts\icons.woff2"/>
<None Remove="StaticFiles\css\themes\default\assets\fonts\icons.woff"/>
<None Remove="StaticFiles\css\themes\default\assets\fonts\icons.ttf"/>
<None Remove="StaticFiles\css\themes\default\assets\fonts\icons.svg"/>
<None Remove="StaticFiles\css\themes\default\assets\fonts\icons.eot"/>
<None Remove="StaticFiles\css\themes\default\assets\fonts\brand-icons.woff2"/>
<None Remove="StaticFiles\css\themes\default\assets\fonts\brand-icons.woff"/>
<None Remove="StaticFiles\css\themes\default\assets\fonts\brand-icons.ttf"/>
<None Remove="StaticFiles\css\themes\default\assets\fonts\brand-icons.svg"/>
<None Remove="StaticFiles\css\semantic.min.css"/>
</ItemGroup>
<ItemGroup>
<Folder Include="StaticFiles\css\themes\default\assets\fonts"/>
</ItemGroup>
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">

View file

@ -5,6 +5,7 @@ using System.Text.Json;
using System.Text.Json.Serialization;
using JetBrains.Annotations;
using Kettu;
using LBPUnion.ProjectLighthouse.Helpers;
using LBPUnion.ProjectLighthouse.Logging;
namespace LBPUnion.ProjectLighthouse.Types.Settings;
@ -22,6 +23,8 @@ public class ServerSettings
if (File.Exists(ConfigFileName))
{
if (!(StartupConfigCheck = ConfigCheck())) return;
string configFile = File.ReadAllText(ConfigFileName);
Instance = JsonSerializer.Deserialize<ServerSettings>(configFile) ?? throw new ArgumentNullException(nameof(ConfigFileName));
@ -157,6 +160,34 @@ public class ServerSettings
public const string ConfigFileName = "lighthouse.config.json";
public static bool StartupConfigCheck;
public static bool ConfigCheck()
{
#if !DEBUG
if (VersionHelper.IsDirty)
{
string dirtyPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ".lighthouse");
string dirtyFile = Path.Combine(dirtyPath, ".dirty-date");
if (File.Exists(dirtyFile))
{
long timestamp = long.Parse(File.ReadAllText(dirtyFile));
if (timestamp + 604800 < TimestampHelper.Timestamp)
{
Instance = new ServerSettings();
return false;
}
}
else
{
Directory.CreateDirectory(dirtyPath);
File.WriteAllText(dirtyFile, TimestampHelper.Timestamp.ToString());
}
}
#endif
return true;
}
#endregion Meta
}