apiVersion: batch/v1
kind: Job
metadata:
  name: {{ template "common.names.fullname" . }}-initialize-user
  labels: {{- include "common.labels.standard" . | nindent 4 }}
    component: dashboard
    {{- if .Values.commonLabels }}
    {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
    {{- end }}
  annotations:
    "helm.sh/hook": post-install,post-upgrade
    "helm.sh/hook-weight": "-5"
    "helm.sh/hook-delete-policy": before-hook-creation
    {{- if .Values.commonAnnotations }}
    {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
    {{- end }}
spec:
  template:
    metadata:
      labels: {{- include "common.labels.standard" . | nindent 8 }}
        component: dashboard
    spec:
      restartPolicy: Never
      containers:
      - name: {{ .Chart.Name }}-login-create-admin
        image: {{ template "backend.image" . }}
        imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
        envFrom:
          - configMapRef:
              name: {{ include "common.names.fullname" . }}
          {{- if .Values.backend.extraEnvVarsCM }}
          - configMapRef:
              name: {{ .Values.backend.extraEnvVarsCM }}
          {{- end }}
          {{- if .Values.backend.extraEnvVarsSecret }}
          - secretRef:
              name: {{ .Values.backend.extraEnvVarsSecret }}
          {{- end }}
        env:
          - name: SETUP_EMAIL
            value: {{ .Values.backend.initialUser.email }}
          - name: SETUP_PASSWORD
            value: {{ .Values.backend.initialUser.password }}
          - name: KRATOS_PUBLIC_URL
            value: http://kratos-public:80
        command: ["/bin/bash", "-c"]
        args:
          - flask db upgrade;
            {{- if .Release.IsInstall }}
            flask cli user create $SETUP_EMAIL;
            flask cli user setpassword $SETUP_EMAIL $SETUP_PASSWORD;
            flask cli app create dashboard Dashboard;
            flask cli user setrole $SETUP_EMAIL dashboard admin;
            flask cli user setrole $SETUP_EMAIL nextcloud admin;
            flask cli user setrole $SETUP_EMAIL wordpress admin;
            flask cli user setrole $SETUP_EMAIL wekan admin;
            flask cli user setrole $SETUP_EMAIL zulip admin;
            {{- end }}

