IdentityShroud/IdentityShroud.Core/Model/Realm.cs

41 lines
1.1 KiB
C#
Raw Normal View History

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using IdentityShroud.Core.Security;
2026-02-06 19:58:01 +01:00
namespace IdentityShroud.Core.Model;
[Table("realm")]
2026-02-06 19:58:01 +01:00
public class Realm
{
2026-02-06 19:58:01 +01:00
public Guid Id { get; set; }
/// <summary>
/// Note this is part of the url we should encourage users to keep it short but we do not want to limit them too much
/// </summary>
[MaxLength(40)]
2026-02-06 19:58:01 +01:00
public string Slug { get; set; } = "";
[MaxLength(128)]
public string Name { get; set; } = "";
public List<Client> Clients { get; init; } = [];
2026-02-20 17:35:38 +01:00
public List<RealmKey> Keys { get; init; } = [];
public List<RealmDek> Deks { get; init; } = [];
/// <summary>
/// Can be overriden per client
/// </summary>
public string DefaultSignatureAlgorithm { get; set; } = JsonWebAlgorithm.RS256;
}
[Table("realm_dek")]
public record RealmDek
{
public required DekId Id { get; init; }
public required bool Active { get; init; }
public required string Algorithm { get; init; }
public required EncryptedDek KeyData { get; init; }
public required Guid RealmId { get; init; }
}