grantinee 0.3.3 → 0.4.0

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
  SHA256:
3
- metadata.gz: bd59012e89ac1bad99cc95da8f1915b2c026fad022ab0e00740320cbcc26ce50
4
- data.tar.gz: f1f48a160ecc3745bf508f1615565b1a6996e8403294da7681c63fb1bcee766f
3
+ metadata.gz: 18bcce1973995afd674f4a71ac00e99faf7dfcfee9919bd7fdde72daa2e90adf
4
+ data.tar.gz: 43fea39c39305f2f413b36f15eb3e6ed23efc6f19eda2d39c23fe445e8d0cb5d
5
5
  SHA512:
6
- metadata.gz: a4a527b5f2cf5992a3bed8f290f20675e12c2f1f15913ea0f0abc3b2daf73211fa1887bf42743a6de3fd5747dddfce47dafb2bf229c11c2f86f6f3f554d64425
7
- data.tar.gz: c6c3af0d7e868aaf07f438901009cc1b7e5379d67e1719aeeb49aa07d6dff307a5457138d3d8a60c9dd14e17ac8b8fcc42dcd4aaf16a23ed27898681ee61f5b0
6
+ metadata.gz: 195731cbacfda40abc4e1b7aeb7b9f77c2ad51cca4b9718d93d8cc443b34628694ef2ab1f395dcab9a9778c8dbd1b9f8f00003d88e00e88e247e52bda0f1f40b
7
+ data.tar.gz: 4c562d81ad86fbb16ae5968c94c07bc50b48399a171b04e2fe58d5ba26d8e405b30d52ecd519f4e0f6dff118b2d41f9ba72cb8064eda4e029ee19e25486aba9f
@@ -10,9 +10,9 @@ Layout/EndAlignment:
10
10
 
11
11
  Lint/HandleExceptions:
12
12
  Enabled: false
13
-
13
+
14
14
  Metrics/AbcSize:
15
- Max: 20
15
+ Enabled: false
16
16
 
17
17
  Metrics/BlockLength:
18
18
  Exclude:
data/README.md CHANGED
@@ -126,4 +126,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
126
126
 
127
127
  ## Code of Conduct
128
128
 
129
- Everyone interacting in the Grantinee project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/grantinee/blob/master/CODE_OF_CONDUCT.md).
129
+ Everyone interacting in the Grantinee project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/blinkist/grantinee/blob/master/CODE_OF_CONDUCT.md).
@@ -4,7 +4,7 @@ module Grantinee
4
4
  module Engine
5
5
  SUPPORTED_ENGINES = %w[mysql postgresql].freeze
6
6
 
7
- WHITELISTED_KINDS = %w[all usage select update insert].freeze
7
+ WHITELISTED_KINDS = %w[all usage select update insert delete execute].freeze
8
8
 
9
9
  class << self
10
10
  # Get appropriate engine class for the engine name
@@ -3,7 +3,7 @@
3
3
  module Grantinee
4
4
  module Engine
5
5
  class AbstractEngine
6
- NOT_IMPLEMENTED = "Not implemented".freeze
6
+ NOT_IMPLEMENTED = "Not implemented"
7
7
 
8
8
  def logger
9
9
  Grantinee.logger
@@ -33,7 +33,7 @@ module Grantinee
33
33
  run! query, data
34
34
  end
35
35
 
36
- def grant_permission!(data) # rubocop:disable Metrics/AbcSize
36
+ def grant_permission!(data)
37
37
  raise "Invalid permission kind" unless WHITELISTED_KINDS.include?(data[:kind]&.downcase)
38
38
 
39
39
  database = sanitize_column_name(data[:database])
@@ -42,9 +42,10 @@ module Grantinee
42
42
  user = sanitize_value(data[:user])
43
43
  host = sanitize_value(data[:host])
44
44
  fields = data[:fields].map { |v| sanitize_column_name(v.to_s) }.join(', ')
45
+ helper = (kind == "EXECUTE" ? " PROCEDURE " : "")
45
46
 
46
47
  query = if data[:fields].empty?
47
- "GRANT #{kind} ON #{database}.#{table} TO '#{user}'@'#{host}';"
48
+ "GRANT #{kind} ON #{helper}#{database}.#{table} TO '#{user}'@'#{host}';"
48
49
  else
49
50
  "GRANT #{kind}(#{fields}) ON #{database}.#{table} TO '#{user}'@'#{host}';"
50
51
  end
@@ -37,9 +37,10 @@ module Grantinee
37
37
  table = sanitize_table_name(data[:table])
38
38
  user = sanitize_column_name(data[:user])
39
39
  fields = data[:fields].map { |v| sanitize_column_name(v.to_s) }.join(', ')
40
+ helper = (kind == "EXECUTE" ? " FUNCTION " : "")
40
41
 
41
42
  query = if data[:fields].empty?
42
- "GRANT #{kind} ON #{table} TO #{user};"
43
+ "GRANT #{kind} ON #{helper}#{table} TO #{user};"
43
44
  else
44
45
  "GRANT #{kind}(#{fields}) ON TABLE #{table} TO #{user};"
45
46
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Grantinee
4
- VERSION = '0.3.3'.freeze
4
+ VERSION = '0.4.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grantinee
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paweł Komarnicki
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2018-06-25 00:00:00.000000000 Z
12
+ date: 2018-06-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler