spud_core 0.8.11 → 0.8.12
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/javascripts/spud/password_resets.js +2 -0
- data/app/assets/stylesheets/spud/password_resets.css +4 -0
- data/app/controllers/spud/application_controller.rb +6 -0
- data/app/controllers/spud/password_resets_controller.rb +50 -0
- data/app/helpers/spud/password_resets_helper.rb +2 -0
- data/app/mailers/spud/core_mailer.rb +12 -0
- data/app/views/spud/core_mailer/forgot_password_notification.html.erb +14 -0
- data/app/views/spud/core_mailer/forgot_password_notification.text.erb +10 -0
- data/app/views/spud/password_resets/edit.html.erb +25 -0
- data/app/views/spud/password_resets/new.html.erb +14 -0
- data/app/views/spud/user_sessions/new.html.erb +7 -2
- data/config/routes.rb +1 -0
- data/lib/spud_core/configuration.rb +2 -2
- data/lib/spud_core/version.rb +1 -1
- data/test/functional/spud/password_resets_controller_test.rb +7 -0
- data/test/unit/helpers/spud/password_resets_helper_test.rb +4 -0
- metadata +41 -28
@@ -4,7 +4,13 @@ class Spud::ApplicationController < ActionController::Base
|
|
4
4
|
helper_method :current_user_session, :current_user
|
5
5
|
around_filter :set_time_zone
|
6
6
|
around_filter :multisite_caching
|
7
|
+
before_filter :to
|
8
|
+
|
9
|
+
|
7
10
|
private
|
11
|
+
def to
|
12
|
+
ActionMailer::Base.default_url_options = {:host => request.host_with_port}
|
13
|
+
end
|
8
14
|
def current_user_session
|
9
15
|
return @current_user_session if defined?(@current_user_session)
|
10
16
|
@current_user_session = SpudUserSession.find
|
@@ -0,0 +1,50 @@
|
|
1
|
+
class Spud::PasswordResetsController < Spud::ApplicationController
|
2
|
+
before_filter :require_no_user, :only => [:new, :create]
|
3
|
+
before_filter :load_user_using_perishable_token, :only => [:edit, :update]
|
4
|
+
|
5
|
+
layout 'spud/login/application'
|
6
|
+
|
7
|
+
def new
|
8
|
+
render
|
9
|
+
end
|
10
|
+
|
11
|
+
def create
|
12
|
+
@user = SpudUser.find_by_email(params[:email])
|
13
|
+
if @user
|
14
|
+
Spud::CoreMailer.forgot_password_notification(@user).deliver
|
15
|
+
flash[:notice] = "Instructions to reset your password have been emailed to you. " +
|
16
|
+
"Please check your email."
|
17
|
+
redirect_to new_spud_user_session_url
|
18
|
+
else
|
19
|
+
flash[:notice] = "No user was found with that email address"
|
20
|
+
render :action => :new
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def edit
|
25
|
+
render
|
26
|
+
end
|
27
|
+
|
28
|
+
def update
|
29
|
+
@user.password = params[:spud_user][:password]
|
30
|
+
@user.password_confirmation = params[:spud_user][:password_confirmation]
|
31
|
+
if @user.save
|
32
|
+
flash[:notice] = "Password successfully updated"
|
33
|
+
redirect_to new_spud_user_session_url
|
34
|
+
else
|
35
|
+
render :action => :edit
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
def load_user_using_perishable_token
|
41
|
+
@user = SpudUser.find_using_perishable_token(params[:id])
|
42
|
+
unless @user
|
43
|
+
flash[:notice] = "We're sorry, but we could not locate your account. " +
|
44
|
+
"If you are having issues try copying and pasting the URL " +
|
45
|
+
"from your email into your browser or restarting the " +
|
46
|
+
"reset password process."
|
47
|
+
redirect_to new_spud_user_session_url
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class Spud::CoreMailer < ActionMailer::Base
|
2
|
+
# default_url_options[:host] = request.host_with_port
|
3
|
+
|
4
|
+
def forgot_password_notification(user)
|
5
|
+
@user = user
|
6
|
+
@url = edit_spud_password_reset_url(:id => user.perishable_token)
|
7
|
+
# @url = "/spud/password_resets/#{user.perishable_token}/edit"
|
8
|
+
mail(:from =>Spud::Core.from_address,:to => user.email, :subject => "Forgot Password Request from Spud Site")
|
9
|
+
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<h2>Reset Password Request</h2>
|
8
|
+
<p>A password reset was requested by the user tied to this email address. If you believe this is in error, please double check your security settings to prevent unauthorized access of your account</p>
|
9
|
+
|
10
|
+
<p>Otherwise, you may reset your password by clicking on the link below:</p>
|
11
|
+
<p><%=link_to @url,@url%></p>
|
12
|
+
|
13
|
+
</body>
|
14
|
+
</html>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
Reset Password Request
|
2
|
+
======================
|
3
|
+
|
4
|
+
A password reset was requested by the user tied to this email address. If you believe this is in error, please double check your security settings to prevent unauthorized access of your account.
|
5
|
+
|
6
|
+
Otherwise, you may reset your password by clicking on the link below:
|
7
|
+
|
8
|
+
<%=@url%>
|
9
|
+
|
10
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<div class="login-form">
|
2
|
+
<h1>Spud CMS Admin</h1>
|
3
|
+
<%= form_for @user, url: spud_password_reset_path(:id => @user.perishable_token) do |f| %>
|
4
|
+
<% if flash[:notice] %>
|
5
|
+
<div class="alert alert-success">
|
6
|
+
<%= flash[:notice] %>
|
7
|
+
</div>
|
8
|
+
<% end %>
|
9
|
+
<%= error_messages_for(f.object) %>
|
10
|
+
|
11
|
+
<div class="field-group">
|
12
|
+
<%= f.label :password %>
|
13
|
+
<%= f.password_field :password %>
|
14
|
+
</div>
|
15
|
+
<div class="field-group">
|
16
|
+
<%= f.label :password_confirmation %>
|
17
|
+
<%= f.password_field :password_confirmation %>
|
18
|
+
</div>
|
19
|
+
|
20
|
+
<div class="field-group">
|
21
|
+
<%= f.submit "Reset Password" %>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<% end %>
|
25
|
+
</div>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<div class="login-form">
|
2
|
+
<h1>Forgot Password</h1>
|
3
|
+
<%= form_tag spud_password_resets_path do %>
|
4
|
+
|
5
|
+
<div class="field-group">
|
6
|
+
<%= label_tag :email %>
|
7
|
+
<%= text_field_tag :email %>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<div class="field-group">
|
11
|
+
<%= submit_tag "Send Reset Instructions" %>
|
12
|
+
</div>
|
13
|
+
<% end %>
|
14
|
+
</div>
|
@@ -1,7 +1,11 @@
|
|
1
1
|
<div class="login-form">
|
2
2
|
<h1>Spud CMS Admin</h1>
|
3
3
|
<%= form_for @user_session, url: spud_user_session_path do |f| %>
|
4
|
-
|
4
|
+
<% if flash[:notice] %>
|
5
|
+
<div class="alert alert-success">
|
6
|
+
<%= flash[:notice] %>
|
7
|
+
</div>
|
8
|
+
<% end %>
|
5
9
|
<%= error_messages_for(f.object) %>
|
6
10
|
|
7
11
|
<div class="field-group">
|
@@ -16,7 +20,8 @@
|
|
16
20
|
<%= f.check_box :remember_me %> <%= f.label :remember_me, class: 'inline' %>
|
17
21
|
</div>
|
18
22
|
<div class="field-group">
|
19
|
-
<%= f.submit "Login" %>
|
23
|
+
<%= f.submit "Login" %> or <%=link_to "Forgot Password?",new_spud_password_reset_url%>
|
20
24
|
</div>
|
25
|
+
|
21
26
|
<% end %>
|
22
27
|
</div>
|
data/config/routes.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
module Spud
|
2
2
|
module Core
|
3
3
|
include ActiveSupport::Configurable
|
4
|
-
config_accessor :site_name,:admin_applications,:sitemap_urls,:multisite_mode_enabled,:multisite_config
|
4
|
+
config_accessor :site_name,:admin_applications,:sitemap_urls,:multisite_mode_enabled,:multisite_config,:from_address
|
5
5
|
self.admin_applications = [{:name => "Users",:thumbnail => "spud/admin/users_thumb.png",:url => "/spud/admin/users",:order => 100}]
|
6
6
|
self.site_name = "Company Name"
|
7
7
|
self.sitemap_urls = []
|
8
8
|
self.multisite_mode_enabled = false
|
9
9
|
self.multisite_config = []
|
10
|
-
|
10
|
+
self.from_address = "no-reply@spudengine.com"
|
11
11
|
def self.site_config_for_host(host)
|
12
12
|
configs = Spud::Core.multisite_config.select{|p| p[:hosts].include?(host)}
|
13
13
|
if configs.blank?
|
data/lib/spud_core/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spud_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.12
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &70360247491800 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.2.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70360247491800
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: authlogic
|
27
|
-
requirement: &
|
27
|
+
requirement: &70360247491140 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70360247491140
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: jquery-rails
|
38
|
-
requirement: &
|
38
|
+
requirement: &70360247490460 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70360247490460
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: breadcrumbs_on_rails
|
49
|
-
requirement: &
|
49
|
+
requirement: &70360247489860 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70360247489860
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: will_paginate
|
60
|
-
requirement: &
|
60
|
+
requirement: &70360247489400 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70360247489400
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bootstrap-will_paginate
|
71
|
-
requirement: &
|
71
|
+
requirement: &70360247488980 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70360247488980
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: mysql2
|
82
|
-
requirement: &
|
82
|
+
requirement: &70360247488520 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70360247488520
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rspec
|
93
|
-
requirement: &
|
93
|
+
requirement: &70360247504360 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70360247504360
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: rspec-rails
|
104
|
-
requirement: &
|
104
|
+
requirement: &70360247503880 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70360247503880
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: factory_girl
|
115
|
-
requirement: &
|
115
|
+
requirement: &70360247503200 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - =
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: 2.5.0
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70360247503200
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: mocha
|
126
|
-
requirement: &
|
126
|
+
requirement: &70360247502440 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - =
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: 0.10.3
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *70360247502440
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: database_cleaner
|
137
|
-
requirement: &
|
137
|
+
requirement: &70360247501760 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - =
|
@@ -142,7 +142,7 @@ dependencies:
|
|
142
142
|
version: 0.7.1
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *70360247501760
|
146
146
|
description: Spud Core Engine
|
147
147
|
email:
|
148
148
|
- destes@redwindsw.com
|
@@ -179,6 +179,7 @@ files:
|
|
179
179
|
- app/assets/javascripts/spud/admin/application.js
|
180
180
|
- app/assets/javascripts/spud/admin/dashboard.js
|
181
181
|
- app/assets/javascripts/spud/admin/jquery.dataTables.min.js
|
182
|
+
- app/assets/javascripts/spud/password_resets.js
|
182
183
|
- app/assets/libs/bootstrap/css/bootstrap-responsive.css
|
183
184
|
- app/assets/libs/bootstrap/css/bootstrap-responsive.min.css
|
184
185
|
- app/assets/libs/bootstrap/css/bootstrap.css
|
@@ -452,6 +453,7 @@ files:
|
|
452
453
|
- app/assets/stylesheets/spud/forms.css
|
453
454
|
- app/assets/stylesheets/spud/login/application.css
|
454
455
|
- app/assets/stylesheets/spud/login.css
|
456
|
+
- app/assets/stylesheets/spud/password_resets.css
|
455
457
|
- app/assets/stylesheets/spud/setup.css
|
456
458
|
- app/assets/stylesheets/spud/sitemaps.css
|
457
459
|
- app/assets/stylesheets/spud/user_sessions.css
|
@@ -460,11 +462,14 @@ files:
|
|
460
462
|
- app/controllers/spud/admin/dashboard_controller.rb
|
461
463
|
- app/controllers/spud/admin/users_controller.rb
|
462
464
|
- app/controllers/spud/application_controller.rb
|
465
|
+
- app/controllers/spud/password_resets_controller.rb
|
463
466
|
- app/controllers/spud/setup_controller.rb
|
464
467
|
- app/controllers/spud/sitemaps_controller.rb
|
465
468
|
- app/controllers/spud/user_sessions_controller.rb
|
466
469
|
- app/controllers/spud/users_controller.rb
|
467
470
|
- app/helpers/spud/admin/application_helper.rb
|
471
|
+
- app/helpers/spud/password_resets_helper.rb
|
472
|
+
- app/mailers/spud/core_mailer.rb
|
468
473
|
- app/models/spud_admin_permission.rb
|
469
474
|
- app/models/spud_user.rb
|
470
475
|
- app/models/spud_user_session.rb
|
@@ -481,6 +486,10 @@ files:
|
|
481
486
|
- app/views/spud/admin/users/index.html.erb
|
482
487
|
- app/views/spud/admin/users/new.html.erb
|
483
488
|
- app/views/spud/admin/users/show.html.erb
|
489
|
+
- app/views/spud/core_mailer/forgot_password_notification.html.erb
|
490
|
+
- app/views/spud/core_mailer/forgot_password_notification.text.erb
|
491
|
+
- app/views/spud/password_resets/edit.html.erb
|
492
|
+
- app/views/spud/password_resets/new.html.erb
|
484
493
|
- app/views/spud/setup/index.html.erb
|
485
494
|
- app/views/spud/sitemaps/show.xml.builder
|
486
495
|
- app/views/spud/user_sessions/new.html.erb
|
@@ -537,6 +546,8 @@ files:
|
|
537
546
|
- test/dummy/README.rdoc
|
538
547
|
- test/dummy/script/rails
|
539
548
|
- test/fixtures/spud_user_settings.yml
|
549
|
+
- test/functional/spud/password_resets_controller_test.rb
|
550
|
+
- test/unit/helpers/spud/password_resets_helper_test.rb
|
540
551
|
- test/unit/spud_user_settings_test.rb
|
541
552
|
homepage: http://github.com/davydotcom/spud_core_admin
|
542
553
|
licenses: []
|
@@ -552,7 +563,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
552
563
|
version: '0'
|
553
564
|
segments:
|
554
565
|
- 0
|
555
|
-
hash:
|
566
|
+
hash: 942132112328294348
|
556
567
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
557
568
|
none: false
|
558
569
|
requirements:
|
@@ -561,7 +572,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
561
572
|
version: '0'
|
562
573
|
segments:
|
563
574
|
- 0
|
564
|
-
hash:
|
575
|
+
hash: 942132112328294348
|
565
576
|
requirements: []
|
566
577
|
rubyforge_project:
|
567
578
|
rubygems_version: 1.8.15
|
@@ -603,4 +614,6 @@ test_files:
|
|
603
614
|
- test/dummy/README.rdoc
|
604
615
|
- test/dummy/script/rails
|
605
616
|
- test/fixtures/spud_user_settings.yml
|
617
|
+
- test/functional/spud/password_resets_controller_test.rb
|
618
|
+
- test/unit/helpers/spud/password_resets_helper_test.rb
|
606
619
|
- test/unit/spud_user_settings_test.rb
|