devisable 0.1.1 → 0.1.2
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/README.rdoc +38 -10
- data/VERSION +1 -1
- data/devisable.gemspec +4 -2
- data/lib/generators/devisable/devisable_generator.rb +6 -3
- data/lib/generators/devisable/templates/cucumber/step_definitions/authentication_steps.rb +1 -1
- data/lib/generators/devisable/templates/cucumber/user.feature +1 -1
- data/lib/generators/devisable/templates/spec/models/ability_spec.erb +6 -13
- data/lib/generators/devisable/templates/spec/models/user_spec.erb +7 -22
- data/pkg/devisable-0.1.1.gem +0 -0
- data/pkg/devisable-0.1.2.gem +0 -0
- metadata +5 -3
data/README.rdoc
CHANGED
@@ -9,21 +9,23 @@ It is a quick and easy generator that sets up devise,cancan and/or oauth on your
|
|
9
9
|
* Has a user and roles tool so you can change permissions inside a gui
|
10
10
|
* Supports all devise options
|
11
11
|
* Contains rspec and cucumber test options
|
12
|
-
* Can be added to existing project that don't already have devise.
|
12
|
+
* Can be added to existing project that don't already have devise. More work will be required here because you will have to move around files to match your project.
|
13
13
|
|
14
14
|
== Installation
|
15
15
|
|
16
16
|
Devisable supports rails 3 with ruby >= 1.9.2.
|
17
17
|
|
18
|
-
|
18
|
+
Add devisable to your gemfile
|
19
19
|
|
20
|
-
|
20
|
+
Run bundle
|
21
21
|
|
22
22
|
rails generate devisable --help
|
23
23
|
|
24
24
|
== Usage
|
25
25
|
|
26
|
-
It is always good practice to start a new branch in your repo before making major updates like when using devisable.
|
26
|
+
It is always good practice to start a new branch in your repo before making major updates like when using devisable.
|
27
|
+
|
28
|
+
At least make sure you have committed all updates prior, in case you have to rollback.
|
27
29
|
|
28
30
|
Use --help to see a list of complete options
|
29
31
|
|
@@ -59,6 +61,10 @@ To just setup Basic authentication with devisable
|
|
59
61
|
rails generate devisable
|
60
62
|
|
61
63
|
This will setup with the devise options 1,4,5,7,8,10
|
64
|
+
|
65
|
+
Starting a project - Use the -n option
|
66
|
+
|
67
|
+
rails generate devisable -n
|
62
68
|
|
63
69
|
Twitter Oauth - Note you will need to setup your app in twitter before running this
|
64
70
|
|
@@ -75,11 +81,7 @@ Facebook Oauth
|
|
75
81
|
All three (normal authentication,twitter_oauth, facebook_oauth)
|
76
82
|
|
77
83
|
rails generate devisable -c 1,2,3,5,6,7,8 -t asdf489fhkbnajbsdf,2uh3uh383493hkjdf -o asdf489fhkbnajbsdf,2uh3uh383493hkjdf,10100101001 -u http://dev.yoururl.com
|
78
|
-
|
79
|
-
Starting a project - Use the -n option
|
80
|
-
|
81
|
-
rails generate devisable -c 1,2,3,5,6,7,8 -t asdf489fhkbnajbsdf,2uh3uh383493hkjdf -o asdf489fhkbnajbsdf,2uh3uh383493hkjdf,10100101001 -n -u http://dev.yoururl.com
|
82
|
-
|
84
|
+
|
83
85
|
Add Cucumber tests - use the -C option
|
84
86
|
|
85
87
|
rails generate devisable -c 1,2,3,5,6,7,8 -t asdf489fhkbnajbsdf,2uh3uh383493hkjdf -o asdf489fhkbnajbsdf,2uh3uh383493hkjdf,10100101001 -n -C -u http://dev.yoururl.com
|
@@ -87,6 +89,11 @@ Add Cucumber tests - use the -C option
|
|
87
89
|
Add extra fields to the user model
|
88
90
|
|
89
91
|
rails generate devisable -e first_name:string,last_name:string
|
92
|
+
|
93
|
+
After running the generator you will most likely need to do a migration.
|
94
|
+
|
95
|
+
rake db:migrate
|
96
|
+
|
90
97
|
|
91
98
|
== Contributing to devisable
|
92
99
|
|
@@ -104,8 +111,29 @@ Add extra fields to the user model
|
|
104
111
|
* Support for haml and sass instead of erb
|
105
112
|
* Add Facebook javascript autologin option
|
106
113
|
|
114
|
+
== Gems
|
115
|
+
|
116
|
+
devisable uses the following gems:
|
117
|
+
|
118
|
+
* devise (https://github.com/plataformatec/devise)
|
119
|
+
* cancan (https://github.com/ryanb/cancan.git)
|
120
|
+
* warden_oauth (https://github.com/scottsampson/warden_oauth)
|
121
|
+
* json_pure (https://github.com/flori/json)
|
122
|
+
* twitter_oauth (https://github.com/moomerman/twitter_oauth.git)
|
123
|
+
* cucumber (https://github.com/aslakhellesoy/cucumber)
|
124
|
+
* cucumber-rails (https://github.com/aslakhellesoy/cucumber-rails)
|
125
|
+
* capybara (https://github.com/jnicklas/capybara)
|
126
|
+
* database_cleaner (https://github.com/bmabey/database_cleaner)
|
127
|
+
* rspec-rails (https://github.com/rspec/rspec-rails)
|
128
|
+
|
129
|
+
== Maintainers
|
130
|
+
|
131
|
+
* cloudspace (http://www.cloudspace.com - https://github.com/cloudspace)
|
132
|
+
* Scott Sampson (http://github.com/scottsampson)
|
133
|
+
* Jeremiah Hemphill (http://github.com/jeremiahishere)
|
134
|
+
|
107
135
|
== Copyright
|
108
136
|
|
109
|
-
Copyright (c) 2011
|
137
|
+
Copyright (c) 2011 cloudspace. See LICENSE.txt for
|
110
138
|
further details.
|
111
139
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
data/devisable.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{devisable}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Scott Sampson", "Jeremiah Hemphill"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-06-28}
|
13
13
|
s.description = %q{Generates initial code for a devise install. Gives the options for oauth, using cancan, and creating a user tool to manage the users.}
|
14
14
|
s.email = %q{scott@cloudspace.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -79,6 +79,8 @@ Gem::Specification.new do |s|
|
|
79
79
|
"lib/generators/devisable/templates/spec/models/role_spec.erb",
|
80
80
|
"lib/generators/devisable/templates/spec/models/user_spec.erb",
|
81
81
|
"pkg/devisable-0.1.0.gem",
|
82
|
+
"pkg/devisable-0.1.1.gem",
|
83
|
+
"pkg/devisable-0.1.2.gem",
|
82
84
|
"pkg/devise_generator-0.1.0.gem",
|
83
85
|
"test/helper.rb",
|
84
86
|
"test/test_devise_generator.rb"
|
@@ -169,6 +169,9 @@ class DevisableGenerator < Rails::Generators::Base
|
|
169
169
|
end
|
170
170
|
rep_str = ' devise ' + rep_str[1..-1] + "\n"
|
171
171
|
gsub_file "app/models/user.rb" , /^[ ]*(devise)([^\n]*)(\n)(.*)(\s)/, rep_str
|
172
|
+
|
173
|
+
str = "attr_accessible :username\n"
|
174
|
+
insert_into_file "app/models/user.rb", str, :after => "# Setup accessible (or protected) attributes for your model\n"
|
172
175
|
|
173
176
|
rep_str = load_erb_string('partials/_user_model_methods.erb')
|
174
177
|
replace_last_end_in_file_with("app/models/user.rb",rep_str)
|
@@ -246,15 +249,15 @@ class DevisableGenerator < Rails::Generators::Base
|
|
246
249
|
insert_into_file user_migration_file, fields, :after => "t.token_authenticatable\n"
|
247
250
|
|
248
251
|
#add correct fields to user model
|
249
|
-
str = "attr_accessible :default_provider
|
250
|
-
insert_into_file "app/models/user.rb", str, :after => "
|
252
|
+
str = "attr_accessible :default_provider\n"
|
253
|
+
insert_into_file "app/models/user.rb", str, :after => "attr_accessible :username\n"
|
251
254
|
|
252
255
|
generate("model", "oauth_profile user_id:integer provider:string token:string secret:string username:string email:string name:string img_url:string")
|
253
256
|
|
254
257
|
insert_into_file "app/models/oauth_profile.rb", "belongs_to :user\n", :after => "class OauthProfile < ActiveRecord::Base\n"
|
255
258
|
|
256
259
|
insert_into_file "app/models/user.rb", "has_many :oauth_profiles\n", :after => "class User < ActiveRecord::Base\n"
|
257
|
-
|
260
|
+
|
258
261
|
end
|
259
262
|
|
260
263
|
# Link to "Login With Twitter/Facebook" somewhere in your view
|
@@ -13,7 +13,7 @@ Feature: Manage users
|
|
13
13
|
Given I am signed in as "user@cloudspace.com"
|
14
14
|
And I only have the role "GeneralUser"
|
15
15
|
When I go to the users page
|
16
|
-
When I should be on the
|
16
|
+
When I should be on the homepage
|
17
17
|
And I should see "You are not authorized to access this page."
|
18
18
|
|
19
19
|
Scenario: Editing a User
|
@@ -7,35 +7,28 @@ describe Ability do
|
|
7
7
|
:name => 'SuperAdmin'
|
8
8
|
})
|
9
9
|
|
10
|
-
@
|
11
|
-
:name => 'RoleUser'
|
12
|
-
})
|
13
|
-
|
14
|
-
@user = User.new({:email => 'fred@testsite.com'})
|
15
|
-
@user2 = User.new({:email => 'terry@testsite.com'})
|
10
|
+
@user = User.new({:email => 'fred@testsite.com', :username=>'fred', :password=>'pwfred'})
|
16
11
|
@user.roles << @role
|
17
|
-
@user2.roles << @role2
|
18
|
-
|
19
12
|
@role.permissions << Permission.new({:model => 'Role',:ability => 'Add'})
|
20
13
|
@role.permissions << Permission.new({:model => 'Role',:ability => 'Edit'})
|
21
14
|
@role.permissions << Permission.new({:model => 'Role',:ability => 'Delete'})
|
22
15
|
@role.permissions << Permission.new({:model => 'Role',:ability => 'View'})
|
23
|
-
@role.save
|
24
|
-
@user.save
|
16
|
+
@role.save!
|
17
|
+
@user.save!
|
25
18
|
@user_ability = Ability.new(@user)
|
26
19
|
|
27
20
|
@role2 = Role.new({
|
28
21
|
:name => 'RoleUser'
|
29
22
|
})
|
30
23
|
|
31
|
-
@user2 = User.new({:email => 'terry@testsite.com'})
|
24
|
+
@user2 = User.new({:email => 'terry@testsite.com', :username=>'terry', :password=>'pwterry'})
|
32
25
|
@user2.roles << @role2
|
33
26
|
@role2.permissions << Permission.new({:model => 'Role',:ability => 'add'})
|
34
27
|
@role2.permissions << Permission.new({:model => 'Role',:ability => 'edit'})
|
35
28
|
@role2.permissions << Permission.new({:model => 'Role',:ability => 'delete'})
|
36
29
|
@role2.permissions << Permission.new({:model => 'Role',:ability => 'View'})
|
37
|
-
@role2.save
|
38
|
-
@user2.save
|
30
|
+
@role2.save!
|
31
|
+
@user2.save!
|
39
32
|
@user_ability2 = Ability.new(@user2)
|
40
33
|
|
41
34
|
end
|
@@ -8,16 +8,14 @@ describe User do
|
|
8
8
|
@role2 = Role.new({
|
9
9
|
:name => 'SuperAdmin'
|
10
10
|
})
|
11
|
-
@role.save
|
12
|
-
@role2.save
|
13
|
-
@user = User.new({:email => 'fred@testsite.com'})
|
14
|
-
@user2 = User.new({:email => 'fred2@testsite.com',:username => 'fred2'})
|
15
|
-
@user3 = User.new({:username => 'fred3'})
|
16
|
-
@user4 = User.new()
|
11
|
+
@role.save!
|
12
|
+
@role2.save!
|
13
|
+
@user = User.new({:email => 'fred@testsite.com', :password=>'pwfred'})
|
14
|
+
@user2 = User.new({:email => 'fred2@testsite.com',:username => 'fred2', :password=>'fred2pw'})
|
17
15
|
@user.roles << @role
|
18
|
-
@user.save
|
16
|
+
@user.save!
|
19
17
|
@user2.roles << @role2
|
20
|
-
@user2.save
|
18
|
+
@user2.save!
|
21
19
|
end
|
22
20
|
|
23
21
|
it "should have the role Admin if assigned the Admin Role" do
|
@@ -32,12 +30,7 @@ describe User do
|
|
32
30
|
(@user.display_name == 'fred@testsite.com').should be_true
|
33
31
|
end
|
34
32
|
|
35
|
-
it "should have username
|
36
|
-
(@user2.display_name == 'fred2').should be_true
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should have username fred if there is a username and no email" do
|
40
|
-
@user2.email = ''
|
33
|
+
it "should have username fred2 if there is a username and an email" do
|
41
34
|
(@user2.display_name == 'fred2').should be_true
|
42
35
|
end
|
43
36
|
|
@@ -46,14 +39,6 @@ describe User do
|
|
46
39
|
User.superadmins.include?(@user).should be_false
|
47
40
|
end
|
48
41
|
|
49
|
-
it "should require a username or email" do
|
50
|
-
@user4.should_not be_valid
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should be valid with a username" do
|
54
|
-
@user3.should be_valid
|
55
|
-
end
|
56
|
-
|
57
42
|
it "should be valid with an email" do
|
58
43
|
@user.should be_valid
|
59
44
|
end
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: devisable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Scott Sampson
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2011-
|
14
|
+
date: 2011-06-28 00:00:00 -04:00
|
15
15
|
default_executable:
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
@@ -130,6 +130,8 @@ files:
|
|
130
130
|
- lib/generators/devisable/templates/spec/models/role_spec.erb
|
131
131
|
- lib/generators/devisable/templates/spec/models/user_spec.erb
|
132
132
|
- pkg/devisable-0.1.0.gem
|
133
|
+
- pkg/devisable-0.1.1.gem
|
134
|
+
- pkg/devisable-0.1.2.gem
|
133
135
|
- pkg/devise_generator-0.1.0.gem
|
134
136
|
- test/helper.rb
|
135
137
|
- test/test_devise_generator.rb
|
@@ -147,7 +149,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
147
149
|
requirements:
|
148
150
|
- - ">="
|
149
151
|
- !ruby/object:Gem::Version
|
150
|
-
hash: -
|
152
|
+
hash: -2159356801736187739
|
151
153
|
segments:
|
152
154
|
- 0
|
153
155
|
version: "0"
|