posgra 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c2b2e3a65346e2b279888aaca122a42605633f1f
4
- data.tar.gz: 940922471165b5cf650096699a2c18a5ed453f90
3
+ metadata.gz: 518a434dc5bec68e17e348b1786b914ae4ff0e35
4
+ data.tar.gz: 27dfbd44d5c896b6684f0442fd35889e1b2a3dc0
5
5
  SHA512:
6
- metadata.gz: 5e10303ef482af44c9cac302a59c824c7de8754260fffb8fa3fea1c9bff20c5dc6fd5c7ad2de2b4c59548eb27091bf3de76018e2f7549aebc1f4e41e70c48c3d
7
- data.tar.gz: 4490756c4187af2c9b2358036aa2543c7096c44d80a3df53396cc35c58a171a7024e2f042bd3570e1ead2728243f6e107b2aabb4d267cba41a8adf5301dcf5e1
6
+ metadata.gz: 7cf81139a91b2069a1ebd77f11443ecbfb5d4c4ce8d132dc04820986d9da0cd3a633bfca0ed66755bed67a40f1c62d6e0b00f4e1b985a706b44e5b861f8bfdf1
7
+ data.tar.gz: c0fbd3b0684e78b7e4b67adeb5c0a0394681c320f9ccdff8330e50a6f4e83eca53a298da926e6ecfb160db3e3418b3ada4012156d7fa37d7e5d4b9a0a9e85c91
@@ -5,6 +5,10 @@ class Posgra::Driver
5
5
  DEFAULT_ACL_PRIVS = ENV['POSGRA_DEFAULT_ACL_PRIVS'] || 'arwdDxt'
6
6
  DEFAULT_ACL = "{%s=#{DEFAULT_ACL_PRIVS}/%s}"
7
7
 
8
+ DEFAULT_ACL_BY_KIND = {
9
+ 'S' => '{%s=rwU/%s}'
10
+ }
11
+
8
12
  PRIVILEGE_TYPES = {
9
13
  'a' => 'INSERT',
10
14
  'r' => 'SELECT',
@@ -283,7 +287,8 @@ class Posgra::Driver
283
287
  pg_class.relname,
284
288
  pg_namespace.nspname,
285
289
  pg_class.relacl,
286
- pg_user.usename
290
+ pg_user.usename,
291
+ pg_class.relkind
287
292
  FROM
288
293
  pg_class
289
294
  INNER JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid
@@ -298,11 +303,12 @@ class Posgra::Driver
298
303
  nspname = row.fetch('nspname')
299
304
  relacl = row.fetch('relacl')
300
305
  usename = row.fetch('usename')
306
+ relkind = row.fetch('relkind')
301
307
 
302
308
  next unless matched?(relname, @options[:include_object], @options[:exclude_object])
303
309
  next unless matched?(nspname, @options[:include_schema], @options[:exclude_schema])
304
310
 
305
- parse_aclitems(relacl, usename).each do |aclitem|
311
+ parse_aclitems(relacl, usename, relkind).each do |aclitem|
306
312
  role = aclitem.fetch('grantee')
307
313
  privs = aclitem.fetch('privileges')
308
314
  next unless matched?(role, @options[:include_role], @options[:exclude_role])
@@ -317,8 +323,9 @@ class Posgra::Driver
317
323
 
318
324
  private
319
325
 
320
- def parse_aclitems(aclitems, owner)
321
- aclitems ||= DEFAULT_ACL % [owner, owner]
326
+ def parse_aclitems(aclitems, owner, relkind)
327
+ aclitems_fmt = DEFAULT_ACL_BY_KIND.fetch(relkind, DEFAULT_ACL)
328
+ aclitems ||= aclitems_fmt % [owner, owner]
322
329
  aclitems = aclitems[1..-2].split(',')
323
330
 
324
331
  aclitems.map do |aclitem|
@@ -1,3 +1,3 @@
1
1
  module Posgra
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: posgra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - winebarrel