casein 4.0.0 → 5.0.0.0

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.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +246 -0
  3. data/PUBLIC_VERSION.yml +2 -2
  4. data/README.rdoc +73 -49
  5. data/Rakefile +7 -5
  6. data/app/assets/fonts/casein/glyphiconshalflings-regular.eot +0 -0
  7. data/app/assets/fonts/casein/glyphiconshalflings-regular.otf +0 -0
  8. data/app/assets/fonts/casein/glyphiconshalflings-regular.svg +175 -0
  9. data/app/assets/fonts/casein/glyphiconshalflings-regular.ttf +0 -0
  10. data/app/assets/fonts/casein/glyphiconshalflings-regular.woff +0 -0
  11. data/app/assets/images/casein/casein.png +0 -0
  12. data/app/assets/javascripts/casein/bootstrap.js +1966 -0
  13. data/app/assets/javascripts/casein/casein.js +34 -19
  14. data/app/assets/javascripts/casein/html5shiv.js +8 -0
  15. data/app/assets/stylesheets/casein/bootstrap-glyphicons.css.scss +2 -0
  16. data/app/assets/stylesheets/casein/bootstrap.css +4692 -0
  17. data/app/assets/stylesheets/casein/casein-bootstrap-overrides.css.scss +76 -0
  18. data/app/assets/stylesheets/casein/casein.css.scss +258 -3
  19. data/app/assets/stylesheets/casein/login.css.scss +48 -109
  20. data/app/controllers/casein/{user_sessions_controller.rb → admin_user_sessions_controller.rb} +6 -10
  21. data/app/controllers/casein/admin_users_controller.rb +124 -0
  22. data/app/controllers/casein/casein_controller.rb +11 -9
  23. data/app/controllers/casein/password_resets_controller.rb +8 -10
  24. data/app/helpers/casein/casein_helper.rb +94 -31
  25. data/app/mailers/casein/casein_notification.rb +13 -13
  26. data/app/models/casein/{user.rb → admin_user.rb} +2 -2
  27. data/app/models/casein/{user_session.rb → admin_user_session.rb} +1 -1
  28. data/app/views/casein/admin_user_sessions/new.html.erb +56 -0
  29. data/app/views/casein/admin_users/index.html.erb +39 -0
  30. data/app/views/casein/admin_users/new.html.erb +57 -0
  31. data/app/views/casein/admin_users/show.html.erb +104 -0
  32. data/app/views/casein/casein/blank.html.erb +12 -1
  33. data/app/views/casein/casein_notification/generate_new_password.erb +1 -1
  34. data/app/views/casein/casein_notification/new_user_information.erb +1 -1
  35. data/app/views/casein/casein_notification/password_reset_instructions.erb +1 -1
  36. data/app/views/casein/password_resets/edit.html.erb +21 -33
  37. data/app/views/layouts/casein_auth.html.erb +34 -22
  38. data/app/views/layouts/casein_main.html.erb +111 -64
  39. data/config/initializers/will_paginate.rb +40 -0
  40. data/config/routes.rb +2 -2
  41. data/lib/casein.rb +9 -3
  42. data/lib/casein/engine.rb +5 -1
  43. data/lib/generators/casein/install/install_generator.rb +3 -3
  44. data/lib/generators/casein/install/templates/app/helpers/casein/config_helper.rb +10 -11
  45. data/lib/generators/casein/install/templates/app/views/casein/layouts/{_left_navigation.html.erb → _tab_navigation.html.erb} +0 -0
  46. data/lib/generators/casein/install/templates/app/views/casein/layouts/_top_navigation.html.erb +4 -0
  47. data/lib/generators/casein/install/templates/db/migrate/{casein_create_users.rb → casein_create_admin_users.rb} +3 -3
  48. data/lib/generators/casein/scaffold/scaffold_generator.rb +20 -8
  49. data/lib/generators/casein/scaffold/templates/controller.rb +6 -6
  50. data/lib/generators/casein/scaffold/templates/views/_form.html.erb +11 -8
  51. data/lib/generators/casein/scaffold/templates/views/_table.html.erb +12 -10
  52. data/lib/generators/casein/scaffold/templates/views/index.html.erb +7 -3
  53. data/lib/generators/casein/scaffold/templates/views/new.html.erb +3 -3
  54. data/lib/generators/casein/scaffold/templates/views/show.html.erb +5 -5
  55. data/lib/railties/tasks.rake +15 -13
  56. metadata +67 -46
  57. data/MIT-LICENSE +0 -21
  58. data/app/assets/images/casein/header.png +0 -0
  59. data/app/assets/images/casein/icons/add.png +0 -0
  60. data/app/assets/images/casein/icons/delete.png +0 -0
  61. data/app/assets/images/casein/icons/table.png +0 -0
  62. data/app/assets/images/casein/login/alertBg.png +0 -0
  63. data/app/assets/images/casein/login/background.png +0 -0
  64. data/app/assets/images/casein/login/bottom.png +0 -0
  65. data/app/assets/images/casein/login/loginBoxBg.png +0 -0
  66. data/app/assets/images/casein/login/loginBoxBottom.png +0 -0
  67. data/app/assets/images/casein/login/loginBoxTop.png +0 -0
  68. data/app/assets/images/casein/login/loginSubmit.png +0 -0
  69. data/app/assets/images/casein/login/recoverSubmit.png +0 -0
  70. data/app/assets/images/casein/login/top.png +0 -0
  71. data/app/assets/images/casein/nav.png +0 -0
  72. data/app/assets/images/casein/rightNav.png +0 -0
  73. data/app/assets/images/casein/rightNavButton.png +0 -0
  74. data/app/assets/images/casein/visitSiteNav.png +0 -0
  75. data/app/assets/javascripts/casein/login.js +0 -27
  76. data/app/assets/stylesheets/casein/elements.css.scss +0 -307
  77. data/app/assets/stylesheets/casein/screen.css.scss +0 -224
  78. data/app/controllers/casein/users_controller.rb +0 -108
  79. data/app/views/casein/user_sessions/new.html.erb +0 -66
  80. data/app/views/casein/users/index.html.erb +0 -35
  81. data/app/views/casein/users/new.html.erb +0 -46
  82. data/app/views/casein/users/show.html.erb +0 -94
  83. data/lib/generators/casein/install/templates/app/views/casein/layouts/_right_navigation.html.erb +0 -1
@@ -4,35 +4,35 @@ module Casein
4
4
 
5
5
  self.prepend_view_path File.join(File.dirname(__FILE__), '..', 'views', 'casein')
6
6
 
7
- def generate_new_password from, casein_user, host, pass
8
- @name = casein_user.name
7
+ def generate_new_password from, casein_admin_user, host, pass
8
+ @name = casein_admin_user.name
9
9
  @host = host
10
- @login = casein_user.login
10
+ @login = casein_admin_user.login
11
11
  @pass = pass
12
12
  @from_text = casein_config_website_name
13
13
 
14
- mail(:to => casein_user.email, :from => from, :subject => "[#{casein_config_website_name}] New password")
14
+ mail(:to => casein_admin_user.email, :from => from, :subject => "[#{casein_config_website_name}] New password")
15
15
  end
16
16
 
17
- def new_user_information from, casein_user, host, pass
18
- @name = casein_user.name
17
+ def new_user_information from, casein_admin_user, host, pass
18
+ @name = casein_admin_user.name
19
19
  @host = host
20
- @login = casein_user.login
20
+ @login = casein_admin_user.login
21
21
  @pass = pass
22
22
  @from_text = casein_config_website_name
23
23
 
24
- mail(:to => casein_user.email, :from => from, :subject => "[#{casein_config_website_name}] New user account")
24
+ mail(:to => casein_admin_user.email, :from => from, :subject => "[#{casein_config_website_name}] New user account")
25
25
  end
26
26
 
27
- def password_reset_instructions from, casein_user, host
27
+ def password_reset_instructions from, casein_admin_user, host
28
28
  ActionMailer::Base.default_url_options[:host] = host.gsub("http://", "")
29
- @name = casein_user.name
29
+ @name = casein_admin_user.name
30
30
  @host = host
31
- @login = casein_user.login
32
- @reset_password_url = edit_casein_password_reset_url + "/?token=#{casein_user.perishable_token}"
31
+ @login = casein_admin_user.login
32
+ @reset_password_url = edit_casein_password_reset_url + "/?token=#{casein_admin_user.perishable_token}"
33
33
  @from_text = casein_config_website_name
34
34
 
35
- mail(:to => casein_user.email, :from => from, :subject => "[#{casein_config_website_name}] Password reset instructions")
35
+ mail(:to => casein_admin_user.email, :from => from, :subject => "[#{casein_config_website_name}] Password reset instructions")
36
36
  end
37
37
 
38
38
  end
@@ -4,7 +4,7 @@ $CASEIN_USER_ACCESS_LEVEL_ADMIN = 0
4
4
  $CASEIN_USER_ACCESS_LEVEL_USER = 10
5
5
 
6
6
  module Casein
7
- class User < ActiveRecord::Base
7
+ class AdminUser < ActiveRecord::Base
8
8
 
9
9
  def self.table_name
10
10
  self.to_s.gsub("::", "_").tableize
@@ -24,7 +24,7 @@ module Casein
24
24
  validates_presence_of :time_zone
25
25
 
26
26
  def self.has_more_than_one_admin
27
- Casein::User.where(:access_level => $CASEIN_USER_ACCESS_LEVEL_ADMIN).count > 1
27
+ Casein::AdminUser.where(:access_level => $CASEIN_USER_ACCESS_LEVEL_ADMIN).count > 1
28
28
  end
29
29
 
30
30
  def send_create_notification
@@ -1,5 +1,5 @@
1
1
  module Casein
2
- class UserSession < ::Authlogic::Session::Base
2
+ class AdminUserSession < ::Authlogic::Session::Base
3
3
  include ActiveModel::Conversion
4
4
  def persisted?
5
5
  false
@@ -0,0 +1,56 @@
1
+ <%= form_for @admin_user_session, :url => casein_admin_user_session_path do |f| %>
2
+ <% if @admin_user_session.errors.any? %>
3
+ <div id="error_messages" class="alert alert-danger">
4
+ <% @admin_user_session.errors.keys.each do |key| %>
5
+ <%= (key.to_s.humanize + " ") unless key == :base %>
6
+ <%= @admin_user_session.errors[key].first %>
7
+ <% end %>
8
+ </div>
9
+ <% end %>
10
+
11
+ <% if flash[:warning] %>
12
+ <div id="error" class="alert alert-danger">
13
+ <%= flash[:warning] %>
14
+ </div>
15
+ <% end %>
16
+ <% if flash[:notice] %>
17
+ <div id="notice" class="alert alert-success">
18
+ <%= flash[:notice] %>
19
+ </div>
20
+ <% end %>
21
+
22
+ <div class="form-group">
23
+ <%= f.text_field :login, :placeholder => "Username", :class => "form-control input-large" %>
24
+ </div>
25
+ <div class="form-group">
26
+ <%= f.password_field :password, :placeholder => "Password", :class => "form-control input-large" %>
27
+ </div>
28
+
29
+ <div class="form-group">
30
+ <div class="checkbox-inline">
31
+ <label>
32
+ <%= f.check_box :remember_me %> Remember me
33
+ </label>
34
+ </div>
35
+ </div>
36
+
37
+ <div class="form-group">
38
+ <%= f.submit "Sign in", :class => "btn btn-success btn-large btn-block" %>
39
+ </div>
40
+
41
+ <div class="form-group">
42
+ <input type="button" value="Forgotten password?" class="btn btn-link" onclick="toggleDiv('recover');" />
43
+ </div>
44
+
45
+ <% end %>
46
+
47
+ <%= form_tag casein_password_reset_url do %>
48
+ <div id="recover" style="display:none;">
49
+ <div class="form-group">
50
+ <%= text_field_tag :recover_email, params[:recover_email], :placeholder => "Your email address", :class => "form-control input-large" %>
51
+ </div>
52
+ <div class="form-group">
53
+ <%= submit_tag "Reset password", :class => "btn btn-primary btn-large btn-block" %>
54
+ </div>
55
+ </div>
56
+ <% end %>
@@ -0,0 +1,39 @@
1
+ <h2>Users<%= casein_pagination_details @users %></h2>
2
+
3
+ <table class="table table-striped table-hover table-condensed">
4
+ <thead>
5
+ <tr>
6
+ <th><%= casein_sort_link 'Username', :login %></th>
7
+ <th><%= casein_sort_link 'Name', :name %></th>
8
+ <th><%= casein_sort_link 'Role', :access_level %></th>
9
+ <th>&nbsp;</th>
10
+ </tr>
11
+ </thead>
12
+
13
+ <% @users.each do |user| %>
14
+ <tr>
15
+ <td><%= casein_table_cell_link user.login, casein_admin_user_path(user) %></td>
16
+ <td><%= casein_table_cell_link user.name, casein_admin_user_path(user) %></td>
17
+ <td><%= casein_table_cell_link casein_get_access_level_text(user.access_level), casein_admin_user_path(user) %></td>
18
+ <td class="delete">
19
+ <% if user.is_admin? == false || Casein::AdminUser.has_more_than_one_admin %>
20
+ <% confirm_message = "Are you sure you want to delete #{user.name}?" %>
21
+
22
+ <% if user.id == @session_user.id %>
23
+ <% confirm_message += "\n\nWARNING: This is your user account. You will be signed out if you proceed." %>
24
+ <% end %>
25
+
26
+ <%= link_to(casein_show_row_icon("trash"), casein_admin_user_path(user), :method => :delete, :data => { :confirm => confirm_message }) %>
27
+ <% end %>
28
+ </td>
29
+ </tr>
30
+ <% end %>
31
+ </table>
32
+
33
+ <div class="text-center">
34
+ <%= will_paginate @users %>
35
+ </div>
36
+
37
+ <%= content_for :sidebar do %>
38
+ <li><%= link_to "#{casein_show_icon('plus-sign')}Add a new user".html_safe, new_casein_admin_user_path %></li>
39
+ <% end %>
@@ -0,0 +1,57 @@
1
+ <h2>Add a new user</h2>
2
+
3
+ <%= form_for @casein_admin_user do |form| %>
4
+
5
+ <div class="row">
6
+ <div class="col-lg-6">
7
+ <%= casein_text_field form, @casein_admin_user, :login, {:size => 30, :casein_label => "Username"} %>
8
+ </div>
9
+ <div class="col-lg-6">
10
+ <%= casein_text_field form, @casein_admin_user, :name %>
11
+ </div>
12
+ </div>
13
+
14
+ <div class="row">
15
+ <div class="col-lg-6">
16
+ <%= casein_text_field form, @casein_admin_user, :email %>
17
+ </div>
18
+ <div class="col-lg-6">
19
+ <%= casein_time_zone_select form, @casein_admin_user, :time_zone, ActiveSupport::TimeZone.us_zones %>
20
+ </div>
21
+ </div>
22
+
23
+
24
+ <div class="row">
25
+ <div class="col-lg-6">
26
+ <%= casein_select form, @casein_admin_user, :access_level, casein_get_access_level_array, {:casein_label => "Role"} %>
27
+ </div>
28
+ <div class="col-lg-6">
29
+ </div>
30
+ </div>
31
+
32
+ <div class="row">
33
+ <div class="col-lg-6">
34
+ <%= casein_password_field form, @casein_admin_user, :password, {:casein_label => "Password"} %>
35
+ </div>
36
+ <div class="col-lg-6">
37
+ <%= casein_password_field form, @casein_admin_user, :password_confirmation, {:casein_label => "Repeat password"} %>
38
+ </div>
39
+ <div class="col-lg-12 password-checkbox">
40
+ <div class="checkbox">
41
+ <label>
42
+ <%= check_box_tag :generate_random_password, "1", false, {:id => 'generate-random-password-checkbox'} %> Generate random password
43
+ </label>
44
+ </div>
45
+ </div>
46
+ </div>
47
+
48
+ <p class="submits">
49
+ <%= link_to 'Cancel', casein_admin_users_path, :class => 'btn btn-mini btn-danger' %>
50
+ <%= form.submit "Add new user", :class => "btn btn-mini btn-primary" %>
51
+ </p>
52
+
53
+ <% end %>
54
+
55
+ <%= content_for :sidebar do %>
56
+ <li><%= link_to "#{casein_show_icon('th-list')}Back to list".html_safe, casein_admin_users_path %></li>
57
+ <% end %>
@@ -0,0 +1,104 @@
1
+ <h2>View user</h2>
2
+
3
+ <%= form_for @casein_admin_user do |f| %>
4
+
5
+ <div class="row">
6
+ <div class="col-lg-6">
7
+ <%= casein_text_field f, f.object, :login, {:size => 30, :casein_label => "Username"} %>
8
+ </div>
9
+ <div class="col-lg-6">
10
+ <%= casein_text_field f, f.object, :name %>
11
+ </div>
12
+ </div>
13
+
14
+ <div class="row">
15
+ <div class="col-lg-6">
16
+ <%= casein_text_field f, f.object, :email %>
17
+ </div>
18
+ <div class="col-lg-6">
19
+ <%= casein_time_zone_select f, f.object, :time_zone, ActiveSupport::TimeZone.us_zones %>
20
+ </div>
21
+ </div>
22
+
23
+ <% if @session_user.is_admin? && (@casein_admin_user.is_admin? == false || Casein::AdminUser.has_more_than_one_admin) %>
24
+ <div class="row">
25
+ <div class="col-lg-6">
26
+ <%= casein_select f, f.object, :access_level, casein_get_access_level_array, {:casein_label => "Role"} %>
27
+ </div>
28
+ <div class="col-lg-6">
29
+ </div>
30
+ </div>
31
+ <% end %>
32
+
33
+ <p class="submits">
34
+ <%= link_to 'Cancel', casein_admin_users_path, :class => 'btn btn-mini btn-danger' %>
35
+ <%= f.submit "Save changes", :class => "btn btn-mini btn-primary" %>
36
+ </p>
37
+ <% end %>
38
+
39
+ <% if @session_user.is_admin? %>
40
+
41
+ <h2>Reset password <small>(admin action &mdash; use carefully)</small></h2>
42
+
43
+ <%= form_for @casein_admin_user, :url => reset_password_casein_admin_user_path(@casein_admin_user) do |f| %>
44
+
45
+ <div class="row">
46
+ <div class="col-lg-6">
47
+ <%= casein_password_field f, f.object, :password, {:casein_label => "New password"} %>
48
+ </div>
49
+ <div class="col-lg-6">
50
+ <%= casein_password_field f, f.object, :password_confirmation, {:casein_label => "Repeat new password"} %>
51
+ </div>
52
+ <div class="col-lg-12 password-checkbox">
53
+ <div class="checkbox">
54
+ <label>
55
+ <%= check_box_tag :generate_random_password, "1", false, {:id => 'generate-random-password-checkbox'} %> Generate random password
56
+ </label>
57
+ </div>
58
+ </div>
59
+ </div>
60
+
61
+ <p class="submits">
62
+ <%= f.submit "Reset", :class => "btn btn-mini btn-warning" %>
63
+ </p>
64
+
65
+ <% end %>
66
+
67
+ <% elsif @session_user.id == @casein_admin_user.id %>
68
+
69
+ <h2>Change password</h2>
70
+
71
+ <%= form_for @casein_admin_user, :url => update_password_casein_admin_user_path(@casein_admin_user) do |f| %>
72
+
73
+ <div class="row">
74
+ <div class="col-lg-6">
75
+ <div class="form-group">
76
+ <%= label_tag :form_current_password, "Current password" %>
77
+ <%= password_field_tag :form_current_password, "", {:class => 'form-control'} %>
78
+ </div>
79
+ </div>
80
+ <div class="col-lg-6">
81
+ </div>
82
+ </div>
83
+
84
+ <div class="row">
85
+ <div class="col-lg-6">
86
+ <%= casein_password_field f, f.object, :password, {:casein_label => "New password"} %>
87
+ </div>
88
+ <div class="col-lg-6">
89
+ <%= casein_password_field f, f.object, :password_confirmation, {:casein_label => "Repeat new password"} %>
90
+ </div>
91
+ </div>
92
+
93
+ <p class="submits">
94
+ <%= f.submit "Change", :class => "btn btn-mini btn-primary" %>
95
+ </p>
96
+
97
+ <% end %>
98
+ <% end %>
99
+
100
+ <%= content_for :sidebar do %>
101
+ <% if @session_user.is_admin? %>
102
+ <li><%= link_to "#{casein_show_icon('th-list')}Back to list".html_safe, casein_admin_users_path %></li>
103
+ <% end %>
104
+ <% end %>
@@ -1 +1,12 @@
1
- <h2>Welcome to the <%= casein_config_website_name %> administration system</h2>
1
+ <br />
2
+ <br />
3
+ <div class="container">
4
+ <div class="jumbotron" style="text-align: center;">
5
+ <h1>Welcome to Casein</h1>
6
+ <br />
7
+ <p>You&rsquo;re ready to begin scaffolding and customizing!</p>
8
+ <p><small style="font-size: 0.7em;">To remove this screen, set <code>casein_config_dashboard_url</code></small></p>
9
+ <br />
10
+ <p><a href="https://github.com/russellquinn/casein/blob/master/README.rdoc" class="btn btn-primary btn-large">View README on GitHub</a></p>
11
+ </div>
12
+ </div>
@@ -4,7 +4,7 @@ Your password has been reset by an administrator for your account at:<br />
4
4
  <br />
5
5
  <%= @host %>/casein<br />
6
6
  <br />
7
- Login: <%= @login %><br />
7
+ Username: <%= @login %><br />
8
8
  New password: <%= @pass %><br />
9
9
  <br />
10
10
  From<br />
@@ -4,7 +4,7 @@ A new user account has been created for you at:<br />
4
4
  <br />
5
5
  <%= @host %>/casein<br />
6
6
  <br />
7
- Login: <%= @login %><br />
7
+ Username: <%= @login %><br />
8
8
  Password: <%= @pass %><br />
9
9
  <br />
10
10
  From<br />
@@ -1,6 +1,6 @@
1
1
  Dear <%= @name %>,<br />
2
2
  <br />
3
- A request to reset the password for login '<%= @login %>' has been made.<br />
3
+ A request to reset the password for username '<%= @login %>' has been made.<br />
4
4
  If you did not make this request, simply ignore this email.<br />
5
5
  Otherwise, click the link below to proceed:<br />
6
6
  <br />
@@ -1,48 +1,36 @@
1
1
  <%= form_for @reset_user, :url => casein_password_reset_path do |f| %>
2
2
 
3
3
  <% if @reset_user.errors.any? %>
4
- <div class="error">
5
- <p>
6
- <% @reset_user.errors.keys.each do |key| %>
7
- <%= (key.to_s.humanize + " ") unless key == :base %>
8
- <%= @reset_user.errors[key].first %>
9
- <% end %>
10
- </p>
4
+ <div id="error_messages" class="alert alert-danger">
5
+ <% @reset_user.errors.keys.each do |key| %>
6
+ <%= (key.to_s.humanize + " ") unless key == :base %>
7
+ <%= @reset_user.errors[key].first %>
8
+ <% end %>
11
9
  </div>
12
10
  <% end %>
13
11
 
14
12
  <% if flash[:warning] %>
15
- <div class="error">
16
- <p><%= flash[:warning] %></p>
17
- </div>
18
- <% end %>
19
-
20
- <% if flash[:notice] %>
21
- <div class="notice">
22
- <p><%= flash[:notice] %></p>
23
- </div>
24
- <% end %>
13
+ <div id="error" class="alert alert-danger">
14
+ <%= flash[:warning] %>
15
+ </div>
16
+ <% end %>
17
+ <% if flash[:notice] %>
18
+ <div id="notice" class="alert alert-success">
19
+ <%= flash[:notice] %>
20
+ </div>
21
+ <% end %>
25
22
 
26
23
  <%= hidden_field_tag :token, params[:token] %>
27
24
 
28
- <div class="text">
29
- <p>
30
- <%= f.label :password, "Password:" %>
31
- <%= f.password_field :password, :class => "caseinTextField" %>
32
- </p>
25
+ <div class="form-group">
26
+ <%= f.password_field :password, :autocomplete => :off, :placeholder => "New password", :class => "form-control input-large" %>
33
27
  </div>
34
-
35
- <div class="text">
36
- <p>
37
- <%= f.label :password_confirmation, "Confirm password:" %>
38
- <%= f.password_field :password_confirmation, :class => "caseinTextField" %>
39
- </p>
28
+ <div class="form-group">
29
+ <%= f.password_field :password_confirmation, :autocomplete => :off, :placeholder => "Confirm password", :class => "form-control input-large" %>
40
30
  </div>
41
-
42
- <div class="submit_remember">
43
- <p>
44
- <%= f.submit "Reset password", :class => "caseinSubmit" %>
45
- </p>
31
+
32
+ <div class="form-group">
33
+ <%= f.submit "Change password", :class => "btn btn-success btn-large btn-block" %>
46
34
  </div>
47
35
 
48
36
  <% end %>