mirror of
https://github.com/danbee/danbarberphoto
synced 2025-03-04 08:49:07 +00:00
60 lines
1.5 KiB
Ruby
60 lines
1.5 KiB
Ruby
class Admin::ConfirmationsController < ::Devise::PasswordsController
|
|
layout "admin/layouts/login"
|
|
|
|
skip_before_filter(:authenticate_user!)
|
|
# PUT /resource/confirmation
|
|
def update
|
|
with_unconfirmed_confirmable do
|
|
if @confirmable.has_no_password?
|
|
@confirmable.attempt_set_password(params[:admin_user])
|
|
if @confirmable.valid?
|
|
do_confirm
|
|
else
|
|
do_show
|
|
@confirmable.errors.clear #so that we wont render :new
|
|
end
|
|
else
|
|
self.class.add_error_on(self, :email, :password_allready_set)
|
|
end
|
|
end
|
|
|
|
if !@confirmable.errors.empty?
|
|
render_with_scope :new
|
|
end
|
|
end
|
|
|
|
# GET /resource/confirmation?confirmation_token=abcdef
|
|
def show
|
|
with_unconfirmed_confirmable do
|
|
if @confirmable.has_no_password?
|
|
do_show
|
|
else
|
|
do_confirm
|
|
end
|
|
end
|
|
if !@confirmable.errors.empty?
|
|
render_with_scope :new
|
|
end
|
|
end
|
|
|
|
protected
|
|
def with_unconfirmed_confirmable
|
|
@confirmable = AdminUser.find_or_initialize_with_error_by(:confirmation_token, params[:confirmation_token])
|
|
if !@confirmable.new_record?
|
|
@confirmable.only_if_unconfirmed {yield}
|
|
end
|
|
end
|
|
|
|
def do_show
|
|
@confirmation_token = params[:confirmation_token]
|
|
@requires_password = true
|
|
self.resource = @confirmable
|
|
render_with_scope :show
|
|
end
|
|
|
|
def do_confirm
|
|
@confirmable.confirm!
|
|
set_flash_message :notice, :confirmed
|
|
sign_in_and_redirect(resource_name, @confirmable)
|
|
end
|
|
end |