using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; namespace DysonNetwork.Pass.Developer; public class CustomApp { public Guid Id { get; set; } = Guid.NewGuid(); [MaxLength(256)] public string Name { get; set; } = null!; [MaxLength(4096)] public string Description { get; set; } = null!; [MaxLength(1024)] public string Homepage { get; set; } = null!; [MaxLength(1024)] public string CallbackUrl { get; set; } = null!; [Column(TypeName = "jsonb")] public OauthConfig? OauthConfig { get; set; } public ICollection Secrets { get; set; } = new List(); } public class CustomAppSecret { public Guid Id { get; set; } = Guid.NewGuid(); [MaxLength(4096)] public string Secret { get; set; } = null!; public bool IsOidc { get; set; } = false; public DateTime? ExpiredAt { get; set; } public Guid AppId { get; set; } [JsonIgnore] public CustomApp App { get; set; } = null!; } public class OauthConfig { public List? AllowedScopes { get; set; } }