password_resetter 1.0.7 → 1.0.9

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.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NThhNjNhNDI2YmU2ZmQ3ZjY1MmIyOWIxYmFkNzkyMDE3YjRjNThiZQ==
5
+ data.tar.gz: !binary |-
6
+ MjI0MzYwOTU5YmQ4ZDllOWFjNzAxN2IxNDRkY2VmY2ViMDAxNDFjYw==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ OTZiMWUyOTU4MWMxNTAxMThjMjlkYzI5ZTBkMzY0OGZlODFhNzEzNTg5MTkw
10
+ MTI1MTY0NzVlMDIwNDE4MzM3NGZjNGMxMzFhMjVmMzRkMzY2NGQyZDIxZWY4
11
+ YWY2OWNlYjg1ZmFhZjM2MjNmNDMxYzExMDhkOTI0MDcxNzBjYjk=
12
+ data.tar.gz: !binary |-
13
+ Zjg3NGI1Y2FkZWJmZmE3YjNmYWZmZTMxOTgyMjYwN2Q3ZGM1ZmE4M2Y4OGZj
14
+ NDRlNDg4YmM4YWM2NWY3NjM5ZDcxNzgwOTU1OWUyMmNlMjU1MmI1NjQwMTgz
15
+ ZTMxNDYxZDA0YjQ4ZGQxMmNjNTY0Mzg4MzM4NWExMjg4M2VjNjQ=
data/README.md CHANGED
@@ -12,36 +12,33 @@ PasswordResetter is a simple gem used to give Users the ability to reset their p
12
12
 
13
13
  Get it.
14
14
 
15
- ```ruby
16
- gem 'password_resetter'
17
- ```
15
+ gem 'password_resetter'
18
16
 
19
17
  Install it.
20
18
 
21
- ```console
22
- bundle install
23
- ```
19
+ bundle install
24
20
 
25
21
  Migrate it.
26
22
 
27
- ```console
28
- rake password_resetter_engine:install:migrations
29
- rake db:migrate
30
- ```
23
+ rake password_resetter_engine:install:migrations
24
+ rake db:migrate
31
25
 
32
26
  If you haven't already, set your action mailer host in config/environments.
33
27
  Simply place the following lines at the bottom of the necessary environment files
34
28
 
35
- ```ruby
36
- # Action mailer for reset passwords
37
- config.action_mailer.default_url_options = { :host => "localhost:3000" }
38
- ```
29
+ # Action mailer for reset passwords
30
+ config.action_mailer.default_url_options = { :host => "localhost:3000" }
31
+
32
+ Set up the email which users will be emailed from in an initializer
33
+
34
+ # config/initializers/password_resetter.rb
35
+ PasswordResetter.setup do |config|
36
+ config.from_email = "password.recover@example.com"
37
+ end
39
38
 
40
39
  Lastly, throw the following link into the appropriate view file (i.e. views/sessions/new.html.erb)
41
40
 
42
- ```ruby
43
- <%= link_to "Forgot Password?", new_password_reset_path %>
44
- ```
41
+ <%= link_to "Forgot Password?", new_password_reset_path %>
45
42
 
46
43
  ## Visual Customization
47
44
 
@@ -51,52 +48,45 @@ To match the style of your own app, every element of the html.erb files comes ta
51
48
  #### The page a User is directed when they click on the "Forgot Password?" link
52
49
 
53
50
  The entire form is wrapped with
54
- ```ruby
55
- :class => "password-reset-request-field"
56
- ```
57
51
 
58
- Email input field is tagged with
59
- ```ruby
60
- :id => "password_reset_email"
61
- ```
52
+ :class => "password-reset-request-field"
53
+
54
+ Email input field is tagged with
55
+
56
+ :id => "password_reset_email"
62
57
 
63
58
  Reset Password button:
64
- ```ruby
65
- :class => "password-reset-button reset"
66
- ```
59
+
60
+ :class => "password-reset-button reset"
67
61
 
68
62
  ### Complete Password Reset Page
69
63
  #### The page a User is directed when they follow the link emailed to them after initializing the reset process
70
64
 
71
65
 
72
66
  The entire form is wrapped with
73
- ```ruby
74
- :class => "password-reset-complete-field"
75
- ```
67
+
68
+ :class => "password-reset-complete-field"
76
69
 
77
70
  Password and Password Confirmation fields tagged respectively with:
78
- ```ruby
79
- :id => "password_reset_password"
80
- :id => "password_reset_password_confirmation"
81
- ```
71
+
72
+ :id => "password_reset_password"
73
+ :id => "password_reset_password_confirmation"
82
74
 
83
75
  Update Password button:
84
- ```ruby
85
- :class => "password-reset-button update"
86
- ```
76
+
77
+ :class => "password-reset-button update"
87
78
 
88
79
  For example, in `application.css.scss`
89
80
 
90
- ```
91
- #password_reset_email, #password_reset_password, #password_reset_password_confirmation {
92
- margin-bottom: 15px;
93
- margin-top: 5px;
94
- width: 285px;
95
- }
96
-
97
- .password-reset-button {
98
- background: image-url("my_button.png");
99
- height: 25px;
100
- width: 100px;
101
- }
102
- ```
81
+
82
+ #password_reset_email, #password_reset_password, #password_reset_password_confirmation {
83
+ margin-bottom: 15px;
84
+ margin-top: 5px;
85
+ width: 285px;
86
+ }
87
+
88
+ .password-reset-button {
89
+ background: image-url("my_button.png");
90
+ height: 25px;
91
+ width: 100px;
92
+ }
@@ -1,5 +1,5 @@
1
1
  class PasswordResetMailer < ActionMailer::Base
2
- default from: "haxxor_news@example.com"
2
+ default from: PasswordResetter.from_email
3
3
 
4
4
  def password_reset(user, password_reset)
5
5
  @user = user
@@ -1,4 +1,10 @@
1
1
  require "password_resetter/engine"
2
2
 
3
3
  module PasswordResetter
4
+ mattr_accessor :from_email
5
+ @@from_email = "password.resetter@no-reply.com"
6
+
7
+ def self.setup
8
+ yield self
9
+ end
4
10
  end
@@ -1,3 +1,3 @@
1
1
  module PasswordResetter
2
- VERSION = "1.0.7"
2
+ VERSION = "1.0.9"
3
3
  end
@@ -37,97 +37,97 @@ describe PasswordReset do
37
37
  # * generates token
38
38
  # * saves present time
39
39
  # * sends an email to the user with instructions
40
-
40
+
41
41
  let(:user) { FactoryGirl.create(:user, :username => 'eli', :email => 'eli@viget.com') }
42
42
  let(:mailer) { double('password reset mailer') }
43
43
  subject { described_class.create(:user => user) }
44
-
44
+
45
45
  before do
46
46
  PasswordResetMailer.stub(:password_reset).with(user, subject).and_return(mailer)
47
47
  mailer.stub(:deliver).and_return(true) # so the email doesn't actually get called
48
48
  end
49
-
49
+
50
50
  it "generates a reset_token" do
51
51
  expect{ subject.send_password_reset }.to change{ subject.reset_token }.from(nil)
52
52
  end
53
-
53
+
54
54
  it "saves the present time" do
55
55
  expect{ subject.send_password_reset }.to change{ subject.reset_sent_at }.from(nil)
56
56
  end
57
-
57
+
58
58
  it "sends an email" do
59
59
  mailer.should_receive(:deliver)
60
60
  subject.send_password_reset
61
- end
61
+ end
62
62
  end
63
63
  end
64
-
64
+
65
65
  describe "#update_user_password" do
66
66
  let(:user) { FactoryGirl.create(:user, :username => 'eli', :email => 'eli@viget.com') }
67
67
  subject { described_class.create(:user => user) }
68
-
68
+
69
69
  context "when passwords are blank" do
70
70
 
71
71
  it "should return false for blank password" do
72
72
  subject.update_user_password("", "secret").should be(false)
73
- end
74
-
73
+ end
74
+
75
75
  it "should return false for blank password_confirmation" do
76
76
  subject.update_user_password("secret", "").should be(false)
77
- end
77
+ end
78
78
 
79
79
  it "should return false for blank both" do
80
80
  subject.update_user_password("", "").should be(false)
81
- end
81
+ end
82
82
  end
83
-
83
+
84
84
  context "when passwords don't match" do
85
-
85
+
86
86
  it "should return false" do
87
87
  subject.update_user_password("does_not", "match").should be(false)
88
88
  end
89
89
  end
90
-
90
+
91
91
  context "when passwords are valid" do
92
-
92
+
93
93
  it "should return true" do
94
94
  subject.update_user_password("new_secret", "new_secret").should be(true)
95
95
  end
96
-
96
+
97
97
  it "should change the password of the user" do
98
98
  expect{ subject.update_user_password("asdf", "asdf") }.to change{ User.authenticate("eli", "asdf") }.from(false).to(user)
99
99
  end
100
100
  end
101
101
  end
102
-
102
+
103
103
  describe "#expired?" do
104
-
104
+
105
105
  it "should return true if > 2 hours have passed" do
106
106
  subject.update_attributes(:reset_sent_at => 3.hours.ago)
107
107
  subject.expired?.should be(true)
108
108
  end
109
-
109
+
110
110
  it "should return false if < 2 hours have passed" do
111
111
  subject.update_attributes(:reset_sent_at => 2.hours.ago + 1.minute)
112
- subject.expired?.should be(false)
112
+ subject.expired?.should be(false)
113
113
  end
114
114
  end
115
-
115
+
116
116
  describe "#delete_existing" do
117
117
  let(:user) { FactoryGirl.create(:user, :username => 'eli', :email => 'eli@viget.com') }
118
118
  before do
119
119
  @pr1 = PasswordReset.create(:user => user, :email => 'filler')
120
120
  end
121
-
121
+
122
122
  it "should do nothing if another PasswordReset does not exist" do
123
123
  expect{ @pr1.delete_existing }.to_not change{ PasswordReset.count }
124
124
  end
125
-
125
+
126
126
  it "should delete an existing PasswordReset if one exists" do
127
127
  @pr2 = PasswordReset.create(:user => user, :email => 'filler')
128
128
  expect{ @pr2.delete_existing }.to change{ PasswordReset.count }.by(-1)
129
129
  end
130
-
130
+
131
131
  end
132
132
 
133
133
  end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: password_resetter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
5
- prerelease:
4
+ version: 1.0.9
6
5
  platform: ruby
7
6
  authors:
8
7
  - Eli Fatsi
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-09-14 00:00:00.000000000 Z
11
+ date: 2014-02-07 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rails
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ! '>='
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: bcrypt-ruby
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ! '>='
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ! '>='
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: sqlite3
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ! '>='
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ! '>='
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rspec-rails
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ! '>='
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ! '>='
76
67
  - !ruby/object:Gem::Version
@@ -78,7 +69,6 @@ dependencies:
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: shoulda-matchers
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - ! '>='
84
74
  - !ruby/object:Gem::Version
@@ -86,7 +76,6 @@ dependencies:
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - ! '>='
92
81
  - !ruby/object:Gem::Version
@@ -94,7 +83,6 @@ dependencies:
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: capybara
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
87
  - - ! '>='
100
88
  - !ruby/object:Gem::Version
@@ -102,7 +90,6 @@ dependencies:
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
94
  - - ! '>='
108
95
  - !ruby/object:Gem::Version
@@ -110,7 +97,6 @@ dependencies:
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: database_cleaner
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
101
  - - ! '>='
116
102
  - !ruby/object:Gem::Version
@@ -118,7 +104,6 @@ dependencies:
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
108
  - - ! '>='
124
109
  - !ruby/object:Gem::Version
@@ -126,7 +111,6 @@ dependencies:
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: factory_girl_rails
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
115
  - - ~>
132
116
  - !ruby/object:Gem::Version
@@ -134,27 +118,10 @@ dependencies:
134
118
  type: :development
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
122
  - - ~>
140
123
  - !ruby/object:Gem::Version
141
124
  version: '1.7'
142
- - !ruby/object:Gem::Dependency
143
- name: bcrypt-ruby
144
- requirement: !ruby/object:Gem::Requirement
145
- none: false
146
- requirements:
147
- - - ! '>='
148
- - !ruby/object:Gem::Version
149
- version: '0'
150
- type: :development
151
- prerelease: false
152
- version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
- requirements:
155
- - - ! '>='
156
- - !ruby/object:Gem::Version
157
- version: '0'
158
125
  description: Allowing Users to reset their password through email
159
126
  email:
160
127
  - efatsi@comcast.net
@@ -162,6 +129,9 @@ executables: []
162
129
  extensions: []
163
130
  extra_rdoc_files: []
164
131
  files:
132
+ - MIT-LICENSE
133
+ - README.md
134
+ - Rakefile
165
135
  - app/assets/javascripts/password_resets.js
166
136
  - app/assets/stylesheets/password_resets.css
167
137
  - app/controllers/password_resets_controller.rb
@@ -173,20 +143,20 @@ files:
173
143
  - app/views/password_resets/new.html.erb
174
144
  - config/routes.rb
175
145
  - db/migrate/20120829163145_create_password_resets.rb
146
+ - lib/password_resetter.rb
176
147
  - lib/password_resetter/engine.rb
177
148
  - lib/password_resetter/resettable.rb
178
149
  - lib/password_resetter/version.rb
179
- - lib/password_resetter.rb
180
150
  - lib/tasks/password_resetter_tasks.rake
181
- - MIT-LICENSE
182
- - Rakefile
183
- - README.md
151
+ - spec/dummy/README.rdoc
152
+ - spec/dummy/Rakefile
184
153
  - spec/dummy/app/assets/javascripts/application.js
185
154
  - spec/dummy/app/assets/stylesheets/application.css
186
155
  - spec/dummy/app/controllers/application_controller.rb
187
156
  - spec/dummy/app/helpers/application_helper.rb
188
157
  - spec/dummy/app/models/user.rb
189
158
  - spec/dummy/app/views/layouts/application.html.erb
159
+ - spec/dummy/config.ru
190
160
  - spec/dummy/config/application.rb
191
161
  - spec/dummy/config/boot.rb
192
162
  - spec/dummy/config/database.yml
@@ -202,21 +172,16 @@ files:
202
172
  - spec/dummy/config/initializers/wrap_parameters.rb
203
173
  - spec/dummy/config/locales/en.yml
204
174
  - spec/dummy/config/routes.rb
205
- - spec/dummy/config.ru
206
175
  - spec/dummy/db/development.sqlite3
207
176
  - spec/dummy/db/migrate/20120829165609_create_users.rb
208
177
  - spec/dummy/db/production.sqlite3
209
178
  - spec/dummy/db/schema.rb
210
179
  - spec/dummy/db/spec.sqlite3
211
180
  - spec/dummy/db/test.sqlite3
212
- - spec/dummy/log/development.log
213
- - spec/dummy/log/test.log
214
181
  - spec/dummy/public/404.html
215
182
  - spec/dummy/public/422.html
216
183
  - spec/dummy/public/500.html
217
184
  - spec/dummy/public/favicon.ico
218
- - spec/dummy/Rakefile
219
- - spec/dummy/README.rdoc
220
185
  - spec/dummy/script/rails
221
186
  - spec/dummy/test/fixtures/users.yml
222
187
  - spec/dummy/test/unit/user_test.rb
@@ -228,27 +193,26 @@ files:
228
193
  - spec/support/making_helper.rb
229
194
  homepage: https://github.com/efatsi/password_resetter
230
195
  licenses: []
196
+ metadata: {}
231
197
  post_install_message:
232
198
  rdoc_options: []
233
199
  require_paths:
234
200
  - lib
235
201
  required_ruby_version: !ruby/object:Gem::Requirement
236
- none: false
237
202
  requirements:
238
203
  - - ! '>='
239
204
  - !ruby/object:Gem::Version
240
205
  version: '0'
241
206
  required_rubygems_version: !ruby/object:Gem::Requirement
242
- none: false
243
207
  requirements:
244
208
  - - ! '>='
245
209
  - !ruby/object:Gem::Version
246
210
  version: '0'
247
211
  requirements: []
248
212
  rubyforge_project:
249
- rubygems_version: 1.8.24
213
+ rubygems_version: 2.2.2
250
214
  signing_key:
251
- specification_version: 3
215
+ specification_version: 4
252
216
  summary: Allowing Users to reset their password through email
253
217
  test_files:
254
218
  - spec/dummy/app/assets/javascripts/application.js
@@ -279,8 +243,6 @@ test_files:
279
243
  - spec/dummy/db/schema.rb
280
244
  - spec/dummy/db/spec.sqlite3
281
245
  - spec/dummy/db/test.sqlite3
282
- - spec/dummy/log/development.log
283
- - spec/dummy/log/test.log
284
246
  - spec/dummy/public/404.html
285
247
  - spec/dummy/public/422.html
286
248
  - spec/dummy/public/500.html