Client UUID Implementation: Bans and User Auth.
Send ServerSideCharacter flag if set in WorldInfo.
This commit is contained in:
parent
2569c10823
commit
b2a8198bb1
12 changed files with 158 additions and 26 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue