// +build windows

package admin

import (
	"fmt"
	"os"
	"golang.org/x/sys/windows"
)

// IsAdmin проверяет, запущено ли приложение с правами администратора
func IsAdmin() bool {
	var sid *windows.SID

	// Получаем SID группы администраторов
	err := windows.AllocateAndInitializeSid(
		&windows.SECURITY_NT_AUTHORITY,
		2,
		windows.SECURITY_BUILTIN_DOMAIN_RID,
		windows.DOMAIN_ALIAS_RID_ADMINS,
		0, 0, 0, 0, 0, 0,
		&sid)
	if err != nil {
		return false
	}
	defer windows.FreeSid(sid)

	// Получаем текущий токен процесса
	token := windows.Token(0)
	
	// Проверяем членство в группе
	member, err := token.IsMember(sid)
	if err != nil {
		return false
	}

	return member
}

// RequireAdmin проверяет права администратора и завершает программу, если их нет
func RequireAdmin() {
	if !IsAdmin() {
		fmt.Println("╔════════════════════════════════════════════════════════════╗")
		fmt.Println("║  ⚠  ТРЕБУЮТСЯ ПРАВА АДМИНИСТРАТОРА                        ║")
		fmt.Println("╚════════════════════════════════════════════════════════════╝")
		fmt.Println()
		fmt.Println("Это приложение требует прав администратора для работы с VPN.")
		fmt.Println()
		fmt.Println("Пожалуйста, запустите приложение от имени администратора:")
		fmt.Println("  1. Щелкните правой кнопкой мыши на vpn-client-cli.exe")
		fmt.Println("  2. Выберите 'Запуск от имени администратора'")
		fmt.Println()
		fmt.Println("Нажмите Enter для выхода...")
		fmt.Scanln()
		os.Exit(1)
	}
}
