From 484ebd6d81ae02f3a2237db200dafacf16af6603 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Sat, 21 Feb 2015 17:13:01 -0700 Subject: [PATCH] Do not auto-recreate the default groups on startup --- TShockAPI/DB/GroupManager.cs | 49 ++++++++++++++++++------------------ TShockAPI/DB/SqlTable.cs | 5 +++- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/TShockAPI/DB/GroupManager.cs b/TShockAPI/DB/GroupManager.cs index cd0f6d87..41c96534 100644 --- a/TShockAPI/DB/GroupManager.cs +++ b/TShockAPI/DB/GroupManager.cs @@ -47,34 +47,35 @@ namespace TShockAPI.DB db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator()); - creator.EnsureExists(table); + if (creator.EnsureExists(table)) + { + // Add default groups if they don't exist + AddDefaultGroup("guest", "", + string.Join(",", Permissions.canbuild, Permissions.canregister, Permissions.canlogin, Permissions.canpartychat, + Permissions.cantalkinthird, Permissions.canchat)); + + AddDefaultGroup("default", "guest", + string.Join(",", Permissions.warp, Permissions.canchangepassword)); + + AddDefaultGroup("newadmin", "default", + string.Join(",", Permissions.kick, Permissions.editspawn, Permissions.reservedslot)); + + AddDefaultGroup("admin", "newadmin", + string.Join(",", Permissions.ban, Permissions.whitelist, "tshock.world.time.*", Permissions.spawnboss, + Permissions.spawnmob, Permissions.managewarp, Permissions.time, Permissions.tp, Permissions.slap, + Permissions.kill, Permissions.logs, + Permissions.immunetokick, Permissions.tpothers)); + + AddDefaultGroup("trustedadmin", "admin", + string.Join(",", Permissions.maintenance, "tshock.cfg.*", "tshock.world.*", Permissions.butcher, Permissions.item, + Permissions.heal, Permissions.immunetoban, Permissions.usebanneditem)); + + AddDefaultGroup("vip", "default", string.Join(",", Permissions.reservedslot)); + } // Load Permissions from the DB LoadPermisions(); - // Add default groups if they don't exist - AddDefaultGroup("guest", "", - string.Join(",", Permissions.canbuild, Permissions.canregister, Permissions.canlogin, Permissions.canpartychat, - Permissions.cantalkinthird, Permissions.canchat)); - - AddDefaultGroup("default", "guest", - string.Join(",", Permissions.warp, Permissions.canchangepassword)); - - AddDefaultGroup("newadmin", "default", - string.Join(",", Permissions.kick, Permissions.editspawn, Permissions.reservedslot)); - - AddDefaultGroup("admin", "newadmin", - string.Join(",", Permissions.ban, Permissions.whitelist, "tshock.world.time.*", Permissions.spawnboss, - Permissions.spawnmob, Permissions.managewarp, Permissions.time, Permissions.tp, Permissions.slap, - Permissions.kill, Permissions.logs, - Permissions.immunetokick, Permissions.tpothers)); - - AddDefaultGroup("trustedadmin", "admin", - string.Join(",", Permissions.maintenance, "tshock.cfg.*", "tshock.world.*", Permissions.butcher, Permissions.item, - Permissions.heal, Permissions.immunetoban, Permissions.usebanneditem)); - - AddDefaultGroup("vip", "default", string.Join(",", Permissions.reservedslot)); - Group.DefaultGroup = GetGroupByName(TShock.Config.DefaultGuestGroupName); } diff --git a/TShockAPI/DB/SqlTable.cs b/TShockAPI/DB/SqlTable.cs index 7fb62ed9..b7a77b91 100644 --- a/TShockAPI/DB/SqlTable.cs +++ b/TShockAPI/DB/SqlTable.cs @@ -52,7 +52,8 @@ namespace TShockAPI.DB creator = provider; } - public void EnsureExists(SqlTable table) + // Returns true if the table was created; false if it was not. + public bool EnsureExists(SqlTable table) { var columns = GetColumns(table); if (columns.Count > 0) @@ -66,7 +67,9 @@ namespace TShockAPI.DB else { database.Query(creator.CreateTable(table)); + return true; } + return false; } public List GetColumns(SqlTable table)