Fixed order for permission resolving

This commit is contained in:
RogueException
2017-02-11 23:15:48 -04:00
parent e0a0d2100d
commit 70e8cea6e2

View File

@@ -118,6 +118,7 @@ namespace Discord
//Start with this user's guild permissions //Start with this user's guild permissions
resolvedPermissions = guildPermissions; resolvedPermissions = guildPermissions;
//Give/Take Role permissions
OverwritePermissions? perms; OverwritePermissions? perms;
var roleIds = user.RoleIds; var roleIds = user.RoleIds;
if (roleIds.Count > 0) if (roleIds.Count > 0)
@@ -128,15 +129,17 @@ namespace Discord
perms = channel.GetPermissionOverwrite(guild.GetRole(roleId)); perms = channel.GetPermissionOverwrite(guild.GetRole(roleId));
if (perms != null) if (perms != null)
{ {
deniedPermissions |= perms.Value.DenyValue;
allowedPermissions |= perms.Value.AllowValue; allowedPermissions |= perms.Value.AllowValue;
deniedPermissions |= perms.Value.DenyValue;
} }
} }
resolvedPermissions = (resolvedPermissions & ~deniedPermissions) | allowedPermissions; resolvedPermissions = (resolvedPermissions | allowedPermissions) & ~deniedPermissions;
} }
//Give/Take User permissions
perms = channel.GetPermissionOverwrite(user); perms = channel.GetPermissionOverwrite(user);
if (perms != null) if (perms != null)
resolvedPermissions = (resolvedPermissions & ~perms.Value.DenyValue) | perms.Value.AllowValue; resolvedPermissions = (resolvedPermissions | perms.Value.AllowValue) & ~perms.Value.DenyValue;
//TODO: C#7 Typeswitch candidate //TODO: C#7 Typeswitch candidate
var textChannel = channel as ITextChannel; var textChannel = channel as ITextChannel;