4
0

trusted-headers.go 826 B

123456789101112131415161718192021222324252627282930313233
  1. package auth
  2. import (
  3. "net/http"
  4. types "github.com/OliveTin/OliveTin/internal/auth/authpublic"
  5. )
  6. //gocyclo:ignore
  7. func checkUserFromHeaders(context *types.AuthCheckingContext) *types.AuthenticatedUser {
  8. u := &types.AuthenticatedUser{}
  9. if context.Config.AuthHttpHeaderUsername != "" {
  10. u.Username = getHeaderKeyOrEmpty(context.Request.Header, context.Config.AuthHttpHeaderUsername)
  11. }
  12. if context.Config.AuthHttpHeaderUserGroup != "" {
  13. u.UsergroupLine = getHeaderKeyOrEmpty(context.Request.Header, context.Config.AuthHttpHeaderUserGroup)
  14. }
  15. if prov := getHeaderKeyOrEmpty(context.Request.Header, "provider"); prov != "" {
  16. u.Provider = prov
  17. }
  18. return u
  19. }
  20. func getHeaderKeyOrEmpty(headers http.Header, key string) string {
  21. values := headers.Values(key)
  22. if len(values) > 0 {
  23. return values[0]
  24. }
  25. return ""
  26. }