Decouple internal permissions from Flashii/Misuzu permissions.
This commit is contained in:
parent
78a683620f
commit
b9a7a43db8
3 changed files with 74 additions and 2 deletions
|
@ -8,6 +8,52 @@ public class FlashiiAuthResult : AuthResult {
|
|||
public string UserName => UserNameRaw ?? string.Empty;
|
||||
public ColourInheritable UserColour => ColourInheritable.FromMisuzu(UserColourRaw);
|
||||
|
||||
public UserPermissions UserPermissions {
|
||||
get {
|
||||
UserPermissions perms = 0;
|
||||
|
||||
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_MESSAGE_SEND))
|
||||
perms |= UserPermissions.SendMessage;
|
||||
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_MESSAGE_DELETE_OWN))
|
||||
perms |= UserPermissions.DeleteOwnMessage;
|
||||
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_MESSAGE_DELETE_ANY))
|
||||
perms |= UserPermissions.DeleteAnyMessage;
|
||||
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_MESSAGE_EDIT_OWN))
|
||||
perms |= UserPermissions.EditOwnMessage;
|
||||
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_MESSAGE_EDIT_ANY))
|
||||
perms |= UserPermissions.EditAnyMessage;
|
||||
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_MESSAGE_BROADCAST))
|
||||
perms |= UserPermissions.Broadcast;
|
||||
|
||||
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_USER_KICK))
|
||||
perms |= UserPermissions.KickUser;
|
||||
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_USER_BAN))
|
||||
perms |= UserPermissions.BanUser;
|
||||
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_USER_VIEW_ADDR))
|
||||
perms |= UserPermissions.SeeIPAddress;
|
||||
|
||||
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_CHANNEL_CREATE))
|
||||
perms |= UserPermissions.CreateChannel;
|
||||
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_CHANNEL_SET_PERSIST))
|
||||
perms |= UserPermissions.SetChannelPermanent;
|
||||
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_CHANNEL_SET_PASSWORD))
|
||||
perms |= UserPermissions.SetChannelPassword;
|
||||
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_CHANNEL_SET_MIN_RANK))
|
||||
perms |= UserPermissions.SetChannelHierarchy;
|
||||
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_CHANNEL_DELETE))
|
||||
perms |= UserPermissions.DeleteChannel;
|
||||
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_CHANNEL_JOIN_ANY))
|
||||
perms |= UserPermissions.JoinAnyChannel;
|
||||
|
||||
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_NICK_SET_OWN))
|
||||
perms |= UserPermissions.SetOwnNickname;
|
||||
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_NICK_SET_ANY))
|
||||
perms |= UserPermissions.SetOthersNickname;
|
||||
|
||||
return perms;
|
||||
}
|
||||
}
|
||||
|
||||
[JsonPropertyName("success")]
|
||||
public bool Success { get; init; }
|
||||
|
||||
|
@ -27,5 +73,5 @@ public class FlashiiAuthResult : AuthResult {
|
|||
public int UserRank { get; init; }
|
||||
|
||||
[JsonPropertyName("perms")]
|
||||
public UserPermissions UserPermissions { get; init; }
|
||||
public FlashiiUserPermissions UserPermissionsRaw { get; init; }
|
||||
}
|
||||
|
|
27
SharpChat.Flashii/FlashiiUserPermissions.cs
Normal file
27
SharpChat.Flashii/FlashiiUserPermissions.cs
Normal file
|
@ -0,0 +1,27 @@
|
|||
namespace SharpChat.Flashii;
|
||||
|
||||
/// <summary>
|
||||
/// Flashii Chat Permissions.
|
||||
/// Has strange naming because its yoinked from https://patchii.net/flashii/misuzu/src/commit/dd8ec7c8ddb8aa1343b993eac5d23d152ac71940/src/Perm.php#L98.
|
||||
/// </summary>
|
||||
[Flags]
|
||||
public enum FlashiiUserPermissions : int {
|
||||
C_USER_KICK = 0b00000_00000000_00000000_00000000_00000000_00000000_00000001,
|
||||
C_USER_BAN = 0b00000_00000000_00000000_00000000_00000000_00000000_00000010,
|
||||
//C_USER_SILENCE = 0b00000_00000000_00000000_00000000_00000000_00000000_00000100,
|
||||
C_MESSAGE_BROADCAST = 0b00000_00000000_00000000_00000000_00000000_00000000_00001000,
|
||||
C_NICK_SET_OWN = 0b00000_00000000_00000000_00000000_00000000_00000000_00010000,
|
||||
C_NICK_SET_ANY = 0b00000_00000000_00000000_00000000_00000000_00000000_00100000,
|
||||
C_CHANNEL_CREATE = 0b00000_00000000_00000000_00000000_00000000_00000000_01000000,
|
||||
C_CHANNEL_SET_PERSIST = 0b00000_00000000_00000000_00000000_00000000_00000000_10000000,
|
||||
C_CHANNEL_SET_PASSWORD = 0b00000_00000000_00000000_00000000_00000000_00000001_00000000,
|
||||
C_CHANNEL_SET_MIN_RANK = 0b00000_00000000_00000000_00000000_00000000_00000010_00000000,
|
||||
C_MESSAGE_SEND = 0b00000_00000000_00000000_00000000_00000000_00000100_00000000,
|
||||
C_MESSAGE_DELETE_OWN = 0b00000_00000000_00000000_00000000_00000000_00001000_00000000,
|
||||
C_MESSAGE_DELETE_ANY = 0b00000_00000000_00000000_00000000_00000000_00010000_00000000,
|
||||
C_MESSAGE_EDIT_OWN = 0b00000_00000000_00000000_00000000_00000000_00100000_00000000,
|
||||
C_MESSAGE_EDIT_ANY = 0b00000_00000000_00000000_00000000_00000000_01000000_00000000,
|
||||
C_USER_VIEW_ADDR = 0b00000_00000000_00000000_00000000_00000000_10000000_00000000,
|
||||
C_CHANNEL_DELETE = 0b00000_00000000_00000000_00000000_00000001_00000000_00000000,
|
||||
C_CHANNEL_JOIN_ANY = 0b00000_00000000_00000000_00000000_00000010_00000000_00000000,
|
||||
}
|
|
@ -4,7 +4,6 @@ namespace SharpChat;
|
|||
public enum UserPermissions : int {
|
||||
KickUser = 0x00000001,
|
||||
BanUser = 0x00000002,
|
||||
//SilenceUser = 0x00000004,
|
||||
Broadcast = 0x00000008,
|
||||
SetOwnNickname = 0x00000010,
|
||||
SetOthersNickname = 0x00000020,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue