cream 0.8.7 → 0.8.8
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.
- data/Changelog.txt +4 -0
- data/Gemfile +1 -1
- data/README.textile +0 -2
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/cream.gemspec +11 -10
- data/lib/cream/helper/role.rb +30 -6
- data/lib/generators/cream/core_ext.rb +14 -0
- data/lib/generators/cream/full_config/full_config_generator.rb +16 -2
- data/lib/generators/cream/helpers/all.rb +1 -0
- data/lib/generators/cream/helpers/args_helper.rb +1 -1
- data/lib/generators/devise/users/helper.rb +8 -6
- data/lib/generators/devise/users/routes_helper.rb +19 -4
- data/lib/generators/devise/users/users_generator.rb +13 -9
- metadata +9 -8
data/Changelog.txt
CHANGED
data/Gemfile
CHANGED
data/README.textile
CHANGED
@@ -59,8 +59,6 @@ Cream edge (directly from trunk or a feature branch), might have some extra good
|
|
59
59
|
|
60
60
|
<code>gem 'cream', :git => 'https://github.com/kristianmandrup/cream.git'</code>
|
61
61
|
|
62
|
-
Note: As a bonus you currently get access to a new *devise:customize* generator under development (Jan 7, 2011)
|
63
|
-
|
64
62
|
There is also a _:branch_ option to use a specific branch, fx a feature branch.
|
65
63
|
|
66
64
|
If you want to develop on Cream: <code>git clone https://github.com/kristianmandrup/cream.git</code>
|
data/Rakefile
CHANGED
@@ -27,10 +27,10 @@ begin
|
|
27
27
|
gem.add_dependency "rails", ">= 3.0.1"
|
28
28
|
|
29
29
|
gem.add_dependency "rails3_artifactor", "~> 0.3.2"
|
30
|
-
gem.add_dependency 'logging_assist', "
|
30
|
+
gem.add_dependency 'logging_assist', ">= 0.1.6"
|
31
31
|
|
32
32
|
gem.add_dependency "r3_plugin_toolbox", ">= 0.4.0"
|
33
|
-
gem.add_dependency "sugar-high", "
|
33
|
+
gem.add_dependency "sugar-high", ">= 0.3.1"
|
34
34
|
|
35
35
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
36
36
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.8.
|
1
|
+
0.8.8
|
data/cream.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{cream}
|
8
|
-
s.version = "0.8.
|
8
|
+
s.version = "0.8.8"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kristian Mandrup"]
|
@@ -54,6 +54,7 @@ Gem::Specification.new do |s|
|
|
54
54
|
"lib/cream/view/user_action_menu.rb",
|
55
55
|
"lib/generators/cancan/config/config_generator.rb",
|
56
56
|
"lib/generators/cream/app/app_generator.rb",
|
57
|
+
"lib/generators/cream/core_ext.rb",
|
57
58
|
"lib/generators/cream/full_config/full_config_generator.rb",
|
58
59
|
"lib/generators/cream/helpers/all.rb",
|
59
60
|
"lib/generators/cream/helpers/args_helper.rb",
|
@@ -141,7 +142,7 @@ Gem::Specification.new do |s|
|
|
141
142
|
s.add_runtime_dependency(%q<cancan>, [">= 1.4.0"])
|
142
143
|
s.add_runtime_dependency(%q<rails>, [">= 3.0.1"])
|
143
144
|
s.add_runtime_dependency(%q<rails3_artifactor>, [">= 0.3.2"])
|
144
|
-
s.add_runtime_dependency(%q<logging_assist>, ["
|
145
|
+
s.add_runtime_dependency(%q<logging_assist>, [">= 0.2.0"])
|
145
146
|
s.add_runtime_dependency(%q<r3_plugin_toolbox>, [">= 0.4.0"])
|
146
147
|
s.add_runtime_dependency(%q<sugar-high>, ["~> 0.3.1"])
|
147
148
|
s.add_development_dependency(%q<rspec>, [">= 2.0.1"])
|
@@ -159,9 +160,9 @@ Gem::Specification.new do |s|
|
|
159
160
|
s.add_runtime_dependency(%q<cancan>, [">= 1.4.0"])
|
160
161
|
s.add_runtime_dependency(%q<rails>, [">= 3.0.1"])
|
161
162
|
s.add_runtime_dependency(%q<rails3_artifactor>, ["~> 0.3.2"])
|
162
|
-
s.add_runtime_dependency(%q<logging_assist>, ["
|
163
|
+
s.add_runtime_dependency(%q<logging_assist>, [">= 0.1.6"])
|
163
164
|
s.add_runtime_dependency(%q<r3_plugin_toolbox>, [">= 0.4.0"])
|
164
|
-
s.add_runtime_dependency(%q<sugar-high>, ["
|
165
|
+
s.add_runtime_dependency(%q<sugar-high>, [">= 0.3.1"])
|
165
166
|
else
|
166
167
|
s.add_dependency(%q<devise-links>, [">= 0.2.0"])
|
167
168
|
s.add_dependency(%q<cancan-rest-links>, [">= 0.2.0"])
|
@@ -172,7 +173,7 @@ Gem::Specification.new do |s|
|
|
172
173
|
s.add_dependency(%q<cancan>, [">= 1.4.0"])
|
173
174
|
s.add_dependency(%q<rails>, [">= 3.0.1"])
|
174
175
|
s.add_dependency(%q<rails3_artifactor>, [">= 0.3.2"])
|
175
|
-
s.add_dependency(%q<logging_assist>, ["
|
176
|
+
s.add_dependency(%q<logging_assist>, [">= 0.2.0"])
|
176
177
|
s.add_dependency(%q<r3_plugin_toolbox>, [">= 0.4.0"])
|
177
178
|
s.add_dependency(%q<sugar-high>, ["~> 0.3.1"])
|
178
179
|
s.add_dependency(%q<rspec>, [">= 2.0.1"])
|
@@ -190,9 +191,9 @@ Gem::Specification.new do |s|
|
|
190
191
|
s.add_dependency(%q<cancan>, [">= 1.4.0"])
|
191
192
|
s.add_dependency(%q<rails>, [">= 3.0.1"])
|
192
193
|
s.add_dependency(%q<rails3_artifactor>, ["~> 0.3.2"])
|
193
|
-
s.add_dependency(%q<logging_assist>, ["
|
194
|
+
s.add_dependency(%q<logging_assist>, [">= 0.1.6"])
|
194
195
|
s.add_dependency(%q<r3_plugin_toolbox>, [">= 0.4.0"])
|
195
|
-
s.add_dependency(%q<sugar-high>, ["
|
196
|
+
s.add_dependency(%q<sugar-high>, [">= 0.3.1"])
|
196
197
|
end
|
197
198
|
else
|
198
199
|
s.add_dependency(%q<devise-links>, [">= 0.2.0"])
|
@@ -204,7 +205,7 @@ Gem::Specification.new do |s|
|
|
204
205
|
s.add_dependency(%q<cancan>, [">= 1.4.0"])
|
205
206
|
s.add_dependency(%q<rails>, [">= 3.0.1"])
|
206
207
|
s.add_dependency(%q<rails3_artifactor>, [">= 0.3.2"])
|
207
|
-
s.add_dependency(%q<logging_assist>, ["
|
208
|
+
s.add_dependency(%q<logging_assist>, [">= 0.2.0"])
|
208
209
|
s.add_dependency(%q<r3_plugin_toolbox>, [">= 0.4.0"])
|
209
210
|
s.add_dependency(%q<sugar-high>, ["~> 0.3.1"])
|
210
211
|
s.add_dependency(%q<rspec>, [">= 2.0.1"])
|
@@ -222,9 +223,9 @@ Gem::Specification.new do |s|
|
|
222
223
|
s.add_dependency(%q<cancan>, [">= 1.4.0"])
|
223
224
|
s.add_dependency(%q<rails>, [">= 3.0.1"])
|
224
225
|
s.add_dependency(%q<rails3_artifactor>, ["~> 0.3.2"])
|
225
|
-
s.add_dependency(%q<logging_assist>, ["
|
226
|
+
s.add_dependency(%q<logging_assist>, [">= 0.1.6"])
|
226
227
|
s.add_dependency(%q<r3_plugin_toolbox>, [">= 0.4.0"])
|
227
|
-
s.add_dependency(%q<sugar-high>, ["
|
228
|
+
s.add_dependency(%q<sugar-high>, [">= 0.3.1"])
|
228
229
|
end
|
229
230
|
end
|
230
231
|
|
data/lib/cream/helper/role.rb
CHANGED
@@ -17,12 +17,18 @@ module Cream::Helper
|
|
17
17
|
return if Labels.state_check Labels.extract(options), current_user
|
18
18
|
yield
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
# does the user have ANY of the given roles?
|
22
22
|
# Uses generic roles API
|
23
23
|
def has_role? user_role
|
24
24
|
current_user && current_user.has_role?(user_role)
|
25
25
|
end
|
26
|
+
|
27
|
+
# does the user have ANY of the given roles?
|
28
|
+
# Uses generic roles API
|
29
|
+
def has_any_role? user_role
|
30
|
+
current_user && current_user.has_any_role?(user_role)
|
31
|
+
end
|
26
32
|
|
27
33
|
# does the user have ALL of the given roles?
|
28
34
|
# Uses generic roles API
|
@@ -30,6 +36,20 @@ module Cream::Helper
|
|
30
36
|
current_user && current_user.has_roles?(roles.flat_uniq)
|
31
37
|
end
|
32
38
|
|
39
|
+
# using group membership as guard
|
40
|
+
|
41
|
+
def for_user_in_group name, &block
|
42
|
+
yield if current_user && current_user.is_in_group?(name)
|
43
|
+
end
|
44
|
+
|
45
|
+
def for_user_in_groups *names, &block
|
46
|
+
yield if current_user && current_user.is_in_group?(names.flat_uniq)
|
47
|
+
end
|
48
|
+
|
49
|
+
def for_user_in_any_group *names, &block
|
50
|
+
yield if current_user && current_user.is_in_any_groups?(names.flat_uniq)
|
51
|
+
end
|
52
|
+
|
33
53
|
# returns true if the current user owns the object
|
34
54
|
# tries default 'owner' relations if none given as an argument
|
35
55
|
def owner? obj, relation=nil
|
@@ -44,14 +64,16 @@ module Cream::Helper
|
|
44
64
|
|
45
65
|
# execute block if user DOES have any of the given roles
|
46
66
|
def for_roles *user_roles, &block
|
47
|
-
user_roles = user_roles.
|
67
|
+
user_roles = user_roles.flat_uniq
|
48
68
|
yield if has_roles?(user_roles) && block
|
49
69
|
end
|
70
|
+
alias_method :when_user_is, :for_roles
|
50
71
|
|
51
72
|
def for_any_role *user_roles, &block
|
52
|
-
user_roles = user_roles.
|
53
|
-
yield if
|
73
|
+
user_roles = user_roles.flat_uniq
|
74
|
+
yield if has_any_role?(user_roles) && block
|
54
75
|
end
|
76
|
+
alias_method :when_user_is_any_of, :for_any_role
|
55
77
|
|
56
78
|
def for_role user_role, &block
|
57
79
|
if is_negation_role?(user_role)
|
@@ -61,9 +83,10 @@ module Cream::Helper
|
|
61
83
|
yield if has_role?(user_role) && block
|
62
84
|
end
|
63
85
|
|
86
|
+
|
64
87
|
# execute block if user DOES NOT have any of the given roles
|
65
88
|
def not_for_roles(*user_roles, &block)
|
66
|
-
user_roles = user_roles.
|
89
|
+
user_roles = user_roles.flat_uniq
|
67
90
|
yield if !has_roles?(user_roles) && block
|
68
91
|
end
|
69
92
|
|
@@ -73,7 +96,8 @@ module Cream::Helper
|
|
73
96
|
return
|
74
97
|
end
|
75
98
|
yield if !has_role?(user_role) && block
|
76
|
-
end
|
99
|
+
end
|
100
|
+
alias_method :when_user_is_not, :not_for_roles
|
77
101
|
|
78
102
|
protected
|
79
103
|
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# TODO:
|
2
|
+
# model_file_name and similar methods in rails3_assist and rails3_artifaftor should be fixed to always call underscore on filenames
|
3
|
+
|
4
|
+
class String
|
5
|
+
def as_filename
|
6
|
+
self.underscore
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class Symbol
|
11
|
+
def as_filename
|
12
|
+
self.to_s.underscore
|
13
|
+
end
|
14
|
+
end
|
@@ -35,6 +35,8 @@ module Cream
|
|
35
35
|
class_option :migrations, :type => :boolean, :default => false, :desc => "Autorun database migrations?", :aliases => '-m'
|
36
36
|
|
37
37
|
# Devise customize
|
38
|
+
class_option :customize, :type => :array, :default => [], :desc => "Which elements of devise to customize (customize generator)"
|
39
|
+
|
38
40
|
class_option :user_name, :type => :boolean, :default => true, :desc => "Add username as login option"
|
39
41
|
class_option :login_type, :type => :string, :default => 'generic', :desc => "How to login: 'email', 'username', 'generic' (i.e 'username' or 'email')"
|
40
42
|
|
@@ -80,7 +82,8 @@ module Cream
|
|
80
82
|
end
|
81
83
|
|
82
84
|
def run_migrations
|
83
|
-
return if orm !=
|
85
|
+
return if orm != :active_record
|
86
|
+
logger.debug "Running DB migrations"
|
84
87
|
execute "rake db:migrate"
|
85
88
|
end
|
86
89
|
|
@@ -91,7 +94,10 @@ module Cream
|
|
91
94
|
def run_devise
|
92
95
|
rgen "devise:config #{user_class} --orm #{orm} #{admin_user_option}"
|
93
96
|
rgen "devise:users --orm #{orm} --roles #{roles_list} #{admin_user_option} --no-gems"
|
94
|
-
|
97
|
+
|
98
|
+
say("Devise credentials not customized since --customize option was not used to say so!", :green) if !customize_credentials?
|
99
|
+
|
100
|
+
rgen "devise:customize #{user_class} --orm #{orm} --login-type #{login_type} #{user_name_option}" if customize_credentials?
|
95
101
|
end
|
96
102
|
|
97
103
|
def run_cancan
|
@@ -117,6 +123,14 @@ require 'cream/configure/rails'
|
|
117
123
|
end
|
118
124
|
end
|
119
125
|
|
126
|
+
def customize_credentials?
|
127
|
+
customize.include? 'credentials'
|
128
|
+
end
|
129
|
+
|
130
|
+
def customize
|
131
|
+
options[:customize]
|
132
|
+
end
|
133
|
+
|
120
134
|
def login_type
|
121
135
|
options[:login_type]
|
122
136
|
end
|
@@ -7,8 +7,10 @@ module DeviseUserGenerator
|
|
7
7
|
}
|
8
8
|
end
|
9
9
|
|
10
|
-
def inherit_model hash
|
11
|
-
|
10
|
+
def inherit_model hash
|
11
|
+
class_name = subclass(hash)
|
12
|
+
superclass_name = superclass(hash)
|
13
|
+
File.replace_content_from model_file_name(class_name.as_filename), :where => /class #{class_name}/, :with => "class #{class_name} < #{superclass_name}"
|
12
14
|
end
|
13
15
|
|
14
16
|
def superclass hash
|
@@ -20,15 +22,15 @@ module DeviseUserGenerator
|
|
20
22
|
end
|
21
23
|
|
22
24
|
def remove_inheritance user
|
23
|
-
File.remove_content_from model_file_name(user), :where => /<\s*ActiveRecord::Base/
|
25
|
+
File.remove_content_from model_file_name(user.as_filename), :where => /<\s*ActiveRecord::Base/
|
24
26
|
end
|
25
27
|
|
26
28
|
def has_admin_model?
|
27
|
-
has_model? admin_class
|
29
|
+
has_model? admin_class.as_filename
|
28
30
|
end
|
29
31
|
|
30
32
|
def has_user_model?
|
31
|
-
has_model? user_class
|
33
|
+
has_model? user_class.as_filename
|
32
34
|
end
|
33
35
|
|
34
36
|
def user_generator
|
@@ -38,7 +40,7 @@ module DeviseUserGenerator
|
|
38
40
|
def has_devise_user? user
|
39
41
|
return true if is_admin?(user) && !admin_class
|
40
42
|
begin
|
41
|
-
read_model(user) =~ /devise/
|
43
|
+
read_model(user.as_filename) =~ /devise/
|
42
44
|
rescue Exception => e
|
43
45
|
logger.info "Exception for #has_devise_user? #{user}: #{e.message}"
|
44
46
|
false
|
@@ -7,8 +7,10 @@ module DeviseUserGenerator
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def routes_configure!
|
10
|
+
routes_content = routes_for_roles
|
11
|
+
puts "Insert into routes: #{routes_content}"
|
10
12
|
insert_into_routes do
|
11
|
-
|
13
|
+
routes_content
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|
@@ -23,9 +25,22 @@ module DeviseUserGenerator
|
|
23
25
|
end
|
24
26
|
|
25
27
|
def roles_routes
|
26
|
-
roles_except(:guest).
|
27
|
-
|
28
|
-
|
28
|
+
roles_to_route = roles_except(:guest).delete_if do |role|
|
29
|
+
is_there = !(read_routes_file =~ /devise_for :#{role.pluralize}, :class_name =>/).nil?
|
30
|
+
logger.debug "not doing devise routing for #{role.pluralize} as it is already there" if is_there
|
31
|
+
is_there
|
32
|
+
end
|
33
|
+
|
34
|
+
roles_to_route.each do |role|
|
35
|
+
if read_routes_file =~ /devise_for :#{role.pluralize}/
|
36
|
+
logger.debug "removing old devise routing for: #{role}"
|
37
|
+
File.remove_content_from routes_file, :where => /devise_for :#{role.pluralize}/
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
logger.debug "performing devise role routing for: #{roles_to_route}"
|
42
|
+
roles_to_route.map do |role|
|
43
|
+
%Q{
|
29
44
|
devise_for :#{role.pluralize}, :class_name => '#{role.classify}'
|
30
45
|
as :#{role} do
|
31
46
|
match "/#{role.pluralize}/sign_up" => "devise/registrations#new", :as => :#{role}_signup
|
@@ -113,18 +113,22 @@ module Devise
|
|
113
113
|
|
114
114
|
def customize_note
|
115
115
|
%q{
|
116
|
-
|
117
|
-
Example:
|
116
|
+
Customize controller action if needed to render individual registration form for each role
|
118
117
|
|
119
|
-
|
120
|
-
match "/editors/sign_up" => "user_registrations#new_editor", :as => :editor_signup
|
118
|
+
Example:
|
121
119
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
120
|
+
- routes.rb:
|
121
|
+
|
122
|
+
match "/editors/sign_up" => "user_registrations#new_editor", :as => :editor_signup
|
123
|
+
|
124
|
+
- user_registrations_controller.rb:
|
125
|
+
|
126
|
+
def new_editor
|
127
|
+
build_resource({})
|
128
|
+
end
|
126
129
|
|
127
|
-
|
130
|
+
Then create the registration form (view) for the :editor user in 'views/user_registrations/new_editor.html.erb'
|
131
|
+
See comments in routes.rb for more info. There is also a page on the wiki about advanced routes customization.
|
128
132
|
}
|
129
133
|
end
|
130
134
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 8
|
8
|
-
-
|
9
|
-
version: 0.8.
|
8
|
+
- 8
|
9
|
+
version: 0.8.8
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Kristian Mandrup
|
@@ -157,13 +157,13 @@ dependencies:
|
|
157
157
|
requirement: &id010 !ruby/object:Gem::Requirement
|
158
158
|
none: false
|
159
159
|
requirements:
|
160
|
-
- -
|
160
|
+
- - ">="
|
161
161
|
- !ruby/object:Gem::Version
|
162
162
|
segments:
|
163
163
|
- 0
|
164
|
-
-
|
165
|
-
-
|
166
|
-
version: 0.
|
164
|
+
- 2
|
165
|
+
- 0
|
166
|
+
version: 0.2.0
|
167
167
|
type: :runtime
|
168
168
|
prerelease: false
|
169
169
|
version_requirements: *id010
|
@@ -427,7 +427,7 @@ dependencies:
|
|
427
427
|
requirement: &id028 !ruby/object:Gem::Requirement
|
428
428
|
none: false
|
429
429
|
requirements:
|
430
|
-
- -
|
430
|
+
- - ">="
|
431
431
|
- !ruby/object:Gem::Version
|
432
432
|
segments:
|
433
433
|
- 0
|
@@ -457,7 +457,7 @@ dependencies:
|
|
457
457
|
requirement: &id030 !ruby/object:Gem::Requirement
|
458
458
|
none: false
|
459
459
|
requirements:
|
460
|
-
- -
|
460
|
+
- - ">="
|
461
461
|
- !ruby/object:Gem::Version
|
462
462
|
segments:
|
463
463
|
- 0
|
@@ -514,6 +514,7 @@ files:
|
|
514
514
|
- lib/cream/view/user_action_menu.rb
|
515
515
|
- lib/generators/cancan/config/config_generator.rb
|
516
516
|
- lib/generators/cream/app/app_generator.rb
|
517
|
+
- lib/generators/cream/core_ext.rb
|
517
518
|
- lib/generators/cream/full_config/full_config_generator.rb
|
518
519
|
- lib/generators/cream/helpers/all.rb
|
519
520
|
- lib/generators/cream/helpers/args_helper.rb
|