Client UUID Implementation: Bans and User Auth.

Send ServerSideCharacter flag if set in WorldInfo.
This commit is contained in:
Zidonuke Ghost 2013-10-01 04:35:49 -04:00
parent 2569c10823
commit b2a8198bb1
12 changed files with 158 additions and 26 deletions

View file

@ -404,17 +404,23 @@ namespace TShockAPI
User user = TShock.Users.GetUserByName(args.Player.Name);
string encrPass = "";
if (args.Parameters.Count == 1)
if (args.Parameters.Count == 0)
{
if (Hooks.PlayerHooks.OnPlayerPreLogin(args.Player, args.Player.Name, args.Parameters[0]))
return;
if (Hooks.PlayerHooks.OnPlayerPreLogin(args.Player, args.Player.Name, ""))
return;
user = TShock.Users.GetUserByName(args.Player.Name);
}
else if (args.Parameters.Count == 1)
{
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]);
}
else if (args.Parameters.Count == 2 && TShock.Config.AllowLoginAnyUsername)
{
if (Hooks.PlayerHooks.OnPlayerPreLogin(args.Player, args.Parameters[0], args.Parameters[1]))
return;
if (Hooks.PlayerHooks.OnPlayerPreLogin(args.Player, args.Parameters[0], args.Parameters[1]))
return;
user = TShock.Users.GetUserByName(args.Parameters[0]);
encrPass = TShock.Utils.HashPassword(args.Parameters[1]);
@ -426,7 +432,7 @@ namespace TShockAPI
}
else
{
args.Player.SendErrorMessage(String.Format("Syntax: /login{0} <password>", TShock.Config.AllowLoginAnyUsername ? " [username]" : " "));
args.Player.SendErrorMessage(String.Format("Syntax: /login{0} [password]", TShock.Config.AllowLoginAnyUsername ? " [username]" : " "));
args.Player.SendErrorMessage("If you forgot your password, there is no way to recover it.");
return;
}
@ -436,7 +442,7 @@ namespace TShockAPI
{
args.Player.SendErrorMessage("A user by that name does not exist.");
}
else if (user.Password.ToUpper() == encrPass.ToUpper())
else if (user.Password.ToUpper() == encrPass.ToUpper() || (user.UUID == args.Player.UUID && !TShock.Config.DisableUUIDLogin))
{
args.Player.PlayerData = TShock.InventoryDB.GetPlayerData(args.Player, TShock.Users.GetUserID(user.Name));
@ -489,6 +495,7 @@ namespace TShockAPI
args.Player.LoginHarassed = false;
}
TShock.Users.SetUserUUID(user, args.Player.UUID);
Hooks.PlayerHooks.OnPlayerPostLogin(args.Player);
}
@ -562,6 +569,7 @@ namespace TShockAPI
}
user.Group = TShock.Config.DefaultRegistrationGroupName; // FIXME -- we should get this from the DB. --Why?
user.UUID = args.Player.UUID;
if (TShock.Users.GetUserByName(user.Name) == null && user.Name != TSServerPlayer.AccountName) // Cheap way of checking for existance of a user
{
@ -959,7 +967,7 @@ namespace TShockAPI
string reason = args.Parameters.Count > 2
? String.Join(" ", args.Parameters.GetRange(2, args.Parameters.Count - 2))
: "Manually added IP address ban.";
TShock.Bans.AddBan(ip, "", reason, false, args.Player.UserAccountName);
TShock.Bans.AddBan(ip, "", "", reason, false, args.Player.UserAccountName);
args.Player.SendSuccessMessage(ip + " banned.");
return;
#endregion Add ip ban