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 +4 -4
- data/lib/posgra/driver.rb +11 -4
- data/lib/posgra/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 518a434dc5bec68e17e348b1786b914ae4ff0e35
|
|
4
|
+
data.tar.gz: 27dfbd44d5c896b6684f0442fd35889e1b2a3dc0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7cf81139a91b2069a1ebd77f11443ecbfb5d4c4ce8d132dc04820986d9da0cd3a633bfca0ed66755bed67a40f1c62d6e0b00f4e1b985a706b44e5b861f8bfdf1
|
|
7
|
+
data.tar.gz: c0fbd3b0684e78b7e4b67adeb5c0a0394681c320f9ccdff8330e50a6f4e83eca53a298da926e6ecfb160db3e3418b3ada4012156d7fa37d7e5d4b9a0a9e85c91
|
data/lib/posgra/driver.rb
CHANGED
|
@@ -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
|
-
|
|
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|
|
data/lib/posgra/version.rb
CHANGED