Add PlayerPermission hook, replace p.Group.HasPermission by p.HasPermission everywhere possible.

This commit is contained in:
Enerdy 2016-01-11 14:33:44 +00:00
parent 21f16e5908
commit aa419283a9
13 changed files with 467 additions and 232 deletions

View file

@ -162,13 +162,13 @@ namespace TShockAPI.DB
if (!player.IsLoggedIn)
return false;
if ((player.tempGroup != null && player.tempGroup.HasPermission(Permissions.bypassssc)) || player.Group.HasPermission(Permissions.bypassssc))
{
TShock.Log.ConsoleInfo("Skipping SSC Backup for " + player.User.Name); // Debug code
return true;
}
if (player.HasPermission(Permissions.bypassssc))
{
TShock.Log.ConsoleInfo("Skipping SSC Backup for " + player.User.Name); // Debug code
return true;
}
if (!GetPlayerData(player, player.User.ID).exists)
{
try

View file

@ -192,32 +192,32 @@ namespace TShockAPI.DB
return Name == other.Name;
}
public bool HasPermissionToUseItem(TSPlayer ply)
{
if (ply == null)
return false;
public bool HasPermissionToUseItem(TSPlayer ply)
{
if (ply == null)
return false;
if (ply.Group.HasPermission(Permissions.usebanneditem))
return true;
if (ply.HasPermission(Permissions.usebanneditem))
return true;
var cur = ply.Group;
var traversed = new List<Group>();
while (cur != null)
{
if (AllowedGroups.Contains(cur.Name))
{
return true;
}
if (traversed.Contains(cur))
{
throw new InvalidOperationException("Infinite group parenting ({0})".SFormat(cur.Name));
}
traversed.Add(cur);
cur = cur.Parent;
}
return false;
// could add in the other permissions in this class instead of a giant if switch.
}
var cur = ply.Group;
var traversed = new List<Group>();
while (cur != null)
{
if (AllowedGroups.Contains(cur.Name))
{
return true;
}
if (traversed.Contains(cur))
{
throw new InvalidOperationException("Infinite group parenting ({0})".SFormat(cur.Name));
}
traversed.Add(cur);
cur = cur.Parent;
}
return false;
// could add in the other permissions in this class instead of a giant if switch.
}
public void SetAllowedGroups(String groups)
{

View file

@ -202,7 +202,7 @@ namespace TShockAPI.DB
if (ply == null)
return false;
if (ply.Group.HasPermission(Permissions.canusebannedprojectiles))
if (ply.HasPermission(Permissions.canusebannedprojectiles))
return true;
var cur = ply.Group;

View file

@ -210,7 +210,7 @@ namespace TShockAPI.DB
public bool CanBuild(int x, int y, TSPlayer ply)
{
if (!ply.Group.HasPermission(Permissions.canbuild))
if (!ply.HasPermission(Permissions.canbuild))
{
return false;
}

View file

@ -202,7 +202,7 @@ namespace TShockAPI.DB
if (ply == null)
return false;
if (ply.Group.HasPermission(Permissions.canusebannedtiles))
if (ply.HasPermission(Permissions.canusebannedtiles))
return true;
var cur = ply.Group;