У меня есть довольно стандартная модель User
с дизайном. Администраторы управляются с помощью :admin
boolean на модели, и пользователи, которые не являются администраторами, не могут самостоятельно управлять (то есть только администраторы могут вносить изменения в пользователей).Devise: разрешить пользователям только сбросить пароль
Что бы я хотел, это разрешить пользователям сбросить пароль, если они его забудут. Они будут вводить свой адрес электронной почты, а затем будут отправлены по электронной почте токен, который предоставит им доступ, чтобы изменить его. Я начал решение, но я действительно не знаю, как это сделать.
user.rb
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
attr_accessor :current_password
attr_accessible :name, :password, :password_confirmation, :current_password, :email, :remember_me, :ftp, :colour1, :colour2, :logo, :logo2, :address, :url, :disclosure, :general_advice, :facebook, :twitter, :brand_id, :analytics
attr_protected :admin
validates_uniqueness_of :email, :ftp
belongs_to :brand
has_many :docs
has_many :orders, :through => :docs
has_attached_file :logo
has_attached_file :logo2
end
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new #guesting
if user.admin?
can :manage, :all
else
can :manage, :recoverable
end
end
end
А вот метод:
def reset
@idiot = User.where(:email => params[:email]).first
unless @idiot.nil?
Notifier.send_reset_notice(@idiot).deliver
@idiot.send_reset_password_instructions
redirect_to new_user_session_url
else
redirect_to new_user_session_url, :flash => { :error => "That email address matches no user." }
end
end
Пользователь получает письмо DEViSE, но нажав на ссылку берет пользователя в корневом каталоге приложения, а не к форма сброса пароля. Я не уверен, как исходить отсюда. Есть предположения? Ура!
UPDATE
Соответствующие маршруты:
devise_for :users, :path => "d"
devise_scope :user do
get '/sign_in' => 'devise/sessions#new'
get '/sign_out' => 'devise/sessions#destroy'
end
вы должны быть судимы это решение [DEViSE вики] (https: // Г thub.com/plataformatec/devise/wiki/How-To%3a-Allow-users-to-edit-their-password)? –
Да, это не работает для моей ситуации. Похоже, что есть проблемы с моими маршрутами или чем-то еще. Я обновлю вопрос с помощью своих маршрутов. –