Class: Devise::PasswordsController

Inherits:
DeviseController show all
Defined in:
app/controllers/devise/passwords_controller.rb

Instance Method Summary collapse

Instance Method Details

#after_resetting_password_path_for(resource) ⇒ Object (protected)


55
56
57
# File 'app/controllers/devise/passwords_controller.rb', line 55

def after_resetting_password_path_for(resource)
  Devise. ? (resource) : new_session_path(resource_name)
end

#after_sending_reset_password_instructions_path_for(resource_name) ⇒ Object (protected)

The path used after sending reset password instructions


60
61
62
# File 'app/controllers/devise/passwords_controller.rb', line 60

def after_sending_reset_password_instructions_path_for(resource_name)
  new_session_path(resource_name) if is_navigational_format?
end

#assert_reset_token_passedObject (protected)

Check if a reset_password_token is provided in the request


65
66
67
68
69
70
# File 'app/controllers/devise/passwords_controller.rb', line 65

def assert_reset_token_passed
  if params[:reset_password_token].blank?
    set_flash_message(:alert, :no_token)
    redirect_to new_session_path(resource_name)
  end
end

#create {|resource| ... } ⇒ Object

POST /resource/password

Yields:


14
15
16
17
18
19
20
21
22
23
# File 'app/controllers/devise/passwords_controller.rb', line 14

def create
  self.resource = resource_class.send_reset_password_instructions(resource_params)
  yield resource if block_given?

  if successfully_sent?(resource)
    respond_with({}, location: after_sending_reset_password_instructions_path_for(resource_name))
  else
    respond_with(resource)
  end
end

#editObject

GET /resource/password/edit?reset_password_token=abcdef


26
27
28
29
30
# File 'app/controllers/devise/passwords_controller.rb', line 26

def edit
  self.resource = resource_class.new
  set_minimum_password_length
  resource.reset_password_token = params[:reset_password_token]
end

#newObject

GET /resource/password/new


9
10
11
# File 'app/controllers/devise/passwords_controller.rb', line 9

def new
  self.resource = resource_class.new
end

#translation_scopeObject (protected)


80
81
82
# File 'app/controllers/devise/passwords_controller.rb', line 80

def translation_scope
  'devise.passwords'
end

#unlockable?(resource) ⇒ Boolean (protected)

Check if proper Lockable module methods are present & unlock strategy allows to unlock resource on password reset

Returns:

  • (Boolean)

74
75
76
77
78
# File 'app/controllers/devise/passwords_controller.rb', line 74

def unlockable?(resource)
  resource.respond_to?(:unlock_access!) &&
    resource.respond_to?(:unlock_strategy_enabled?) &&
    resource.unlock_strategy_enabled?(:email)
end

#update {|resource| ... } ⇒ Object

PUT /resource/password

Yields:


33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'app/controllers/devise/passwords_controller.rb', line 33

def update
  self.resource = resource_class.reset_password_by_token(resource_params)
  yield resource if block_given?

  if resource.errors.empty?
    resource.unlock_access! if unlockable?(resource)
    if Devise.
      flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
      set_flash_message!(:notice, flash_message)
      resource.after_database_authentication
      (resource_name, resource)
    else
      set_flash_message!(:notice, :updated_not_active)
    end
    respond_with resource, location: after_resetting_password_path_for(resource)
  else
    set_minimum_password_length
    respond_with resource
  end
end