using foodmarket.Domain.Common;
namespace foodmarket.Domain.Platform;
/// Платформенные настройки (singleton, single-row). Хранят SMTP-креды
/// для отправки писем (forgot-password, инвайты, нотификации). Не tenant-scoped —
/// общий конфиг для всей платформы, видны и меняются только Супер-администратором.
///
/// SmtpPassword хранится зашифрованным через DataProtection API
/// (`IDataProtectionProvider.CreateProtector("foodmarket.smtp")`); снаружи
/// (контроллер) — никогда не возвращается в открытом виде, только has-password флаг.
public class PlatformSettings : Entity
{
/// SMTP-сервер для отправки исходящей почты (НЕ IMAP — IMAP это
/// для чтения входящей).
public string? SmtpHost { get; set; }
public int? SmtpPort { get; set; }
/// Implicit TLS (SMTPS, обычно порт 465). Взаимоисключающий
/// со SmtpStartTls (587).
public bool SmtpUseSsl { get; set; }
/// STARTTLS upgrade (обычно порт 587). По дефолту true в большинстве
/// современных провайдеров (Gmail/Yandex/Mailgun).
public bool SmtpStartTls { get; set; } = true;
public string? SmtpUsername { get; set; }
/// Зашифрованный SmtpPassword (base64 через DataProtection).
/// Никогда не отдаётся в API-ответах. Установка только через PUT с
/// явно переданным new-password полем.
public string? SmtpPasswordEncrypted { get; set; }
public string? FromEmail { get; set; }
public string? FromName { get; set; }
}