package installer

import "os/user"

// IsAdmin returns true if the user can be determined to be an admin
// and false otherwise (errs on the side of non-admin).
func IsAdmin() bool {
	u, err := user.Current()
	if nil != err {
		return false
	}

	// https://support.microsoft.com/en-us/help/243330/well-known-security-identifiers-in-windows-operating-systems
	// not quite, but close enough for now
	// BUILTIN\ADMINISTRATORS
	if "S-1-5-32-544" == u.Uid || "S-1-5-32-544" == u.Gid {
		return true
	}

	ids, err := u.GroupIds()
	if nil != err {
		return false
	}

	for i := range ids {
		if "S-1-5-32-544" == ids[i] {
			return true
		}
	}

	return false
}
