nifty-generators-improved 0.5
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 +198 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +111 -0
- data/LICENSE +20 -0
- data/README.rdoc +109 -0
- data/Rakefile +10 -0
- data/features/nifty_authentication.feature +80 -0
- data/features/nifty_config.feature +17 -0
- data/features/nifty_layout.feature +20 -0
- data/features/nifty_scaffold.feature +80 -0
- data/features/step_definitions/common_steps.rb +62 -0
- data/features/step_definitions/rails_setup_steps.rb +6 -0
- data/features/support/env.rb +6 -0
- data/features/support/matchers.rb +7 -0
- data/lib/generators/nifty.rb +28 -0
- data/lib/generators/nifty/authentication/USAGE +50 -0
- data/lib/generators/nifty/authentication/authentication_generator.rb +154 -0
- data/lib/generators/nifty/authentication/templates/authlogic_session.rb +2 -0
- data/lib/generators/nifty/authentication/templates/controller_authentication.rb +60 -0
- data/lib/generators/nifty/authentication/templates/fixtures.yml +24 -0
- data/lib/generators/nifty/authentication/templates/migration.rb +20 -0
- data/lib/generators/nifty/authentication/templates/sessions_controller.rb +41 -0
- data/lib/generators/nifty/authentication/templates/sessions_helper.rb +2 -0
- data/lib/generators/nifty/authentication/templates/tests/rspec/sessions_controller.rb +39 -0
- data/lib/generators/nifty/authentication/templates/tests/rspec/user.rb +83 -0
- data/lib/generators/nifty/authentication/templates/tests/rspec/users_controller.rb +56 -0
- data/lib/generators/nifty/authentication/templates/tests/shoulda/sessions_controller.rb +40 -0
- data/lib/generators/nifty/authentication/templates/tests/shoulda/user.rb +85 -0
- data/lib/generators/nifty/authentication/templates/tests/shoulda/users_controller.rb +61 -0
- data/lib/generators/nifty/authentication/templates/tests/testunit/sessions_controller.rb +36 -0
- data/lib/generators/nifty/authentication/templates/tests/testunit/user.rb +88 -0
- data/lib/generators/nifty/authentication/templates/tests/testunit/users_controller.rb +53 -0
- data/lib/generators/nifty/authentication/templates/user.rb +38 -0
- data/lib/generators/nifty/authentication/templates/users_controller.rb +32 -0
- data/lib/generators/nifty/authentication/templates/users_helper.rb +2 -0
- data/lib/generators/nifty/authentication/templates/views/erb/_form.html.erb +20 -0
- data/lib/generators/nifty/authentication/templates/views/erb/edit.html.erb +3 -0
- data/lib/generators/nifty/authentication/templates/views/erb/login.html.erb +30 -0
- data/lib/generators/nifty/authentication/templates/views/erb/signup.html.erb +5 -0
- data/lib/generators/nifty/authentication/templates/views/haml/_form.html.haml +16 -0
- data/lib/generators/nifty/authentication/templates/views/haml/edit.html.haml +3 -0
- data/lib/generators/nifty/authentication/templates/views/haml/login.html.haml +26 -0
- data/lib/generators/nifty/authentication/templates/views/haml/signup.html.haml +5 -0
- data/lib/generators/nifty/config/USAGE +23 -0
- data/lib/generators/nifty/config/config_generator.rb +24 -0
- data/lib/generators/nifty/config/templates/config.yml +8 -0
- data/lib/generators/nifty/config/templates/load_config.rb +2 -0
- data/lib/generators/nifty/layout/USAGE +25 -0
- data/lib/generators/nifty/layout/layout_generator.rb +29 -0
- data/lib/generators/nifty/layout/templates/error_messages_helper.rb +23 -0
- data/lib/generators/nifty/layout/templates/layout.html.erb +19 -0
- data/lib/generators/nifty/layout/templates/layout.html.haml +17 -0
- data/lib/generators/nifty/layout/templates/layout_helper.rb +17 -0
- data/lib/generators/nifty/layout/templates/stylesheet.css +83 -0
- data/lib/generators/nifty/layout/templates/stylesheet.css.scss +88 -0
- data/lib/generators/nifty/scaffold/USAGE +51 -0
- data/lib/generators/nifty/scaffold/scaffold_generator.rb +318 -0
- data/lib/generators/nifty/scaffold/templates/actions/create.rb +8 -0
- data/lib/generators/nifty/scaffold/templates/actions/destroy.rb +5 -0
- data/lib/generators/nifty/scaffold/templates/actions/edit.rb +3 -0
- data/lib/generators/nifty/scaffold/templates/actions/index.rb +3 -0
- data/lib/generators/nifty/scaffold/templates/actions/new.rb +3 -0
- data/lib/generators/nifty/scaffold/templates/actions/show.rb +3 -0
- data/lib/generators/nifty/scaffold/templates/actions/update.rb +8 -0
- data/lib/generators/nifty/scaffold/templates/controller.rb +3 -0
- data/lib/generators/nifty/scaffold/templates/fixtures.yml +9 -0
- data/lib/generators/nifty/scaffold/templates/helper.rb +2 -0
- data/lib/generators/nifty/scaffold/templates/migration.rb +16 -0
- data/lib/generators/nifty/scaffold/templates/model.rb +4 -0
- data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/create.rb +11 -0
- data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/destroy.rb +6 -0
- data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/edit.rb +4 -0
- data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/index.rb +4 -0
- data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/new.rb +4 -0
- data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/show.rb +4 -0
- data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/update.rb +11 -0
- data/lib/generators/nifty/scaffold/templates/tests/rspec/controller.rb +8 -0
- data/lib/generators/nifty/scaffold/templates/tests/rspec/model.rb +7 -0
- data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/create.rb +13 -0
- data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/destroy.rb +8 -0
- data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/edit.rb +6 -0
- data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/index.rb +6 -0
- data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/new.rb +6 -0
- data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/show.rb +6 -0
- data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/update.rb +13 -0
- data/lib/generators/nifty/scaffold/templates/tests/shoulda/controller.rb +5 -0
- data/lib/generators/nifty/scaffold/templates/tests/shoulda/model.rb +7 -0
- data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/create.rb +11 -0
- data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/destroy.rb +6 -0
- data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/edit.rb +4 -0
- data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/index.rb +4 -0
- data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/new.rb +4 -0
- data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/show.rb +4 -0
- data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/update.rb +11 -0
- data/lib/generators/nifty/scaffold/templates/tests/testunit/controller.rb +5 -0
- data/lib/generators/nifty/scaffold/templates/tests/testunit/model.rb +7 -0
- data/lib/generators/nifty/scaffold/templates/views/erb/_form.html.erb +10 -0
- data/lib/generators/nifty/scaffold/templates/views/erb/edit.html.erb +14 -0
- data/lib/generators/nifty/scaffold/templates/views/erb/index.html.erb +29 -0
- data/lib/generators/nifty/scaffold/templates/views/erb/new.html.erb +7 -0
- data/lib/generators/nifty/scaffold/templates/views/erb/show.html.erb +20 -0
- data/lib/generators/nifty/scaffold/templates/views/haml/_form.html.haml +9 -0
- data/lib/generators/nifty/scaffold/templates/views/haml/edit.html.haml +14 -0
- data/lib/generators/nifty/scaffold/templates/views/haml/index.html.haml +25 -0
- data/lib/generators/nifty/scaffold/templates/views/haml/new.html.haml +7 -0
- data/lib/generators/nifty/scaffold/templates/views/haml/show.html.haml +20 -0
- data/test/test_helper.rb +119 -0
- data/test/test_nifty_authentication_generator.rb +274 -0
- data/test/test_nifty_config_generator.rb +37 -0
- data/test/test_nifty_layout_generator.rb +42 -0
- data/test/test_nifty_scaffold_generator.rb +534 -0
- metadata +231 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class <%= user_plural_class_name %>ControllerTest < ActionController::TestCase
|
|
4
|
+
context "new action" do
|
|
5
|
+
should "render new template" do
|
|
6
|
+
get :new
|
|
7
|
+
assert_template 'new'
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
context "create action" do
|
|
12
|
+
should "render new template when <%= user_singular_name %> is invalid" do
|
|
13
|
+
<%= user_class_name %>.any_instance.stubs(:valid?).returns(false)
|
|
14
|
+
post :create
|
|
15
|
+
assert_template 'new'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
should "redirect when <%= user_singular_name %> is valid" do
|
|
19
|
+
<%= user_class_name %>.any_instance.stubs(:valid?).returns(true)
|
|
20
|
+
post :create
|
|
21
|
+
assert_redirected_to root_url
|
|
22
|
+
<%- unless options[:authlogic] -%>
|
|
23
|
+
assert_equal assigns['<%= user_singular_name %>'].id, session['<%= user_singular_name %>_id']
|
|
24
|
+
<%- end -%>
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
context "edit action" do
|
|
29
|
+
should "redirect when not logged in" do
|
|
30
|
+
get :edit, :id => "ignored"
|
|
31
|
+
assert_redirected_to login_url
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
should "render edit template" do
|
|
35
|
+
@controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
|
|
36
|
+
get :edit, :id => "ignored"
|
|
37
|
+
assert_template 'edit'
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
context "update action" do
|
|
42
|
+
should "redirect when not logged in" do
|
|
43
|
+
put :update, :id => "ignored"
|
|
44
|
+
assert_redirected_to login_url
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
should "render edit template when <%= user_singular_name %> is invalid" do
|
|
48
|
+
@controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
|
|
49
|
+
<%= user_class_name %>.any_instance.stubs(:valid?).returns(false)
|
|
50
|
+
put :update, :id => "ignored"
|
|
51
|
+
assert_template 'edit'
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
should "redirect when <%= user_singular_name %> is valid" do
|
|
55
|
+
@controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
|
|
56
|
+
<%= user_class_name %>.any_instance.stubs(:valid?).returns(true)
|
|
57
|
+
put :update, :id => "ignored"
|
|
58
|
+
assert_redirected_to root_url
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class <%= session_plural_class_name %>ControllerTest < ActionController::TestCase
|
|
4
|
+
def test_new
|
|
5
|
+
get :new
|
|
6
|
+
assert_template 'new'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
<%- if options[:authlogic] -%>
|
|
10
|
+
def test_create_invalid
|
|
11
|
+
post :create, :<%= session_singular_name %> => { :username => "foo", :password => "badpassword" }
|
|
12
|
+
assert_template 'new'
|
|
13
|
+
assert_nil <%= session_class_name %>.find
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_create_valid
|
|
17
|
+
post :create, :<%= session_singular_name %> => { :username => "foo", :password => "secret" }
|
|
18
|
+
assert_redirected_to root_url
|
|
19
|
+
assert_equal <%= user_plural_name %>(:foo), <%= session_class_name %>.find.<%= user_singular_name %>
|
|
20
|
+
end
|
|
21
|
+
<%- else -%>
|
|
22
|
+
def test_create_invalid
|
|
23
|
+
<%= user_class_name %>.stubs(:authenticate).returns(nil)
|
|
24
|
+
post :create
|
|
25
|
+
assert_template 'new'
|
|
26
|
+
assert_nil session['<%= user_singular_name %>_id']
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_create_valid
|
|
30
|
+
<%= user_class_name %>.stubs(:authenticate).returns(<%= user_class_name %>.first)
|
|
31
|
+
post :create
|
|
32
|
+
assert_redirected_to root_url
|
|
33
|
+
assert_equal <%= user_class_name %>.first.id, session['<%= user_singular_name %>_id']
|
|
34
|
+
end
|
|
35
|
+
<%- end -%>
|
|
36
|
+
end
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class <%= user_class_name %>Test < ActiveSupport::TestCase
|
|
4
|
+
<%- unless options[:authlogic] -%>
|
|
5
|
+
def new_<%= user_singular_name %>(attributes = {})
|
|
6
|
+
attributes[:username] ||= 'foo'
|
|
7
|
+
attributes[:email] ||= 'foo@example.com'
|
|
8
|
+
attributes[:password] ||= 'abc123'
|
|
9
|
+
attributes[:password_confirmation] ||= attributes[:password]
|
|
10
|
+
<%= user_singular_name %> = <%= user_class_name %>.new(attributes)
|
|
11
|
+
<%= user_singular_name %>.valid? # run validations
|
|
12
|
+
<%= user_singular_name %>
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def setup
|
|
16
|
+
<%= user_class_name %>.delete_all
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_valid
|
|
20
|
+
assert new_<%= user_singular_name %>.valid?
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_require_username
|
|
24
|
+
assert_equal ["can't be blank"], new_<%= user_singular_name %>(:username => '').errors[:username]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_require_password
|
|
28
|
+
assert_equal ["can't be blank"], new_<%= user_singular_name %>(:password => '').errors[:password]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_require_well_formed_email
|
|
32
|
+
assert_equal ["is invalid"], new_<%= user_singular_name %>(:email => 'foo@bar@example.com').errors[:email]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_validate_uniqueness_of_email
|
|
36
|
+
new_<%= user_singular_name %>(:email => 'bar@example.com').save!
|
|
37
|
+
assert_equal ["has already been taken"], new_<%= user_singular_name %>(:email => 'bar@example.com').errors[:email]
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_validate_uniqueness_of_username
|
|
41
|
+
new_<%= user_singular_name %>(:username => 'uniquename').save!
|
|
42
|
+
assert_equal ["has already been taken"], new_<%= user_singular_name %>(:username => 'uniquename').errors[:username]
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_validate_odd_characters_in_username
|
|
46
|
+
assert_equal ["should only contain letters, numbers, or .-_@"], new_<%= user_singular_name %>(:username => 'odd ^&(@)').errors[:username]
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def test_validate_password_length
|
|
50
|
+
assert_equal ["is too short (minimum is 4 characters)"], new_<%= user_singular_name %>(:password => 'bad').errors[:password]
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_require_matching_password_confirmation
|
|
54
|
+
assert_equal ["doesn't match confirmation"], new_<%= user_singular_name %>(:password_confirmation => 'nonmatching').errors[:password]
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def test_generate_password_hash_and_salt_on_create
|
|
58
|
+
<%= user_singular_name %> = new_<%= user_singular_name %>
|
|
59
|
+
<%= user_singular_name %>.save!
|
|
60
|
+
assert <%= user_singular_name %>.password_hash
|
|
61
|
+
assert <%= user_singular_name %>.password_salt
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def test_authenticate_by_username
|
|
65
|
+
<%= user_class_name %>.delete_all
|
|
66
|
+
<%= user_singular_name %> = new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret')
|
|
67
|
+
<%= user_singular_name %>.save!
|
|
68
|
+
assert_equal <%= user_singular_name %>, <%= user_class_name %>.authenticate('foobar', 'secret')
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_authenticate_by_email
|
|
72
|
+
<%= user_class_name %>.delete_all
|
|
73
|
+
<%= user_singular_name %> = new_<%= user_singular_name %>(:email => 'foo@bar.com', :password => 'secret')
|
|
74
|
+
<%= user_singular_name %>.save!
|
|
75
|
+
assert_equal <%= user_singular_name %>, <%= user_class_name %>.authenticate('foo@bar.com', 'secret')
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def test_authenticate_bad_username
|
|
79
|
+
assert_nil <%= user_class_name %>.authenticate('nonexisting', 'secret')
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def test_authenticate_bad_password
|
|
83
|
+
<%= user_class_name %>.delete_all
|
|
84
|
+
new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret').save!
|
|
85
|
+
assert_nil <%= user_class_name %>.authenticate('foobar', 'badpassword')
|
|
86
|
+
end
|
|
87
|
+
<%- end -%>
|
|
88
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class <%= user_plural_class_name %>ControllerTest < ActionController::TestCase
|
|
4
|
+
def test_new
|
|
5
|
+
get :new
|
|
6
|
+
assert_template 'new'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_create_invalid
|
|
10
|
+
<%= user_class_name %>.any_instance.stubs(:valid?).returns(false)
|
|
11
|
+
post :create
|
|
12
|
+
assert_template 'new'
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_create_valid
|
|
16
|
+
<%= user_class_name %>.any_instance.stubs(:valid?).returns(true)
|
|
17
|
+
post :create
|
|
18
|
+
assert_redirected_to root_url
|
|
19
|
+
<%- unless options[:authlogic] -%>
|
|
20
|
+
assert_equal assigns['<%= user_singular_name %>'].id, session['<%= user_singular_name %>_id']
|
|
21
|
+
<%- end -%>
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_edit_without_user
|
|
25
|
+
get :edit, :id => "ignored"
|
|
26
|
+
assert_redirected_to login_url
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_edit
|
|
30
|
+
@controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
|
|
31
|
+
get :edit, :id => "ignored"
|
|
32
|
+
assert_template 'edit'
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_update_without_user
|
|
36
|
+
put :update, :id => "ignored"
|
|
37
|
+
assert_redirected_to login_url
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_update_invalid
|
|
41
|
+
@controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
|
|
42
|
+
<%= user_class_name %>.any_instance.stubs(:valid?).returns(false)
|
|
43
|
+
put :update, :id => "ignored"
|
|
44
|
+
assert_template 'edit'
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_update_valid
|
|
48
|
+
@controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
|
|
49
|
+
<%= user_class_name %>.any_instance.stubs(:valid?).returns(true)
|
|
50
|
+
put :update, :id => "ignored"
|
|
51
|
+
assert_redirected_to root_url
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
class <%= user_class_name %> < ActiveRecord::Base
|
|
2
|
+
<%- if options[:authlogic] -%>
|
|
3
|
+
acts_as_authentic
|
|
4
|
+
<%- else -%>
|
|
5
|
+
# new columns need to be added here to be writable through mass assignment
|
|
6
|
+
attr_accessible :username, :email, :password, :password_confirmation
|
|
7
|
+
|
|
8
|
+
attr_accessor :password
|
|
9
|
+
before_save :prepare_password
|
|
10
|
+
|
|
11
|
+
validates_presence_of :username
|
|
12
|
+
validates_uniqueness_of :username, :email, :allow_blank => true
|
|
13
|
+
validates_format_of :username, :with => /^[-\w\._@]+$/i, :allow_blank => true, :message => "should only contain letters, numbers, or .-_@"
|
|
14
|
+
validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
|
|
15
|
+
validates_presence_of :password, :on => :create
|
|
16
|
+
validates_confirmation_of :password
|
|
17
|
+
validates_length_of :password, :minimum => 4, :allow_blank => true
|
|
18
|
+
|
|
19
|
+
# login can be either username or email address
|
|
20
|
+
def self.authenticate(login, pass)
|
|
21
|
+
<%= user_singular_name %> = find_by_username(login) || find_by_email(login)
|
|
22
|
+
return <%= user_singular_name %> if <%= user_singular_name %> && <%= user_singular_name %>.password_hash == <%= user_singular_name %>.encrypt_password(pass)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def encrypt_password(pass)
|
|
26
|
+
BCrypt::Engine.hash_secret(pass, password_salt)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
def prepare_password
|
|
32
|
+
unless password.blank?
|
|
33
|
+
self.password_salt = BCrypt::Engine.generate_salt
|
|
34
|
+
self.password_hash = encrypt_password(password)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
<%- end -%>
|
|
38
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
class <%= user_plural_class_name %>Controller < ApplicationController
|
|
2
|
+
before_filter :login_required, :except => [:new, :create]
|
|
3
|
+
|
|
4
|
+
def new
|
|
5
|
+
@<%= user_singular_name %> = <%= user_class_name %>.new
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def create
|
|
9
|
+
@<%= user_singular_name %> = <%= user_class_name %>.new(params[:<%= user_singular_name %>])
|
|
10
|
+
if @<%= user_singular_name %>.save
|
|
11
|
+
<%- unless options[:authlogic] -%>
|
|
12
|
+
session[:<%= user_singular_name %>_id] = @<%= user_singular_name %>.id
|
|
13
|
+
<%- end -%>
|
|
14
|
+
redirect_to root_url, :notice => "Thank you for signing up! You are now logged in."
|
|
15
|
+
else
|
|
16
|
+
render :new
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def edit
|
|
21
|
+
@<%= user_singular_name %> = current_<%= user_singular_name %>
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def update
|
|
25
|
+
@<%= user_singular_name %> = current_<%= user_singular_name %>
|
|
26
|
+
if @<%= user_singular_name %>.update_attributes(params[:<%= user_singular_name %>])
|
|
27
|
+
redirect_to root_url, :notice => "Your profile has been updated."
|
|
28
|
+
else
|
|
29
|
+
render :edit
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<%%= form_for @<%= user_singular_name %> do |f| %>
|
|
2
|
+
<%%= f.error_messages %>
|
|
3
|
+
<div class="field">
|
|
4
|
+
<%%= f.label :username %>
|
|
5
|
+
<%%= f.text_field :username %>
|
|
6
|
+
</div>
|
|
7
|
+
<div class="field">
|
|
8
|
+
<%%= f.label :email, "Email Address" %>
|
|
9
|
+
<%%= f.text_field :email %>
|
|
10
|
+
</div>
|
|
11
|
+
<div class="field">
|
|
12
|
+
<%%= f.label :password %>
|
|
13
|
+
<%%= f.password_field :password %>
|
|
14
|
+
</div>
|
|
15
|
+
<div class="field">
|
|
16
|
+
<%%= f.label :password_confirmation, "Confirm Password" %>
|
|
17
|
+
<%%= f.password_field :password_confirmation %>
|
|
18
|
+
</div>
|
|
19
|
+
<div class="actions"><%%= f.submit (@<%= user_singular_name %>.new_record? ? "Sign up" : "Update") %></div>
|
|
20
|
+
<%% end %>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<%% title "Log in" %>
|
|
2
|
+
|
|
3
|
+
<p>Don't have an account? <%%= link_to "Sign up!", signup_path %></p>
|
|
4
|
+
|
|
5
|
+
<%- if options[:authlogic] -%>
|
|
6
|
+
<%%= form_for @<%= session_singular_name %> do |f| %>
|
|
7
|
+
<%%= f.error_messages %>
|
|
8
|
+
<div class="field">
|
|
9
|
+
<%%= f.label :username %>
|
|
10
|
+
<%%= f.text_field :username %>
|
|
11
|
+
</div>
|
|
12
|
+
<div class="field">
|
|
13
|
+
<%%= f.label :password %>
|
|
14
|
+
<%%= f.password_field :password %>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="actions"><%%= f.submit "Log in" %></div>
|
|
17
|
+
<%% end %>
|
|
18
|
+
<%- else -%>
|
|
19
|
+
<%%= form_tag <%= session_plural_name %>_path do %>
|
|
20
|
+
<div class="field">
|
|
21
|
+
<%%= label_tag :login, "Username or Email Address" %>
|
|
22
|
+
<%%= text_field_tag :login, params[:login] %>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="field">
|
|
25
|
+
<%%= label_tag :password %>
|
|
26
|
+
<%%= password_field_tag :password %>
|
|
27
|
+
</div>
|
|
28
|
+
<div class="actions"><%%= submit_tag "Log in" %></div>
|
|
29
|
+
<%% end %>
|
|
30
|
+
<%- end -%>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
= form_for @<%= user_singular_name %> do |f|
|
|
2
|
+
= f.error_messages
|
|
3
|
+
.field
|
|
4
|
+
= f.label :username
|
|
5
|
+
= f.text_field :username
|
|
6
|
+
.field
|
|
7
|
+
= f.label :email, "Email Address"
|
|
8
|
+
= f.text_field :email
|
|
9
|
+
.field
|
|
10
|
+
= f.label :password
|
|
11
|
+
= f.password_field :password
|
|
12
|
+
.field
|
|
13
|
+
= f.label :password_confirmation, "Confirm Password"
|
|
14
|
+
= f.password_field :password_confirmation
|
|
15
|
+
.actions
|
|
16
|
+
= f.submit (@<%= user_singular_name %>.new_record? ? "Sign up" : "Update")
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
- title "Log in"
|
|
2
|
+
|
|
3
|
+
%p== Don't have an account? #{link_to "Sign up!", signup_path}
|
|
4
|
+
|
|
5
|
+
<%- if options[:authlogic] -%>
|
|
6
|
+
= form_for @<%= session_singular_name %> do |f|
|
|
7
|
+
= f.error_messages
|
|
8
|
+
.field
|
|
9
|
+
= f.label :username
|
|
10
|
+
= f.text_field :username
|
|
11
|
+
.field
|
|
12
|
+
= f.label :password
|
|
13
|
+
= f.password_field :password
|
|
14
|
+
.actions
|
|
15
|
+
= f.submit "Log in"
|
|
16
|
+
<%- else -%>
|
|
17
|
+
- form_tag <%= session_plural_name %>_path do
|
|
18
|
+
.field
|
|
19
|
+
= label_tag :login, "Username or Email Address"
|
|
20
|
+
= text_field_tag :login, params[:login]
|
|
21
|
+
.field
|
|
22
|
+
= label_tag :password
|
|
23
|
+
= password_field_tag :password
|
|
24
|
+
.actions
|
|
25
|
+
= submit_tag "Log in"
|
|
26
|
+
<%- end -%>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
Description:
|
|
2
|
+
The nifty_config generator creates YAML file in your config
|
|
3
|
+
directory and an initializer to load this config. The config has a
|
|
4
|
+
separate section for each environment. This is a great place to put
|
|
5
|
+
any config settings you don't want in your app.
|
|
6
|
+
|
|
7
|
+
The config is loaded into a constant called APP_CONFIG by default,
|
|
8
|
+
this changes depending on the name you choose to pass the generator.
|
|
9
|
+
Use this constant to access the config settings like this.
|
|
10
|
+
|
|
11
|
+
APP_CONFIG[:some_setting]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
Examples:
|
|
15
|
+
rails generate nifty:config
|
|
16
|
+
|
|
17
|
+
Config: config/app_config.yml
|
|
18
|
+
Initializer: config/initializers/load_app_config.rb
|
|
19
|
+
|
|
20
|
+
rails generate nifty:config passwords
|
|
21
|
+
|
|
22
|
+
Config: config/passwords_config.yml
|
|
23
|
+
Initializer: config/initializers/load_passwords_config.rb
|