in internal/handlers/handlers.go [25:52]
func (h *Handlers) checkIfLoginRequiredOrInvalidToken(w http.ResponseWriter, r *http.Request, token string, domain internal.Domain) func(*http.Response) bool {
return func(resp *http.Response) bool {
// API will return 403 if the project does not have public pipelines (public_builds flag)
if resp.StatusCode == http.StatusNotFound || resp.StatusCode == http.StatusForbidden {
if token == "" {
if !h.Auth.IsAuthSupported() {
// Auth is not supported, probably means no access or does not exist but we cannot try with auth
return false
}
logging.LogRequest(r).Debugf("Artifact API response was %d without token, try with authentication", resp.StatusCode)
// Authenticate user
if h.Auth.RequireAuth(w, r, domain) {
return true
}
} else {
logging.LogRequest(r).Debugf("Artifact API response was %d with authentication", resp.StatusCode)
}
}
if h.Auth.CheckResponseForInvalidToken(w, r, resp) {
return true
}
return false
}
}