{{- range $index, $middlewareData := .Values.middlewares.basicAuth -}}

  {{- $users := list -}}
  {{- range $index, $userdata := $middlewareData.users -}}
    {{- $users = append $users (htpasswd $userdata.username $userdata.password) -}}
  {{- end }}

---
apiVersion: v1
kind: Secret
metadata:
  name: {{ printf "%v-%v" $middlewareData.name "secret" }}
  namespace: tc-system
type: Opaque
stringData:
  users: |
    {{- range $index, $user := $users }}
    {{ printf "%s" $user }}
    {{- end }}
---
# Declaring the user list
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }}
  namespace: tc-system
spec:
  basicAuth:
    secret: {{ printf "%v-%v" $middlewareData.name "secret" }}
{{- end -}}
