guachiman 0.0.8 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/guachiman.gemspec +2 -0
- data/lib/guachiman.rb +4 -1
- data/lib/guachiman/params.rb +9 -1
- data/lib/guachiman/permissions.rb +1 -3
- data/lib/guachiman/rails/permissible.rb +3 -3
- data/lib/guachiman/version.rb +1 -1
- data/test/generators/install_generator_test.rb +3 -1
- metadata +59 -16
- checksums.yaml +0 -7
- data/lib/guachiman/strong_parameters.rb +0 -33
data/guachiman.gemspec
CHANGED
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.require_paths = ['lib']
|
19
19
|
|
20
20
|
spec.add_dependency 'railties', '>= 3.2'
|
21
|
+
spec.add_dependency 'activerecord', '>= 3.2'
|
22
|
+
spec.add_dependency 'strong_parameters', '>= 0.2.1'
|
21
23
|
spec.add_development_dependency 'minitest'
|
22
24
|
spec.add_development_dependency 'minitest-focus'
|
23
25
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
data/lib/guachiman.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
require 'guachiman/version'
|
2
2
|
require 'guachiman/permissions'
|
3
|
-
require 'guachiman/strong_parameters'
|
4
3
|
require 'guachiman/params'
|
4
|
+
require 'active_record'
|
5
|
+
require 'strong_parameters'
|
5
6
|
|
6
7
|
if defined? Rails
|
7
8
|
require 'guachiman/rails/railtie'
|
8
9
|
require 'guachiman/rails/permissible'
|
10
|
+
|
11
|
+
ActiveRecord::Base.send :include, ActiveModel::ForbiddenAttributesProtection
|
9
12
|
end
|
data/lib/guachiman/params.rb
CHANGED
@@ -22,17 +22,25 @@ module Guachiman
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
+
def allowed_params
|
26
|
+
read_allowed_params & write_allowed_params
|
27
|
+
end
|
28
|
+
|
25
29
|
def allow_param resources, attributes
|
26
30
|
allow_read_param resources, attributes
|
27
31
|
allow_write_param resources, attributes
|
28
32
|
end
|
29
33
|
|
34
|
+
def allow_param? resource, attribute
|
35
|
+
allow_write_param?(resource, attribute) && allow_read_param?(resource, attribute)
|
36
|
+
end
|
37
|
+
|
30
38
|
def permit_params! params
|
31
39
|
if @allow_all
|
32
40
|
params.permit!
|
33
41
|
elsif write_allowed_params
|
34
42
|
write_allowed_params.each do |resource, attributes|
|
35
|
-
params[resource] = params[resource].permit(*attributes) if params[resource]
|
43
|
+
params[resource] = params[resource].permit(*attributes) if params[resource]
|
36
44
|
end
|
37
45
|
end
|
38
46
|
end
|
@@ -7,9 +7,7 @@ module Guachiman
|
|
7
7
|
Array(controllers).each do |controller|
|
8
8
|
Array(actions).each do |action|
|
9
9
|
allowed_actions[controller] ||= {}
|
10
|
-
allowed_actions[controller].merge!(
|
11
|
-
action => (block || true)
|
12
|
-
})
|
10
|
+
allowed_actions[controller].merge! action => (block || true)
|
13
11
|
end
|
14
12
|
end
|
15
13
|
end
|
@@ -20,7 +20,7 @@ module Guachiman
|
|
20
20
|
|
21
21
|
def authorize
|
22
22
|
if current_permission.allow? params[:controller], params[:action], current_resource
|
23
|
-
current_permission.permit_params!
|
23
|
+
current_permission.permit_params! params
|
24
24
|
else
|
25
25
|
not_authorized
|
26
26
|
end
|
@@ -28,9 +28,9 @@ module Guachiman
|
|
28
28
|
|
29
29
|
def not_authorized
|
30
30
|
if current_user
|
31
|
-
redirect_to
|
31
|
+
redirect_to root_path, alert: t(:not_authorized)
|
32
32
|
else
|
33
|
-
redirect_to
|
33
|
+
redirect_to login_path, alert: t(:please_login)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
data/lib/guachiman/version.rb
CHANGED
@@ -4,13 +4,15 @@ require 'generators/guachiman/install/install_generator'
|
|
4
4
|
|
5
5
|
class InstallGeneratorTest < Rails::Generators::TestCase
|
6
6
|
DESTINATION = File.expand_path File.join(File.dirname(__FILE__), '..', '..', 'tmp')
|
7
|
+
FileUtils.mkdir_p DESTINATION unless Dir.exists? DESTINATION
|
8
|
+
|
7
9
|
destination DESTINATION
|
8
10
|
|
9
11
|
tests Guachiman::Generators::InstallGenerator
|
10
12
|
setup :prepare_destination
|
11
13
|
|
12
14
|
def prepare_destination
|
13
|
-
FileUtils.rm_r "#{DESTINATION}/app"
|
15
|
+
FileUtils.rm_r "#{DESTINATION}/app" if Dir.exists? "#{DESTINATION}/app"
|
14
16
|
FileUtils.mkdir_p "#{DESTINATION}/app"
|
15
17
|
FileUtils.mkdir_p "#{DESTINATION}/app/models"
|
16
18
|
end
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: guachiman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Francesco Rodriguez
|
@@ -9,53 +10,92 @@ authors:
|
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date: 2013-04
|
13
|
+
date: 2013-06-04 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: railties
|
16
17
|
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
17
19
|
requirements:
|
18
|
-
- - '>='
|
20
|
+
- - ! '>='
|
19
21
|
- !ruby/object:Gem::Version
|
20
22
|
version: '3.2'
|
21
23
|
type: :runtime
|
22
24
|
prerelease: false
|
23
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
24
27
|
requirements:
|
25
|
-
- - '>='
|
28
|
+
- - ! '>='
|
26
29
|
- !ruby/object:Gem::Version
|
27
30
|
version: '3.2'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: activerecord
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '3.2'
|
39
|
+
type: :runtime
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '3.2'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: strong_parameters
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.2.1
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.2.1
|
28
63
|
- !ruby/object:Gem::Dependency
|
29
64
|
name: minitest
|
30
65
|
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
31
67
|
requirements:
|
32
|
-
- - '>='
|
68
|
+
- - ! '>='
|
33
69
|
- !ruby/object:Gem::Version
|
34
70
|
version: '0'
|
35
71
|
type: :development
|
36
72
|
prerelease: false
|
37
73
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
38
75
|
requirements:
|
39
|
-
- - '>='
|
76
|
+
- - ! '>='
|
40
77
|
- !ruby/object:Gem::Version
|
41
78
|
version: '0'
|
42
79
|
- !ruby/object:Gem::Dependency
|
43
80
|
name: minitest-focus
|
44
81
|
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
45
83
|
requirements:
|
46
|
-
- - '>='
|
84
|
+
- - ! '>='
|
47
85
|
- !ruby/object:Gem::Version
|
48
86
|
version: '0'
|
49
87
|
type: :development
|
50
88
|
prerelease: false
|
51
89
|
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
52
91
|
requirements:
|
53
|
-
- - '>='
|
92
|
+
- - ! '>='
|
54
93
|
- !ruby/object:Gem::Version
|
55
94
|
version: '0'
|
56
95
|
- !ruby/object:Gem::Dependency
|
57
96
|
name: bundler
|
58
97
|
requirement: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
59
99
|
requirements:
|
60
100
|
- - ~>
|
61
101
|
- !ruby/object:Gem::Version
|
@@ -63,6 +103,7 @@ dependencies:
|
|
63
103
|
type: :development
|
64
104
|
prerelease: false
|
65
105
|
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
66
107
|
requirements:
|
67
108
|
- - ~>
|
68
109
|
- !ruby/object:Gem::Version
|
@@ -70,15 +111,17 @@ dependencies:
|
|
70
111
|
- !ruby/object:Gem::Dependency
|
71
112
|
name: rake
|
72
113
|
requirement: !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
73
115
|
requirements:
|
74
|
-
- - '>='
|
116
|
+
- - ! '>='
|
75
117
|
- !ruby/object:Gem::Version
|
76
118
|
version: '0'
|
77
119
|
type: :development
|
78
120
|
prerelease: false
|
79
121
|
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
80
123
|
requirements:
|
81
|
-
- - '>='
|
124
|
+
- - ! '>='
|
82
125
|
- !ruby/object:Gem::Version
|
83
126
|
version: '0'
|
84
127
|
description: Basic authorization library inspired in Ryan Bates code
|
@@ -102,33 +145,33 @@ files:
|
|
102
145
|
- lib/guachiman/permissions.rb
|
103
146
|
- lib/guachiman/rails/permissible.rb
|
104
147
|
- lib/guachiman/rails/railtie.rb
|
105
|
-
- lib/guachiman/strong_parameters.rb
|
106
148
|
- lib/guachiman/version.rb
|
107
149
|
- test/generators/install_generator_test.rb
|
108
150
|
- test/test_helper.rb
|
109
151
|
homepage: https://github.com/epiclabs/guachiman
|
110
152
|
licenses:
|
111
153
|
- MIT
|
112
|
-
metadata: {}
|
113
154
|
post_install_message:
|
114
155
|
rdoc_options: []
|
115
156
|
require_paths:
|
116
157
|
- lib
|
117
158
|
required_ruby_version: !ruby/object:Gem::Requirement
|
159
|
+
none: false
|
118
160
|
requirements:
|
119
|
-
- - '>='
|
161
|
+
- - ! '>='
|
120
162
|
- !ruby/object:Gem::Version
|
121
163
|
version: '0'
|
122
164
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
|
+
none: false
|
123
166
|
requirements:
|
124
|
-
- - '>='
|
167
|
+
- - ! '>='
|
125
168
|
- !ruby/object:Gem::Version
|
126
169
|
version: '0'
|
127
170
|
requirements: []
|
128
171
|
rubyforge_project:
|
129
|
-
rubygems_version:
|
172
|
+
rubygems_version: 1.8.23
|
130
173
|
signing_key:
|
131
|
-
specification_version:
|
174
|
+
specification_version: 3
|
132
175
|
summary: Basic authorization library inspired in Ryan Bates code
|
133
176
|
test_files:
|
134
177
|
- test/generators/install_generator_test.rb
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: c8008cb477a135e7d4e7e9f1b242bd670a0a6383
|
4
|
-
data.tar.gz: 8fa602dc839dcd31b5a3b5ad72f9f046fe40a3a4
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: e0cc34bed4b5dc76ed0e1a130ef593e08bd9939caa41118f00796ffbaf0b727e37474b238f89a7005f816d7dfc966f3e6a2349c0b37b3d4a81dea2e840e7d9fb
|
7
|
-
data.tar.gz: 0410d8d1e00ee44d308df078dd5059dffab944f9473d1490f97053ba10df26d88d4acdd4c4a98b6aad76fb1b7baa447613e55b2a0e0a53c0f3b46999efc60261
|
@@ -1,33 +0,0 @@
|
|
1
|
-
module Guachiman
|
2
|
-
module StrongParameters
|
3
|
-
attr_reader :allowed_params
|
4
|
-
|
5
|
-
def allow_param resources, attributes
|
6
|
-
@allowed_params ||= {}
|
7
|
-
Array(resources).each do |resource|
|
8
|
-
allowed_params[resource] ||= []
|
9
|
-
allowed_params[resource] += Array(attributes)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def allow_param?(resource, attribute)
|
14
|
-
if @allow_all
|
15
|
-
true
|
16
|
-
elsif @allowed_params && @allowed_params[resource]
|
17
|
-
@allowed_params[resource].include? attribute
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def permit_params! params
|
22
|
-
if @allow_all
|
23
|
-
params.permit!
|
24
|
-
elsif allowed_params
|
25
|
-
allowed_params.each do |resource, attributes|
|
26
|
-
if params[resource].respond_to? :permit
|
27
|
-
params[resource] = params[resource].permit(*attributes)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|