Don't catch the exceptions we throw in SetUserGroup

For some reason, we were catching our own exceptions and then
throwing UesrManagerExceptions despite the fact that we explicitly
threw more specific exceptions.

Fixes #1315.
This commit is contained in:
Lucas Nicodemus 2016-10-23 05:49:01 -06:00
parent 6151c86630
commit b15dfbc1ec
No known key found for this signature in database
GPG key ID: CEE668CCE1BF2C7C
2 changed files with 8 additions and 7 deletions

View file

@ -15,6 +15,7 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin
* `/status`
* `/v2/players/read`
* `/v2/server/rawcmd` (@WhiteXZ).
* Fixed `/user group` always giving an unhelpful error messaging telling you to check the console, even if we knew exactly why it failed (@nicatronTg).
## TShock 4.3.20
* Security improvement: The auth system is now automatically disabled if a superadmin exists in the database (@Enerdy).

View file

@ -158,15 +158,15 @@ namespace TShockAPI.DB
/// <param name="group">string group</param>
public void SetUserGroup(User user, string group)
{
Group grp = TShock.Groups.GetGroupByName(group);
if (null == grp)
throw new GroupNotExistsException(group);
if (_database.Query("UPDATE Users SET UserGroup = @0 WHERE Username = @1;", group, user.Name) == 0)
throw new UserNotExistException(user.Name);
try
{
Group grp = TShock.Groups.GetGroupByName(group);
if (null == grp)
throw new GroupNotExistsException(group);
if (_database.Query("UPDATE Users SET UserGroup = @0 WHERE Username = @1;", group, user.Name) == 0)
throw new UserNotExistException(user.Name);
// Update player group reference for any logged in player
foreach (var player in TShock.Players.Where(p => p != null && p.User != null && p.User.Name == user.Name))
{