devise 2.0.0.rc → 2.0.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of devise might be problematic. Click here for more details.
- data/CHANGELOG.rdoc +94 -74
- data/README.rdoc +2 -2
- data/app/controllers/devise/confirmations_controller.rb +3 -6
- data/app/controllers/devise/omniauth_callbacks_controller.rb +1 -3
- data/app/controllers/devise/passwords_controller.rb +3 -6
- data/app/controllers/devise/registrations_controller.rb +34 -41
- data/app/controllers/devise/sessions_controller.rb +2 -3
- data/app/controllers/devise/unlocks_controller.rb +3 -5
- data/app/controllers/devise_controller.rb +169 -0
- data/app/views/devise/_links.erb +25 -0
- data/app/views/devise/confirmations/new.html.erb +1 -1
- data/app/views/devise/passwords/edit.html.erb +1 -1
- data/app/views/devise/passwords/new.html.erb +1 -1
- data/app/views/devise/registrations/new.html.erb +1 -1
- data/app/views/devise/sessions/new.html.erb +1 -1
- data/app/views/devise/shared/_links.erb +3 -25
- data/app/views/devise/unlocks/new.html.erb +1 -1
- data/config/locales/en.yml +4 -6
- data/lib/devise.rb +15 -11
- data/lib/devise/controllers/helpers.rb +8 -2
- data/lib/devise/controllers/scoped_views.rb +0 -16
- data/lib/devise/controllers/url_helpers.rb +16 -2
- data/lib/devise/failure_app.rb +43 -8
- data/lib/devise/models.rb +1 -1
- data/lib/devise/models/confirmable.rb +12 -9
- data/lib/devise/models/lockable.rb +1 -1
- data/lib/devise/models/serializable.rb +5 -2
- data/lib/devise/modules.rb +2 -2
- data/lib/devise/param_filter.rb +1 -1
- data/lib/devise/path_checker.rb +5 -1
- data/lib/devise/rails.rb +21 -0
- data/lib/devise/rails/routes.rb +16 -10
- data/lib/devise/rails/warden_compat.rb +0 -83
- data/lib/devise/strategies/authenticatable.rb +2 -2
- data/lib/devise/version.rb +1 -1
- data/lib/generators/active_record/devise_generator.rb +1 -1
- data/lib/generators/active_record/templates/migration.rb +0 -10
- data/lib/generators/devise/views_generator.rb +6 -14
- data/lib/generators/templates/devise.rb +11 -3
- data/lib/generators/templates/simple_form_for/confirmations/new.html.erb +1 -1
- data/lib/generators/templates/simple_form_for/passwords/edit.html.erb +1 -1
- data/lib/generators/templates/simple_form_for/passwords/new.html.erb +1 -1
- data/lib/generators/templates/simple_form_for/registrations/new.html.erb +1 -1
- data/lib/generators/templates/simple_form_for/sessions/new.html.erb +1 -1
- data/lib/generators/templates/simple_form_for/unlocks/new.html.erb +1 -1
- data/test/controllers/internal_helpers_test.rb +1 -2
- data/test/failure_app_test.rb +24 -20
- data/test/generators/active_record_generator_test.rb +3 -13
- data/test/generators/views_generator_test.rb +1 -1
- data/test/integration/authenticatable_test.rb +4 -7
- data/test/integration/http_authenticatable_test.rb +4 -4
- data/test/integration/lockable_test.rb +24 -12
- data/test/integration/registerable_test.rb +1 -1
- data/test/integration/timeoutable_test.rb +18 -4
- data/test/integration/token_authenticatable_test.rb +3 -3
- data/test/integration/trackable_test.rb +5 -5
- data/test/models/confirmable_test.rb +15 -0
- data/test/models/database_authenticatable_test.rb +6 -0
- data/test/models/lockable_test.rb +13 -0
- data/test/rails_app/app/mongoid/user.rb +1 -1
- data/test/rails_app/config/routes.rb +3 -5
- data/test/rails_app/db/migrate/20100401102949_create_tables.rb +1 -1
- data/test/rails_app/lib/shared_admin.rb +1 -0
- data/test/rails_app/log/development.log +13 -0
- data/test/rails_app/log/test.log +290988 -0
- data/test/support/helpers.rb +0 -17
- metadata +105 -57
- data/.gitignore +0 -10
- data/.travis.yml +0 -13
- data/Gemfile +0 -35
- data/Gemfile.lock +0 -168
- data/Rakefile +0 -34
- data/devise.gemspec +0 -25
- data/lib/devise/controllers/internal_helpers.rb +0 -161
- data/lib/devise/controllers/shared_helpers.rb +0 -26
data/Rakefile
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
require 'rake/testtask'
|
4
|
-
require 'rdoc/task'
|
5
|
-
|
6
|
-
desc 'Default: run tests for all ORMs.'
|
7
|
-
task :default => :test
|
8
|
-
|
9
|
-
desc 'Run Devise tests for all ORMs.'
|
10
|
-
task :pre_commit do
|
11
|
-
Dir[File.join(File.dirname(__FILE__), 'test', 'orm', '*.rb')].each do |file|
|
12
|
-
orm = File.basename(file).split(".").first
|
13
|
-
# "Some day, my son, rake's inner wisdom will reveal itself. Until then,
|
14
|
-
# take this `system` -- may its brute force protect you well."
|
15
|
-
exit 1 unless system "rake test DEVISE_ORM=#{orm}"
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
desc 'Run Devise unit tests.'
|
20
|
-
Rake::TestTask.new(:test) do |t|
|
21
|
-
t.libs << 'lib'
|
22
|
-
t.libs << 'test'
|
23
|
-
t.pattern = 'test/**/*_test.rb'
|
24
|
-
t.verbose = true
|
25
|
-
end
|
26
|
-
|
27
|
-
desc 'Generate documentation for Devise.'
|
28
|
-
Rake::RDocTask.new(:rdoc) do |rdoc|
|
29
|
-
rdoc.rdoc_dir = 'rdoc'
|
30
|
-
rdoc.title = 'Devise'
|
31
|
-
rdoc.options << '--line-numbers' << '--inline-source'
|
32
|
-
rdoc.rdoc_files.include('README.rdoc')
|
33
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
34
|
-
end
|
data/devise.gemspec
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
require "devise/version"
|
4
|
-
|
5
|
-
Gem::Specification.new do |s|
|
6
|
-
s.name = "devise"
|
7
|
-
s.version = Devise::VERSION.dup
|
8
|
-
s.platform = Gem::Platform::RUBY
|
9
|
-
s.summary = "Flexible authentication solution for Rails with Warden"
|
10
|
-
s.email = "contact@plataformatec.com.br"
|
11
|
-
s.homepage = "http://github.com/plataformatec/devise"
|
12
|
-
s.description = "Flexible authentication solution for Rails with Warden"
|
13
|
-
s.authors = ['José Valim', 'Carlos Antônio']
|
14
|
-
|
15
|
-
s.rubyforge_project = "devise"
|
16
|
-
|
17
|
-
s.files = `git ls-files`.split("\n")
|
18
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
-
s.require_paths = ["lib"]
|
21
|
-
|
22
|
-
s.add_dependency("warden", "~> 1.1")
|
23
|
-
s.add_dependency("orm_adapter", "~> 0.0.3")
|
24
|
-
s.add_dependency("bcrypt-ruby", "~> 3.0")
|
25
|
-
end
|
@@ -1,161 +0,0 @@
|
|
1
|
-
module Devise
|
2
|
-
module Controllers
|
3
|
-
# Those helpers are used only inside Devise controllers and should not be
|
4
|
-
# included in ApplicationController since they all depend on the url being
|
5
|
-
# accessed.
|
6
|
-
module InternalHelpers #:nodoc:
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
include Devise::Controllers::ScopedViews
|
9
|
-
include Devise::Controllers::SharedHelpers
|
10
|
-
|
11
|
-
included do
|
12
|
-
helper DeviseHelper
|
13
|
-
|
14
|
-
helpers = %w(resource scope_name resource_name signed_in_resource
|
15
|
-
resource_class devise_mapping devise_controller?)
|
16
|
-
hide_action *helpers
|
17
|
-
helper_method *helpers
|
18
|
-
|
19
|
-
prepend_before_filter :is_devise_resource?
|
20
|
-
respond_to *Mime::SET.map(&:to_sym) if mimes_for_respond_to.empty?
|
21
|
-
end
|
22
|
-
|
23
|
-
# Gets the actual resource stored in the instance variable
|
24
|
-
def resource
|
25
|
-
instance_variable_get(:"@#{resource_name}")
|
26
|
-
end
|
27
|
-
|
28
|
-
# Proxy to devise map name
|
29
|
-
def resource_name
|
30
|
-
devise_mapping.name
|
31
|
-
end
|
32
|
-
alias :scope_name :resource_name
|
33
|
-
|
34
|
-
# Proxy to devise map class
|
35
|
-
def resource_class
|
36
|
-
devise_mapping.to
|
37
|
-
end
|
38
|
-
|
39
|
-
# Returns a signed in resource from session (if one exists)
|
40
|
-
def signed_in_resource
|
41
|
-
warden.authenticate(:scope => resource_name)
|
42
|
-
end
|
43
|
-
|
44
|
-
# Attempt to find the mapped route for devise based on request path
|
45
|
-
def devise_mapping
|
46
|
-
@devise_mapping ||= request.env["devise.mapping"]
|
47
|
-
end
|
48
|
-
|
49
|
-
# Overwrites devise_controller? to return true
|
50
|
-
def devise_controller?
|
51
|
-
true
|
52
|
-
end
|
53
|
-
|
54
|
-
protected
|
55
|
-
|
56
|
-
# Checks whether it's a devise mapped resource or not.
|
57
|
-
def is_devise_resource? #:nodoc:
|
58
|
-
unknown_action! <<-MESSAGE unless devise_mapping
|
59
|
-
Could not find devise mapping for path #{request.fullpath.inspect}.
|
60
|
-
Maybe you forgot to wrap your route inside the scope block? For example:
|
61
|
-
|
62
|
-
devise_scope :user do
|
63
|
-
match "/some/route" => "some_devise_controller"
|
64
|
-
end
|
65
|
-
MESSAGE
|
66
|
-
end
|
67
|
-
|
68
|
-
# Returns real navigational formats which are supported by Rails
|
69
|
-
def navigational_formats
|
70
|
-
@navigational_formats ||= Devise.navigational_formats.select{ |format| Mime::EXTENSION_LOOKUP[format.to_s] }
|
71
|
-
end
|
72
|
-
|
73
|
-
def unknown_action!(msg)
|
74
|
-
logger.debug "[Devise] #{msg}" if logger
|
75
|
-
raise ActionController::UnknownAction, msg
|
76
|
-
end
|
77
|
-
|
78
|
-
# Sets the resource creating an instance variable
|
79
|
-
def resource=(new_resource)
|
80
|
-
instance_variable_set(:"@#{resource_name}", new_resource)
|
81
|
-
end
|
82
|
-
|
83
|
-
# Build a devise resource.
|
84
|
-
def build_resource(hash=nil)
|
85
|
-
hash ||= params[resource_name] || {}
|
86
|
-
self.resource = resource_class.new(hash)
|
87
|
-
end
|
88
|
-
|
89
|
-
# Helper for use in before_filters where no authentication is required.
|
90
|
-
#
|
91
|
-
# Example:
|
92
|
-
# before_filter :require_no_authentication, :only => :new
|
93
|
-
def require_no_authentication
|
94
|
-
return unless is_navigational_format?
|
95
|
-
no_input = devise_mapping.no_input_strategies
|
96
|
-
|
97
|
-
authenticated = if no_input.present?
|
98
|
-
args = no_input.dup.push :scope => resource_name
|
99
|
-
warden.authenticate?(*args)
|
100
|
-
else
|
101
|
-
warden.authenticated?(resource_name)
|
102
|
-
end
|
103
|
-
|
104
|
-
if authenticated
|
105
|
-
resource = warden.user(resource_name)
|
106
|
-
flash[:alert] = I18n.t("devise.failure.already_authenticated")
|
107
|
-
redirect_to after_sign_in_path_for(resource)
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
# Helper for use after calling send_*_instructions methods on a resource.
|
112
|
-
# If we are in paranoid mode, we always act as if the resource was valid
|
113
|
-
# and instructions were sent.
|
114
|
-
def successfully_sent?(resource)
|
115
|
-
notice = if Devise.paranoid
|
116
|
-
resource.errors.clear
|
117
|
-
:send_paranoid_instructions
|
118
|
-
elsif resource.errors.empty?
|
119
|
-
:send_instructions
|
120
|
-
end
|
121
|
-
|
122
|
-
if notice
|
123
|
-
set_flash_message :notice, notice if is_navigational_format?
|
124
|
-
true
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
# Sets the flash message with :key, using I18n. By default you are able
|
129
|
-
# to setup your messages using specific resource scope, and if no one is
|
130
|
-
# found we look to default scope.
|
131
|
-
# Example (i18n locale file):
|
132
|
-
#
|
133
|
-
# en:
|
134
|
-
# devise:
|
135
|
-
# passwords:
|
136
|
-
# #default_scope_messages - only if resource_scope is not found
|
137
|
-
# user:
|
138
|
-
# #resource_scope_messages
|
139
|
-
#
|
140
|
-
# Please refer to README or en.yml locale file to check what messages are
|
141
|
-
# available.
|
142
|
-
def set_flash_message(key, kind, options={}) #:nodoc:
|
143
|
-
options[:scope] = "devise.#{controller_name}"
|
144
|
-
options[:default] = Array(options[:default]).unshift(kind.to_sym)
|
145
|
-
options[:resource_name] = resource_name
|
146
|
-
message = I18n.t("#{resource_name}.#{kind}", options)
|
147
|
-
flash[key] = message if message.present?
|
148
|
-
end
|
149
|
-
|
150
|
-
def clean_up_passwords(object) #:nodoc:
|
151
|
-
object.clean_up_passwords if object.respond_to?(:clean_up_passwords)
|
152
|
-
end
|
153
|
-
|
154
|
-
def respond_with_navigational(*args, &block)
|
155
|
-
respond_with(*args) do |format|
|
156
|
-
format.any(*navigational_formats, &block)
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module Devise
|
2
|
-
module Controllers
|
3
|
-
# Helpers used in both FailureApp and Devise controllers.
|
4
|
-
module SharedHelpers
|
5
|
-
MIME_REFERENCES = Mime::HTML.respond_to?(:ref)
|
6
|
-
|
7
|
-
protected
|
8
|
-
|
9
|
-
# Helper used by FailureApp and Devise controllers to retrieve proper formats.
|
10
|
-
def request_format
|
11
|
-
@request_format ||= if request.format.respond_to?(:ref)
|
12
|
-
request.format.ref
|
13
|
-
elsif MIME_REFERENCES
|
14
|
-
request.format
|
15
|
-
elsif request.format # Rails < 3.0.4
|
16
|
-
request.format.to_sym
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
# Check whether it's navigational format, such as :html or :iphone, or not.
|
21
|
-
def is_navigational_format?
|
22
|
-
Devise.navigational_formats.include?(request_format)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|