internal/helpers/auth.go
Rama main · réplica de lectura del repositorio original.
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
}