diff --git a/ReallifeGamemode.Server/Commands/AdminCommands.cs b/ReallifeGamemode.Server/Commands/AdminCommands.cs index 83e38343..f70570b9 100644 --- a/ReallifeGamemode.Server/Commands/AdminCommands.cs +++ b/ReallifeGamemode.Server/Commands/AdminCommands.cs @@ -1774,6 +1774,46 @@ namespace ReallifeGamemode.Server.Commands Medic.AddTaskToList(reviveTask); }*/ + [Command("resetpw", "~m~Benutzung: ~s~/resetpw [Spieler]")] + public void CmdAdminResetPw(Player player, string targetName) + { + if (!player.GetUser().IsAdmin(AdminLevel.HEADADMIN)) + { + ChatService.NotAuthorized(player); + return; + } + + Player targetPlayer = PlayerService.GetPlayerByNameOrId(targetName); + if (targetPlayer != null && targetPlayer.IsLoggedIn()) + { + ChatService.ErrorMessage(player, "Dieser Spieler ist bereits eingeloggt"); + return; + } + + User targetUser; + string password; + + using (var dbContext = new DatabaseContext()) + { + targetUser = dbContext.Users.FirstOrDefault(u => u.Name == targetName); + + if (targetUser == null) + { + ChatService.ErrorMessage(player, "Dieser Spieler existiert nicht"); + return; + } + + password = new Random().Next(000000, 999999 + 1).ToString(); + targetUser.Password = NAPI.Util.GetHashSha256(password); + dbContext.SaveChanges(); + } + + ChatService.SendMessage(player, $"~b~[ADMIN] ~s~Du hast das Passwort von ~b~{targetUser.Name} ~s~geändert ('{password}')."); + ChatService.SendMessage(player, $"~b~[ADMIN] ~s~Wichtig: Der Spieler soll im Anschluss mit '/changepw [Alt] [Neu]' das Passwort ändern!"); + ChatService.BroadcastAdmin($"~b~[ADMIN] ~s~Das Passwort von ~b~{targetUser.Name} ~s~wurde von ~b~{player.Name} ~s~zurückgesetzt.", AdminLevel.HEADADMIN); + logger.LogInformation("Admin {0} reset the password of {1} to '{2}'", player.Name, targetUser.Name, password); + } + [Command("setblipcolor", "~m~Benutzung:~s~ /setblipcolor [ID]")] public void CmdAdmSetBlipColor(Player player, int blipId) {