Files
2026-10-16 23:33:13 -07:00

70 lines
1.7 KiB
C#

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text.Json.Serialization;
using RadicadeServer.RecNet.Accounts;
using RadicadeServer.RecNet.Auth.Enums;
namespace RadicadeServer.RecNet.Auth
{
public class Profile
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long accountId { get; set; }
public string profileImage { get; set; } = null!;
public string? bannerImage { get; set; }
public bool isRecentHistoryVisible { get; set; } = true;
public bool isJunior { get; set; }
public int platforms { get; set; }
public string username { get; set; } = null!;
public string displayName { get; set; } = null!;
public string? bio { get; set; }
public int personalPronouns { get; set; }
public int identityFlags { get; set; }
public string? displayEmoji { get; set; }
public bool NameLocked { get; set; }
public bool BioLocked { get; set; }
public DateTime createdAt { get; set; }
public string? role { get; set; }
public bool developer => HasRole("developer");
public bool moderator => HasRole("moderator");
public bool screenshare => HasRole("screenshare");
public bool influencer => HasRole("influencer");
public bool HasRole(string expectedRoleName)
{
if (string.IsNullOrWhiteSpace(role)) return false;
var normalized = expectedRoleName switch
{
"screenshare" => "sharescreen",
"influencer" => "imfluencer",
_ => expectedRoleName
};
return role.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries)
.Any(r => r.Equals(expectedRoleName, StringComparison.OrdinalIgnoreCase) || r.Equals(normalized, StringComparison.OrdinalIgnoreCase));
}
}
}