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 +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