From 0108fdcd068598353cc51015f231ae20ac3021df Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andrej=20Rama=C5=A1euski?= <andrej@x2.cz>
Date: Fri, 12 Nov 2021 22:19:04 +0100
Subject: [PATCH] Roles bugfix, allow skip migration

---
 .gitlab-ci.yml                  |  2 +-
 lib/CF2022.pm                   | 26 ++++++++++++++------------
 lib/CF2022/Controller/Orders.pm |  4 ++--
 lib/CF2022/Helpers/Auth.pm      |  4 +++-
 4 files changed, 20 insertions(+), 16 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2338ff3..5a960f5 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,7 +2,7 @@ image: docker:20.10.9
 
 variables:
   DOCKER_TLS_CERTDIR: "/certs"
-  IMAGE_VER: 0.5.0
+  IMAGE_VER: 0.5.1
 
 services:
   - docker:20.10.9-dind
diff --git a/lib/CF2022.pm b/lib/CF2022.pm
index 9f0924b..2beb42b 100644
--- a/lib/CF2022.pm
+++ b/lib/CF2022.pm
@@ -24,19 +24,21 @@ sub startup {
 #    $self->helper( redis => sub { return $redis; } );
 
     # migrace schematu
-    my $pg = Mojo::Pg->new
-        ->dsn($cfg->{db_dsn})
-        ->username($cfg->{db_username})
-        ->password($cfg->{db_password})
-    ;
-    if ($cfg->{test}) {
-        $pg->search_path(['test']);
-        $pg->db->query('drop schema if exists test cascade');
-        $pg->db->query('create schema test');
+    if (! $cfg->{skip_migration}) {
+        my $pg = Mojo::Pg->new
+            ->dsn($cfg->{db_dsn})
+            ->username($cfg->{db_username})
+            ->password($cfg->{db_password})
+        ;
+        if ($cfg->{test}) {
+            $pg->search_path(['test']);
+            $pg->db->query('drop schema if exists test cascade');
+            $pg->db->query('create schema test');
+        }
+        $pg->migrations->from_dir($self->home . '/sql');
+        $pg->migrations->migrate();
+        $self->helper( pg => sub { return $pg; } );
     }
-    $pg->migrations->from_dir($self->home . '/sql');
-    $pg->migrations->migrate();
-    $self->helper( pg => sub { return $pg; } );
 
     # DB Schema
     my $schema = CF2022::Schema->connect({
diff --git a/lib/CF2022/Controller/Orders.pm b/lib/CF2022/Controller/Orders.pm
index fa3e677..e87defd 100644
--- a/lib/CF2022/Controller/Orders.pm
+++ b/lib/CF2022/Controller/Orders.pm
@@ -45,9 +45,9 @@ sub create ($c ) {
         );
 
         @products = grep { $_->{id} !~ MAIN_PRODUCTS } @products;
-        push @products, {
+        @products = ({
             id => $c->config->{'pretix_product_' . $group->{role}}
-        };
+        }, @products);
 
         if ( $group->{role} eq 'member' ) {
             $args->{email} = $claims->{preferred_username}
diff --git a/lib/CF2022/Helpers/Auth.pm b/lib/CF2022/Helpers/Auth.pm
index 7537e87..da31c9f 100644
--- a/lib/CF2022/Helpers/Auth.pm
+++ b/lib/CF2022/Helpers/Auth.pm
@@ -80,12 +80,14 @@ sub register ( $class, $self, $conf) {
         GROUP:
         foreach my $group ( sort @{ $claims->{groups} } ) {
             if ( $group =~ REGIONS ) {
+                my $role = ( $2 eq 'f') ? 'member':'regp';
+
                 my $region = $c->oauth_groups->{ $group };
                 $region =~ s/^KS\s+//i;
 
                 return {
                     region => $region,
-                    role   => ( $2 eq 'f') ? 'member':'regp',
+                    role   => $role,
                 };
             }
         }
-- 
GitLab