Reintroduces separate contexts for users, channels, connections (now split into sessions and connections) and user-channel associations. It builds which is as much assurance as I can give about the stability of this commit, but its also the bare minimum of what i like to commit sooooo A lot of things still need to be broadcast through events throughout the application in order to keep states consistent but we'll cross that bridge when we get to it. I really need to stop using that phrase thingy, I'm overusing it.
81 lines
3.6 KiB
C#
81 lines
3.6 KiB
C#
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; }
|
|
}
|