posgra 0.1.0 → 0.1.1

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: 779439047ffa052724a0188fddd2d07291d632be
4
- data.tar.gz: dc13051ea5f743c90bb03f17e8552b8042403804
3
+ metadata.gz: a9ee6f48faa2e876c6077d8fa8470ea2c923cb15
4
+ data.tar.gz: d178b484899df16095545fbacabd944807c4472b
5
5
  SHA512:
6
- metadata.gz: 969080594fab8c8fd0f4b99d7c7188ab52e15e9147a51caf55c41df74bc9485245460439639cde467e3f7fa491eca91382630e5983b9f884af162b5e877f44dd
7
- data.tar.gz: 685cbe3e19daba11a16d2f4852ccab18794c4eebb8c183128ee0428e557a34d66f0b91ddb724bad9bc173aadd90dcdf0293fd7f154a88dbb1b9e3ba6afea4d88
6
+ metadata.gz: 47e4b6b06a85789e5144b42bd977c28f7cca36876c6b56c384ed46e317705b70557dac3461d0393cd0a5cd01e0142f7274858b3f93965420257b19164a7983a8
7
+ data.tar.gz: 91f3f70b90c9c449d3be4b2eeff6a98c51a70a73d44027ab0588d6d75459b0d6beb5f722d9484695ab5205f4cce50ef5bab9580df8bb3afabd920fb7f402f89d
data/README.md CHANGED
@@ -87,7 +87,7 @@ role "bob" do
87
87
  grant "TRUNCATE"
88
88
  grant "UPDATE"
89
89
  end
90
- on "microposts_id_seq" do
90
+ on "microposts_id_seq", expired: '2014/10/07' do
91
91
  grant "SELECT"
92
92
  grant "UPDATE"
93
93
  end
@@ -97,3 +97,36 @@ role "bob" do
97
97
  end
98
98
  end
99
99
  ```
100
+
101
+ ### Template
102
+
103
+ ```ruby
104
+ template "all grants" do
105
+ on context.object do
106
+ grant "DELETE", grantable: true
107
+ grant "INSERT"
108
+ grant "REFERENCES"
109
+ grant "SELECT"
110
+ grant "TRIGGER"
111
+ grant "TRUNCATE"
112
+ grant "UPDATE"
113
+ end
114
+ end
115
+
116
+ template "grant select" do
117
+ grant "SELECT"
118
+ end
119
+
120
+ role "bob" do
121
+ schema "main" do
122
+ include_template "all grants", object: "microposts"
123
+ on "microposts_id_seq", expired: '2014/10/07' do
124
+ grant "SELECT"
125
+ grant "UPDATE"
126
+ end
127
+ on /^user/ do
128
+ include_template "grant select"
129
+ end
130
+ end
131
+ end
132
+ ```
@@ -3,6 +3,7 @@ require 'logger'
3
3
  require 'pg'
4
4
  require 'singleton'
5
5
  require 'term/ansicolor'
6
+ require 'time'
6
7
  require 'thor'
7
8
 
8
9
  module Posgra; end
@@ -12,6 +12,7 @@ class Posgra::Driver
12
12
  'D' => 'TRUNCATE',
13
13
  'x' => 'REFERENCES',
14
14
  't' => 'TRIGGER',
15
+ 'U' => 'USAGE',
15
16
  }
16
17
 
17
18
  def initialize(client, options = {})
@@ -335,12 +336,12 @@ class Posgra::Driver
335
336
 
336
337
  def expand_privileges(privileges)
337
338
  options_by_privilege = {}
338
-
339
+ p
339
340
  privileges.scan(/([a-z])(\*)?/i).each do |privilege_type_char,is_grantable|
340
341
  privilege_type = PRIVILEGE_TYPES[privilege_type_char]
341
342
 
342
343
  unless privilege_type
343
- log(:warn, "unknown privilege type: #{privilege_type_char}", :color => :yellow)
344
+ log(:warn, "Unknown privilege type: #{privilege_type_char}", :color => :yellow)
344
345
  next
345
346
  end
346
347
 
@@ -12,11 +12,20 @@ class Posgra::DSL::Grants::Role::Schema
12
12
  instance_eval(&block)
13
13
  end
14
14
 
15
- def on(name, &block)
15
+ def on(name, options = {}, &block)
16
16
  unless name.is_a?(Regexp)
17
17
  name = name.to_s
18
18
  end
19
19
 
20
+ if options[:expired]
21
+ expired = Time.parse(options[:expired])
22
+
23
+ if Time.new >= expired
24
+ log(:warn, "Privilege for `#{name}` has expired", :color => :yellow)
25
+ return
26
+ end
27
+ end
28
+
20
29
  @result[name] = Posgra::DSL::Grants::Role::Schema::On.new(@context, name, @options, &block).result
21
30
  end
22
31
  end
@@ -1,3 +1,3 @@
1
1
  module Posgra
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -29,4 +29,5 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency 'rspec', '~> 3.0'
30
30
  spec.add_development_dependency 'coveralls'
31
31
  spec.add_development_dependency 'unindent'
32
+ spec.add_development_dependency 'timecop'
32
33
  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.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - winebarrel
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: timecop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  description: Posgra is a tool to manage PostgreSQL roles/permissions.
140
154
  email:
141
155
  - sgwr_dts@yahoo.co.jp