From 68a523f76a8d5ef84c8ff0d78f0c5bd41598c211 Mon Sep 17 00:00:00 2001 From: flashwave Date: Fri, 17 May 2024 23:50:22 +0000 Subject: [PATCH] Use HasFlag instead of custom Can method. --- SharpChat/ChatContext.cs | 2 +- SharpChat/ChatUser.cs | 5 ----- SharpChat/Commands/BanListCommand.cs | 3 ++- SharpChat/Commands/ChannelCreateCommand.cs | 4 ++-- SharpChat/Commands/ChannelDeleteCommand.cs | 2 +- SharpChat/Commands/ChannelPasswordCommand.cs | 2 +- SharpChat/Commands/ChannelRankCommand.cs | 2 +- SharpChat/Commands/KickBanCommand.cs | 2 +- SharpChat/Commands/MessageBroadcastCommand.cs | 2 +- SharpChat/Commands/MessageDeleteCommand.cs | 4 ++-- SharpChat/Commands/PardonAddressCommand.cs | 3 ++- SharpChat/Commands/PardonUserCommand.cs | 3 ++- SharpChat/Commands/UserNickCommand.cs | 4 ++-- SharpChat/Commands/WhoCommand.cs | 2 +- SharpChat/Commands/WhoisCommand.cs | 2 +- SharpChat/Packet/MessagePopulatePacket.cs | 12 ++++++------ SharpChat/PacketHandlers/SendMessageHandler.cs | 2 +- 17 files changed, 27 insertions(+), 29 deletions(-) diff --git a/SharpChat/ChatContext.cs b/SharpChat/ChatContext.cs index 37deb7c..09b4ec6 100644 --- a/SharpChat/ChatContext.cs +++ b/SharpChat/ChatContext.cs @@ -295,7 +295,7 @@ namespace SharpChat { return; } - if(!user.Can(ChatUserPermissions.JoinAnyChannel) && chan.IsOwner(user)) { + if(!user.Permissions.HasFlag(ChatUserPermissions.JoinAnyChannel) && chan.IsOwner(user)) { if(chan.Rank > user.Rank) { SendTo(user, new ChannelRankTooLowErrorPacket(chan.Name)); ForceChannel(user); diff --git a/SharpChat/ChatUser.cs b/SharpChat/ChatUser.cs index 57e7071..d8c0983 100644 --- a/SharpChat/ChatUser.cs +++ b/SharpChat/ChatUser.cs @@ -54,11 +54,6 @@ namespace SharpChat { IsSuper = isSuper; } - public bool Can(ChatUserPermissions perm, bool strict = false) { - ChatUserPermissions perms = Permissions & perm; - return strict ? perms == perm : perms > 0; - } - public bool NameEquals(string? name) { return string.Equals(name, UserName, StringComparison.InvariantCultureIgnoreCase) || string.Equals(name, NickName, StringComparison.InvariantCultureIgnoreCase) diff --git a/SharpChat/Commands/BanListCommand.cs b/SharpChat/Commands/BanListCommand.cs index 47b0d61..38ea8cd 100644 --- a/SharpChat/Commands/BanListCommand.cs +++ b/SharpChat/Commands/BanListCommand.cs @@ -18,7 +18,8 @@ namespace SharpChat.Commands { } public void Dispatch(ChatCommandContext ctx) { - if(!ctx.User.Can(ChatUserPermissions.BanUser | ChatUserPermissions.KickUser)) { + if(!ctx.User.Permissions.HasFlag(ChatUserPermissions.KickUser) + && !ctx.User.Permissions.HasFlag(ChatUserPermissions.BanUser)) { ctx.Chat.SendTo(ctx.User, new CommandNotAllowedErrorPacket(ctx.Name)); return; } diff --git a/SharpChat/Commands/ChannelCreateCommand.cs b/SharpChat/Commands/ChannelCreateCommand.cs index 3eec3e5..1cded6d 100644 --- a/SharpChat/Commands/ChannelCreateCommand.cs +++ b/SharpChat/Commands/ChannelCreateCommand.cs @@ -8,7 +8,7 @@ namespace SharpChat.Commands { } public void Dispatch(ChatCommandContext ctx) { - if(!ctx.User.Can(ChatUserPermissions.CreateChannel)) { + if(!ctx.User.Permissions.HasFlag(ChatUserPermissions.CreateChannel)) { ctx.Chat.SendTo(ctx.User, new CommandNotAllowedErrorPacket(ctx.Name)); return; } @@ -45,7 +45,7 @@ namespace SharpChat.Commands { ChatChannel createChan = new( ctx.User, createChanName, - isTemporary: !ctx.User.Can(ChatUserPermissions.SetChannelPermanent), + isTemporary: !ctx.User.Permissions.HasFlag(ChatUserPermissions.SetChannelPermanent), rank: createChanHierarchy ); diff --git a/SharpChat/Commands/ChannelDeleteCommand.cs b/SharpChat/Commands/ChannelDeleteCommand.cs index 6cb65b5..f1094bc 100644 --- a/SharpChat/Commands/ChannelDeleteCommand.cs +++ b/SharpChat/Commands/ChannelDeleteCommand.cs @@ -24,7 +24,7 @@ namespace SharpChat.Commands { return; } - if(!ctx.User.Can(ChatUserPermissions.DeleteChannel) && delChan.IsOwner(ctx.User)) { + if(!ctx.User.Permissions.HasFlag(ChatUserPermissions.DeleteChannel) || !delChan.IsOwner(ctx.User)) { ctx.Chat.SendTo(ctx.User, new ChannelDeleteNotAllowedErrorPacket(delChan.Name)); return; } diff --git a/SharpChat/Commands/ChannelPasswordCommand.cs b/SharpChat/Commands/ChannelPasswordCommand.cs index f418464..b389230 100644 --- a/SharpChat/Commands/ChannelPasswordCommand.cs +++ b/SharpChat/Commands/ChannelPasswordCommand.cs @@ -8,7 +8,7 @@ namespace SharpChat.Commands { } public void Dispatch(ChatCommandContext ctx) { - if(!ctx.User.Can(ChatUserPermissions.SetChannelPassword) || ctx.Channel.IsOwner(ctx.User)) { + if(!ctx.User.Permissions.HasFlag(ChatUserPermissions.SetChannelPassword) || !ctx.Channel.IsOwner(ctx.User)) { ctx.Chat.SendTo(ctx.User, new CommandNotAllowedErrorPacket(ctx.Name)); return; } diff --git a/SharpChat/Commands/ChannelRankCommand.cs b/SharpChat/Commands/ChannelRankCommand.cs index 58907c0..0290883 100644 --- a/SharpChat/Commands/ChannelRankCommand.cs +++ b/SharpChat/Commands/ChannelRankCommand.cs @@ -10,7 +10,7 @@ namespace SharpChat.Commands { } public void Dispatch(ChatCommandContext ctx) { - if(!ctx.User.Can(ChatUserPermissions.SetChannelHierarchy) || ctx.Channel.IsOwner(ctx.User)) { + if(!ctx.User.Permissions.HasFlag(ChatUserPermissions.SetChannelHierarchy) || !ctx.Channel.IsOwner(ctx.User)) { ctx.Chat.SendTo(ctx.User, new CommandNotAllowedErrorPacket(ctx.Name)); return; } diff --git a/SharpChat/Commands/KickBanCommand.cs b/SharpChat/Commands/KickBanCommand.cs index f37bf67..60e887b 100644 --- a/SharpChat/Commands/KickBanCommand.cs +++ b/SharpChat/Commands/KickBanCommand.cs @@ -20,7 +20,7 @@ namespace SharpChat.Commands { public void Dispatch(ChatCommandContext ctx) { bool isBanning = ctx.NameEquals("ban"); - if(!ctx.User.Can(isBanning ? ChatUserPermissions.BanUser : ChatUserPermissions.KickUser)) { + if(!ctx.User.Permissions.HasFlag(isBanning ? ChatUserPermissions.BanUser : ChatUserPermissions.KickUser)) { ctx.Chat.SendTo(ctx.User, new CommandNotAllowedErrorPacket(ctx.Name)); return; } diff --git a/SharpChat/Commands/MessageBroadcastCommand.cs b/SharpChat/Commands/MessageBroadcastCommand.cs index 610330c..c69a071 100644 --- a/SharpChat/Commands/MessageBroadcastCommand.cs +++ b/SharpChat/Commands/MessageBroadcastCommand.cs @@ -10,7 +10,7 @@ namespace SharpChat.Commands { } public void Dispatch(ChatCommandContext ctx) { - if(!ctx.User.Can(ChatUserPermissions.Broadcast)) { + if(!ctx.User.Permissions.HasFlag(ChatUserPermissions.Broadcast)) { ctx.Chat.SendTo(ctx.User, new CommandNotAllowedErrorPacket(ctx.Name)); return; } diff --git a/SharpChat/Commands/MessageDeleteCommand.cs b/SharpChat/Commands/MessageDeleteCommand.cs index 092c126..1b9b1df 100644 --- a/SharpChat/Commands/MessageDeleteCommand.cs +++ b/SharpChat/Commands/MessageDeleteCommand.cs @@ -13,9 +13,9 @@ namespace SharpChat.Commands } public void Dispatch(ChatCommandContext ctx) { - bool deleteAnyMessage = ctx.User.Can(ChatUserPermissions.DeleteAnyMessage); + bool deleteAnyMessage = ctx.User.Permissions.HasFlag(ChatUserPermissions.DeleteAnyMessage); - if(!deleteAnyMessage && !ctx.User.Can(ChatUserPermissions.DeleteOwnMessage)) { + if(!deleteAnyMessage && !ctx.User.Permissions.HasFlag(ChatUserPermissions.DeleteOwnMessage)) { ctx.Chat.SendTo(ctx.User, new CommandNotAllowedErrorPacket(ctx.Name)); return; } diff --git a/SharpChat/Commands/PardonAddressCommand.cs b/SharpChat/Commands/PardonAddressCommand.cs index a41447c..fb4e87d 100644 --- a/SharpChat/Commands/PardonAddressCommand.cs +++ b/SharpChat/Commands/PardonAddressCommand.cs @@ -19,7 +19,8 @@ namespace SharpChat.Commands { } public void Dispatch(ChatCommandContext ctx) { - if(!ctx.User.Can(ChatUserPermissions.BanUser | ChatUserPermissions.KickUser)) { + if(!ctx.User.Permissions.HasFlag(ChatUserPermissions.KickUser) + && !ctx.User.Permissions.HasFlag(ChatUserPermissions.BanUser)) { ctx.Chat.SendTo(ctx.User, new CommandNotAllowedErrorPacket(ctx.Name)); return; } diff --git a/SharpChat/Commands/PardonUserCommand.cs b/SharpChat/Commands/PardonUserCommand.cs index 86cd39c..ed861ff 100644 --- a/SharpChat/Commands/PardonUserCommand.cs +++ b/SharpChat/Commands/PardonUserCommand.cs @@ -18,7 +18,8 @@ namespace SharpChat.Commands { } public void Dispatch(ChatCommandContext ctx) { - if(!ctx.User.Can(ChatUserPermissions.BanUser | ChatUserPermissions.KickUser)) { + if(!ctx.User.Permissions.HasFlag(ChatUserPermissions.KickUser) + && !ctx.User.Permissions.HasFlag(ChatUserPermissions.BanUser)) { ctx.Chat.SendTo(ctx.User, new CommandNotAllowedErrorPacket(ctx.Name)); return; } diff --git a/SharpChat/Commands/UserNickCommand.cs b/SharpChat/Commands/UserNickCommand.cs index 7b6fc30..adab7c1 100644 --- a/SharpChat/Commands/UserNickCommand.cs +++ b/SharpChat/Commands/UserNickCommand.cs @@ -8,9 +8,9 @@ namespace SharpChat.Commands { } public void Dispatch(ChatCommandContext ctx) { - bool setOthersNick = ctx.User.Can(ChatUserPermissions.SetOthersNickname); + bool setOthersNick = ctx.User.Permissions.HasFlag(ChatUserPermissions.SetOthersNickname); - if(!setOthersNick && !ctx.User.Can(ChatUserPermissions.SetOwnNickname)) { + if(!setOthersNick && !ctx.User.Permissions.HasFlag(ChatUserPermissions.SetOwnNickname)) { ctx.Chat.SendTo(ctx.User, new CommandNotAllowedErrorPacket(ctx.Name)); return; } diff --git a/SharpChat/Commands/WhoCommand.cs b/SharpChat/Commands/WhoCommand.cs index 7bf0ce7..b184e1a 100644 --- a/SharpChat/Commands/WhoCommand.cs +++ b/SharpChat/Commands/WhoCommand.cs @@ -25,7 +25,7 @@ namespace SharpChat.Commands { return; } - if(channel.Rank > ctx.User.Rank || (channel.HasPassword && !ctx.User.Can(ChatUserPermissions.JoinAnyChannel))) { + if(channel.Rank > ctx.User.Rank || (channel.HasPassword && !ctx.User.Permissions.HasFlag(ChatUserPermissions.JoinAnyChannel))) { ctx.Chat.SendTo(ctx.User, new WhoChannelNotFoundErrorPacket(channelName)); return; } diff --git a/SharpChat/Commands/WhoisCommand.cs b/SharpChat/Commands/WhoisCommand.cs index 917b390..2c6a144 100644 --- a/SharpChat/Commands/WhoisCommand.cs +++ b/SharpChat/Commands/WhoisCommand.cs @@ -10,7 +10,7 @@ namespace SharpChat.Commands { } public void Dispatch(ChatCommandContext ctx) { - if(!ctx.User.Can(ChatUserPermissions.SeeIPAddress)) { + if(!ctx.User.Permissions.HasFlag(ChatUserPermissions.SeeIPAddress)) { ctx.Chat.SendTo(ctx.User, new CommandNotAllowedErrorPacket(ctx.Name)); return; } diff --git a/SharpChat/Packet/MessagePopulatePacket.cs b/SharpChat/Packet/MessagePopulatePacket.cs index fa084a2..28e6897 100644 --- a/SharpChat/Packet/MessagePopulatePacket.cs +++ b/SharpChat/Packet/MessagePopulatePacket.cs @@ -35,12 +35,12 @@ namespace SharpChat.Packet { Event.Sender?.LegacyNameWithStatus, Event.Sender?.Colour, Event.Sender?.Rank, - Event.Sender?.Can(ChatUserPermissions.KickUser) == true ? 1 : 0, - Event.Sender?.Can(ChatUserPermissions.ViewLogs) == true ? 1 : 0, - Event.Sender?.Can(ChatUserPermissions.SetOwnNickname) == true ? 1 : 0, - Event.Sender?.Can(ChatUserPermissions.CreateChannel | ChatUserPermissions.SetChannelPermanent, true) == true ? 2 : ( - Event.Sender?.Can(ChatUserPermissions.CreateChannel) == true ? 1 : 0 - ) + Event.Sender?.Permissions.HasFlag(ChatUserPermissions.KickUser) == true ? 1 : 0, + Event.Sender?.Permissions.HasFlag(ChatUserPermissions.ViewLogs) == true ? 1 : 0, + Event.Sender?.Permissions.HasFlag(ChatUserPermissions.SetOwnNickname) == true ? 1 : 0, + Event.Sender?.Permissions.HasFlag(ChatUserPermissions.CreateChannel) == true ? ( + Event.Sender?.Permissions.HasFlag(ChatUserPermissions.SetChannelPermanent) == true ? 2 : 1 + ) : 0 ); } diff --git a/SharpChat/PacketHandlers/SendMessageHandler.cs b/SharpChat/PacketHandlers/SendMessageHandler.cs index dc70388..785e2fc 100644 --- a/SharpChat/PacketHandlers/SendMessageHandler.cs +++ b/SharpChat/PacketHandlers/SendMessageHandler.cs @@ -38,7 +38,7 @@ namespace SharpChat.PacketHandlers // No longer concats everything after index 1 with \t, no previous implementation did that either string? messageText = args.ElementAtOrDefault(2); - if(user == null || !user.Can(ChatUserPermissions.SendMessage) || string.IsNullOrWhiteSpace(messageText)) + if(user == null || !user.Permissions.HasFlag(ChatUserPermissions.SendMessage) || string.IsNullOrWhiteSpace(messageText)) return; // Extra validation step, not necessary at all but enforces proper formatting in SCv1.