using System;
using System.IO;
using System.Runtime.InteropServices;

namespace PolyTrader.Core.Security
{
    /// <summary>
    /// Beschränkt eine Schlüsseldatei auf den Besitzer. Unter Linux/macOS erzeugt
    /// <see cref="File.WriteAllText(string, string)"/> mit der üblichen umask sonst <c>644</c> —
    /// world-readable, und genau dort liegen Master-Key, Watchdog-Token oder OpenRouter-Key im
    /// Klartext. Unter Windows greift die NTFS-Vererbung des Profils, dort ist nichts zu tun.
    /// </summary>
    public static class FilePermissions
    {
        public static void RestrictToOwner(string path, Action<string>? onWarning = null)
        {
            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) return;
            try
            {
                File.SetUnixFileMode(path, UnixFileMode.UserRead | UnixFileMode.UserWrite);
            }
            catch (Exception ex)
            {
                onWarning?.Invoke(
                    $"Dateirechte für {Path.GetFileName(path)} konnten nicht gesetzt werden: {ex.Message}. Bitte manuell prüfen (chmod 600).");
            }
        }
    }
}
