Ctrl K
ComunidadGuías…

internal/helpers/auth.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package helpers

import (
	"net/http"
	"path/filepath"
	"strings"
	"xprem/internal/types"
)

func GetAuth(r *http.Request) types.Auth {
	bearerToken, _ := GetBearerToken(r)
	if bearerToken != "" {
		return types.Auth{
			Token: &bearerToken,
		}
	}
	sessionSecret := r.Header.Get("expo-session")
	if sessionSecret != "" {
		return types.Auth{
			SessionSecret: &sessionSecret,
		}
	}
	return types.Auth{}
}

func GetExpoAuth(r *http.Request) types.Auth {
	if token := r.Header.Get("X-Expo-Access-Token"); token != "" {
		return types.Auth{Token: &token}
	}
	return types.Auth{}
}

func GetBearerToken(r *http.Request) (string, error) {
	bearerToken := r.Header.Get("Authorization")
	if bearerToken == "" {
		return "", nil
	}
	tokens := strings.Split(bearerToken, "Bearer ")
	if len(tokens) != 2 {
		return "", nil
	}
	return tokens[1], nil
}

func MaskSecret(value string) string {
	if len(value) < 5 {
		return "***"
	}
	return "***" + value[:5]
}

func MaskKeyPath(path string) string {
	trimmed := strings.TrimSpace(path)
	if trimmed == "" {
		return ""
	}
	fileName := filepath.Base(trimmed)
	if fileName == "." || fileName == string(filepath.Separator) {
		return ".../[Configured File]"
	}
	return ".../" + fileName
}