password_resetter 1.0.7 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
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