posgra 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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