diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs
index e048b58d..0d6c7275 100755
--- a/TShockAPI/Commands.cs
+++ b/TShockAPI/Commands.cs
@@ -740,7 +740,7 @@ namespace TShockAPI
}
User user = TShock.Users.GetUserByName(args.Player.Name);
- string encrPass = "";
+ string password = "";
bool usingUUID = false;
if (args.Parameters.Count == 0 && !TShock.Config.DisableUUIDLogin)
{
@@ -754,7 +754,7 @@ namespace TShockAPI
if (Hooks.PlayerHooks.OnPlayerPreLogin(args.Player, args.Player.Name, args.Parameters[0]))
return;
user = TShock.Users.GetUserByName(args.Player.Name);
- encrPass = TShock.Utils.HashPassword(args.Parameters[0]);
+ password = args.Parameters[0];
}
else if (args.Parameters.Count == 2 && TShock.Config.AllowLoginAnyUsername)
{
@@ -762,7 +762,7 @@ namespace TShockAPI
return;
user = TShock.Users.GetUserByName(args.Parameters[0]);
- encrPass = TShock.Utils.HashPassword(args.Parameters[1]);
+ password = args.Parameters[1];
if (String.IsNullOrEmpty(args.Parameters[0]))
{
args.Player.SendErrorMessage("Bad login attempt.");
@@ -783,7 +783,7 @@ namespace TShockAPI
{
args.Player.SendErrorMessage("A user by that name does not exist.");
}
- else if (user.Password.ToUpper() == encrPass.ToUpper() ||
+ else if (user.VerifyPassword(password) ||
(usingUUID && user.UUID == args.Player.UUID && !TShock.Config.DisableUUIDLogin &&
!String.IsNullOrWhiteSpace(args.Player.UUID)))
{
@@ -888,8 +888,8 @@ namespace TShockAPI
if (args.Player.IsLoggedIn && args.Parameters.Count == 2)
{
var user = TShock.Users.GetUserByName(args.Player.UserAccountName);
- string encrPass = TShock.Utils.HashPassword(args.Parameters[0]);
- if (user.Password.ToUpper() == encrPass.ToUpper())
+ string password = args.Parameters[0];
+ if (user.VerifyPassword(password))
{
args.Player.SendSuccessMessage("You changed your password!");
TShock.Users.SetUserPassword(user, args.Parameters[1]); // SetUserPassword will hash it for you.
diff --git a/TShockAPI/DB/UserManager.cs b/TShockAPI/DB/UserManager.cs
index 571fd0d7..713da3cd 100755
--- a/TShockAPI/DB/UserManager.cs
+++ b/TShockAPI/DB/UserManager.cs
@@ -115,7 +115,7 @@ namespace TShockAPI.DB
try
{
if (
- database.Query("UPDATE Users SET Password = @0 WHERE Username = @1;", TShock.Utils.HashPassword(password),
+ database.Query("UPDATE Users SET Password = @0 WHERE Username = @1;", user.Password,
user.Name) == 0)
throw new UserNotExistException(user.Name);
}
diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs
index cfda3486..3599267b 100755
--- a/TShockAPI/GetDataHandlers.cs
+++ b/TShockAPI/GetDataHandlers.cs
@@ -1512,8 +1512,7 @@ namespace TShockAPI
var user = TShock.Users.GetUserByName(args.Player.Name);
if (user != null && !TShock.Config.DisableLoginBeforeJoin)
{
- string encrPass = TShock.Utils.HashPassword(password);
- if (user.Password.ToUpper() == encrPass.ToUpper())
+ if (user.VerifyPassword(password))
{
args.Player.RequiresPassword = false;
args.Player.PlayerData = TShock.CharacterDB.GetPlayerData(args.Player, TShock.Users.GetUserID(args.Player.Name));
diff --git a/TShockAPI/Rest/SecureRest.cs b/TShockAPI/Rest/SecureRest.cs
index 0913a87d..ee33e5a6 100644
--- a/TShockAPI/Rest/SecureRest.cs
+++ b/TShockAPI/Rest/SecureRest.cs
@@ -132,7 +132,7 @@ namespace Rests
if (userAccount == null)
return new RestObject("401") { Error = "Invalid username/password combination provided. Please re-submit your query with a correct pair." };
- if (!TShock.Utils.HashPassword(password).Equals(userAccount.Password, StringComparison.InvariantCultureIgnoreCase))
+ if (!userAccount.VerifyPassword(password))
return new RestObject("401")
{ Error = "Invalid username/password combination provided. Please re-submit your query with a correct pair." };
diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs
index bdb82b9c..f73386e4 100644
--- a/TShockAPI/Utils.cs
+++ b/TShockAPI/Utils.cs
@@ -723,7 +723,7 @@ namespace TShockAPI
///
/// Default hashing algorithm.
///
- [Obsolete("This is no longer necessary, please use TShock.Config.HashAlgorithm instead.")]
+ [Obsolete("This is no longer necessary, please use TShock.Config.HashAlgorithm instead if you really need it (but use User.VerifyPassword(password)) for verifying passwords.")]
public string HashAlgo = "sha512";
///