sharp-chat/SharpChat.Flashii/FlashiiAuthResult.cs

82 lines
3.6 KiB
C#
Raw Normal View History

using SharpChat.Auth;
using SharpChat.Users;
using System.Text.Json.Serialization;
namespace SharpChat.Flashii;
public class FlashiiAuthResult : AuthResult {
public string UserId => UserIdRaw.ToString();
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.SendBroadcast;
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_USER_KICK))
perms |= UserPermissions.KickUser;
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_USER_BAN))
perms |= UserPermissions.BanUser
| UserPermissions.ViewBanList
| UserPermissions.PardonUser
| UserPermissions.PardonIPAddress;
if(UserPermissionsRaw.HasFlag(FlashiiUserPermissions.C_USER_VIEW_ADDR))
perms |= UserPermissions.ViewIPAddress;
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.SetChannelMinimumRank;
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; }
[JsonPropertyName("reason")]
public string? Reason { get; init; }
[JsonPropertyName("user_id")]
public long UserIdRaw { get; init; }
[JsonPropertyName("username")]
public string? UserNameRaw { get; init; }
[JsonPropertyName("colour_raw")]
public int UserColourRaw { get; init; }
[JsonPropertyName("hierarchy")]
public int UserRank { get; init; }
[JsonPropertyName("perms")]
public FlashiiUserPermissions UserPermissionsRaw { get; init; }
}