devise-stormpath 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,9 @@
1
+ class Devise::StormpathConfirmationsController < Devise::ConfirmationsController
2
+ prepend_before_filter :proxy_stormpath_token
3
+
4
+ protected
5
+
6
+ def proxy_stormpath_token
7
+ params[:confirmation_token] = params[:sptoken]
8
+ end
9
+ end
@@ -0,0 +1,30 @@
1
+ <h2>Sign up</h2>
2
+
3
+ <%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
4
+ <%= devise_error_messages! %>
5
+
6
+ <div><%= f.label :email %><br />
7
+ <%= f.email_field :email, :autofocus => true %></div>
8
+
9
+ <div><%= f.label :username %><br />
10
+ <%= f.text_field :username %></div>
11
+
12
+ <div><%= f.label :given_name %><br />
13
+ <%= f.text_field :given_name %></div>
14
+
15
+ <div><%= f.label :middle_name %><br />
16
+ <%= f.text_field :middle_name %></div>
17
+
18
+ <div><%= f.label :surname %><br />
19
+ <%= f.text_field :surname %></div>
20
+
21
+ <div><%= f.label :password %><br />
22
+ <%= f.password_field :password %></div>
23
+
24
+ <div><%= f.label :password_confirmation %><br />
25
+ <%= f.password_field :password_confirmation %></div>
26
+
27
+ <div><%= f.submit "Sign up" %></div>
28
+ <% end %>
29
+
30
+ <%= render "devise/shared/links" %>
@@ -0,0 +1,17 @@
1
+ <h2>Sign in</h2>
2
+
3
+ <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
4
+ <div><%= f.label :username %><br />
5
+ <%= f.text_field :username, :autofocus => true %></div>
6
+
7
+ <div><%= f.label :password %><br />
8
+ <%= f.password_field :password %></div>
9
+
10
+ <% if devise_mapping.rememberable? -%>
11
+ <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
12
+ <% end -%>
13
+
14
+ <div><%= f.submit "Sign in" %></div>
15
+ <% end %>
16
+
17
+ <%= render "devise/shared/links" %>
@@ -1,5 +1,4 @@
1
1
  #TODO Customize messages
2
-
3
2
  en:
4
3
  devise:
5
4
  stormpath_passwords:
@@ -8,3 +7,7 @@ en:
8
7
  updated_not_active: 'Your password was changed successfully.'
9
8
  send_paranoid_instructions: "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes."
10
9
  no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided."
10
+ stormpath_confirmations:
11
+ confirmed: "Your account was successfully confirmed. You are now signed in."
12
+ send_instructions: "You will receive an email with instructions about how to confirm your account in a few minutes."
13
+ send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions about how to confirm your account in a few minutes."
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.require_paths = ["lib"]
18
18
 
19
19
  s.add_dependency('devise')
20
- s.add_dependency('stormpath-rails', '~> 0.4.0')
20
+ s.add_dependency('stormpath-rails', '>= 0.4.3')
21
21
  s.add_dependency('activesupport')
22
22
 
23
23
  s.add_development_dependency('rake', '~> 10.0.2')
@@ -0,0 +1,44 @@
1
+ module Devise
2
+ module Models
3
+ module StormpathConfirmable
4
+ extend ActiveSupport::Concern
5
+
6
+ def self.required_fields(klass)
7
+ [:confirmation_token]
8
+ end
9
+
10
+ included do
11
+ attr_accessible :confirmation_token
12
+ attr_accessor :confirmation_token
13
+ end
14
+
15
+ def confirmed?
16
+ status != "UNVERIFIED"
17
+ end
18
+
19
+ def active_for_authentication?
20
+ super && confirmed?
21
+ end
22
+
23
+ def inactive_message
24
+ !confirmed? ? :unconfirmed : super
25
+ end
26
+
27
+ protected
28
+
29
+ module ClassMethods
30
+ def confirm_by_token(token)
31
+ begin
32
+ raise RuntimeError.new "Verification token required" unless token
33
+ account = ::Stormpath::Rails::Client.verify_account_email(token)
34
+ return self.where(stormpath_url: account.get_href).first
35
+ rescue RuntimeError => error
36
+ u = self.new
37
+ u.errors[:base] << error.message
38
+ u
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -5,4 +5,9 @@ ActionDispatch::Routing::Mapper.class_eval do
5
5
  resource :password, :only => [:new, :create, :edit, :update],
6
6
  :path => mapping.path_names[:password], :controller => controllers[:stormpath_passwords]
7
7
  end
8
- end
8
+
9
+ def devise_confirmation(mapping, controllers)
10
+ resource :confirmation, :only => [:show],
11
+ :path => mapping.path_names[:confirmation], :controller => controllers[:stormpath_confirmations]
12
+ end
13
+ end
@@ -1,5 +1,5 @@
1
1
  module Devise
2
2
  module Stormpath
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
@@ -9,3 +9,4 @@ Warden::Strategies.add(:stormpath_authenticatable, Devise::Strategies::Stormpath
9
9
 
10
10
  Devise.add_module(:stormpath_authenticatable, :route => :session, :strategy => true, :controller => :sessions, :model => 'devise/models/stormpath_authenticatable')
11
11
  Devise.add_module(:stormpath_recoverable, :route => :password, :controller => :stormpath_passwords, :model => 'devise/models/stormpath_recoverable')
12
+ Devise.add_module(:stormpath_confirmable, :route => :confirmation, :controller => :stormpath_confirmations, :model => 'devise/models/stormpath_confirmable')
@@ -0,0 +1,25 @@
1
+ require "spec_helper"
2
+ require "devise/models/stormpath_confirmable"
3
+
4
+ describe Devise::Models::StormpathConfirmable do
5
+ class User
6
+ def self.attr_accessible(*args)
7
+ end
8
+
9
+ include Devise::Models::StormpathConfirmable
10
+ end
11
+
12
+ let(:base) { mock("base") }
13
+ let(:errors) { mock("errors", :[] => base) }
14
+ let(:user) { mock("user", errors: errors) }
15
+
16
+ describe "::confirm_by_token" do
17
+ let(:account) { mock("account", get_href: "user href") }
18
+
19
+ it "should verify confirmation token at Stormpath and return user if verification passed" do
20
+ Stormpath::Rails::Client.should_receive(:verify_account_email).with("token").and_return(account)
21
+ User.should_receive(:where).with(stormpath_url: "user href").and_return([user])
22
+ User.confirm_by_token("token").should == user
23
+ end
24
+ end
25
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise-stormpath
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-29 00:00:00.000000000 Z
12
+ date: 2013-02-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: devise
@@ -32,17 +32,17 @@ dependencies:
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
- - - ~>
35
+ - - ! '>='
36
36
  - !ruby/object:Gem::Version
37
- version: 0.4.0
37
+ version: 0.4.3
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ~>
43
+ - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
- version: 0.4.0
45
+ version: 0.4.3
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: activesupport
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -136,17 +136,22 @@ files:
136
136
  - LICENSE
137
137
  - README.md
138
138
  - Rakefile
139
+ - app/controllers/devise/stormpath_confirmations_controller.rb
139
140
  - app/controllers/devise/stormpath_passwords_controller.rb
141
+ - app/views/devise/registrations/new.html.erb
142
+ - app/views/devise/sessions/new.html.erb
140
143
  - config/locales/en.yml
141
144
  - devise-stormpath.gemspec
142
145
  - lib/devise-stormpath.rb
143
146
  - lib/devise/models/stormpath_authenticatable.rb
147
+ - lib/devise/models/stormpath_confirmable.rb
144
148
  - lib/devise/models/stormpath_recoverable.rb
145
149
  - lib/devise/stormpath/rails.rb
146
150
  - lib/devise/stormpath/routes.rb
147
151
  - lib/devise/stormpath/version.rb
148
152
  - lib/devise/strategies/stormpath_authenticatable.rb
149
153
  - spec/devise/models/stormpath_authenticatable_spec.rb
154
+ - spec/devise/models/stormpath_confirmable_spec.rb
150
155
  - spec/devise/models/stormpath_recoverable_spec.rb
151
156
  - spec/spec_helper.rb
152
157
  - spec/support/client.rb
@@ -163,18 +168,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
163
168
  - - ! '>='
164
169
  - !ruby/object:Gem::Version
165
170
  version: '0'
166
- segments:
167
- - 0
168
- hash: 434371363033819234
169
171
  required_rubygems_version: !ruby/object:Gem::Requirement
170
172
  none: false
171
173
  requirements:
172
174
  - - ! '>='
173
175
  - !ruby/object:Gem::Version
174
176
  version: '0'
175
- segments:
176
- - 0
177
- hash: 434371363033819234
178
177
  requirements: []
179
178
  rubyforge_project:
180
179
  rubygems_version: 1.8.24