Automatische Authentifizierung bestehender Sessions über Session-ID + API-Token
[kivitendo-erp.git] / SL / Auth / ColumnInformation.pm
index e053561..64b600d 100644 (file)
@@ -23,17 +23,21 @@ sub _fetch {
 
   return $self if $self->{info};
 
-  my $query = <<SQL;
-    SELECT a.attname, format_type(a.atttypid, a.atttypmod) AS format_type, d.adsrc, a.attnotnull
-    FROM pg_attribute a
-    LEFT JOIN pg_attrdef d ON (a.attrelid = d.adrelid) AND (a.attnum = d.adnum)
-    WHERE (a.attrelid = 'auth.session_content'::regclass)
-      AND (a.attnum > 0)
-      AND NOT a.attisdropped
-    ORDER BY a.attnum
+  $self->{info} = {};
+
+  foreach my $table (qw(session session_content)) {
+    my $query = <<SQL;
+      SELECT a.attname, format_type(a.atttypid, a.atttypmod) AS format_type, d.adsrc, a.attnotnull
+      FROM pg_attribute a
+      LEFT JOIN pg_attrdef d ON (a.attrelid = d.adrelid) AND (a.attnum = d.adnum)
+      WHERE (a.attrelid = 'auth.${table}'::regclass)
+        AND (a.attnum > 0)
+        AND NOT a.attisdropped
+      ORDER BY a.attnum
 SQL
 
-  $self->{info} = { selectall_as_map($::form, $self->{auth}->dbconnect, $query, 'attname', [ qw(format_type adsrc attnotnull) ]) };
+    $self->{info}->{$table} = { selectall_as_map($::form, $self->{auth}->dbconnect, $query, 'attname', [ qw(format_type adsrc attnotnull) ]) };
+  }
 
   return $self;
 }
@@ -44,8 +48,8 @@ sub info {
 }
 
 sub has {
-  my ($self, $column) = @_;
-  return $self->info->{$column};
+  my ($self, $column, $table) = @_;
+  return $self->info->{$table || 'session_content'}->{$column};
 }
 
 1;