From 37de78ca9f2ec564358e9a168467a530514471e4 Mon Sep 17 00:00:00 2001
From: jurgenhaas <juergen@paragon-es.de>
Date: Mon, 25 Apr 2022 14:55:20 +0200
Subject: [PATCH] gitlab-ci-cd/drupal#10 - add support for basic auth

---
 src/Handler.php                   | 12 ++++++++++++
 templates/docker-compose.yml.twig |  8 ++++++++
 2 files changed, 20 insertions(+)

diff --git a/src/Handler.php b/src/Handler.php
index e1d670c..14afa21 100644
--- a/src/Handler.php
+++ b/src/Handler.php
@@ -36,6 +36,12 @@ class Handler extends BaseHandler {
     $options = [
       'projectname' => $projectname,
       'staging' => FALSE,
+      'basicauth' => [
+        'enabled' => FALSE,
+        'user' => ',',
+        'pass' => ',',
+        'code' => ',',
+      ],
       'ci_home' => '/home/gitlab-runner',
       'docker0' => [
         'ip' => ($this->isCiContext() || $this->isLocalDevMode()) ?
@@ -231,6 +237,12 @@ class Handler extends BaseHandler {
           'projectprotocol' => 'https',
           'projectport' => '',
           'extradomains' => $config->readValue('aliases'),
+          'basicauth' => [
+            'enabled' => (getenv('BASIC_AUTH') === 'yes'),
+            'user' => getenv('BASIC_AUTH_USER'),
+            'pass' => getenv('BASIC_AUTH_PASS'),
+            'code' => getenv('BASIC_AUTH_CODE'),
+          ],
         ];
         foreach ($overwriteConfig as $key => $value) {
           $this->config->setValue($key, $value, FALSE);
diff --git a/templates/docker-compose.yml.twig b/templates/docker-compose.yml.twig
index 4cf8e83..449ca84 100644
--- a/templates/docker-compose.yml.twig
+++ b/templates/docker-compose.yml.twig
@@ -129,6 +129,10 @@ services:
     labels:
       traefik.enable: 'true'
       traefik.docker.network: traefik-public
+{% if basicauth.enabled %}
+      traefik.http.middlewares.{{ webserver.type }}-{{ projectname }}-auth.basicauth.users: {{ basicauth.code }}
+      traefik.http.routers.{{ webserver.type }}-{{ projectname }}.middlewares: {{ webserver.type }}-{{ projectname }}-auth@docker
+{% endif %}
       traefik.http.routers.{{ webserver.type }}-{{ projectname }}.rule: Host(`{{ projectdomain }}`){% for domain in extradomains|default([]) %} || Host(`{{ domain }}`){% endfor %}
 {% if varnish.enable %}
 
@@ -231,6 +235,10 @@ services:
     labels:
       traefik.enable: 'true'
       traefik.docker.network: traefik-public
+{% if basicauth.enabled %}
+      traefik.http.middlewares.mailhog-{{ projectname }}-auth.basicauth.users: {{ basicauth.code }}
+      traefik.http.routers.mailhog-{{ projectname }}.middlewares: mailhog-{{ projectname }}-auth@docker
+{% endif %}
       traefik.http.services.{{ projectname }}_mailhog.loadbalancer.server.port: 8025
       traefik.http.routers.mailhog-{{ projectname }}.rule: Host(`mailhog-{{ projectdomain }}`)
 {% endif %}
-- 
GitLab