设计..首次登录后应要求更改密码
Devise ..After first login should ask for change password
我在我的应用程序中使用设计作为身份验证。
我需要在设计中实现功能。首次登录后,用户应要求更改密码。
我试过模型
after_create :update_pass_change
def update_pass_change
self.pass_change = true
self.save
end
勾选current_user.sign_in_count
是判断首次登录的方式
你会做这样的事情。
class ApplicationController < ActionController::Base
def after_sign_in_path_for(resource)
if current_user.sign_in_count == 1
edit_passwords_path
else
root_path
end
end
end
您需要实施 edit/update 密码操作。
class PasswordsController < ApplicationController
def edit
end
def update
if current_user.update_with_password(user_params)
flash[:notice] = 'password update succeed..'
render :edit
else
flash[:error] = 'password update failed.'
render :edit
end
end
private
def user_params
params.require(:user).permit(:current_password, :password, :password_confirmation)
end
end
config/routes.rb
resource :passwords
app/views/passwords/_form.html.erb
<%= form_for current_user, url: passwords_path do |f| %>
current_password:<br />
<%= f.password_field :current_password %><br />
password:<br />
<%= f.password_field :password %><br />
password_confirmation:<br />
<%= f.password_field :password_confirmation %><br />
<br />
<%= f.submit %>
<% end %>
我在我的应用程序中使用设计作为身份验证。
我需要在设计中实现功能。首次登录后,用户应要求更改密码。
我试过模型
after_create :update_pass_change
def update_pass_change
self.pass_change = true
self.save
end
勾选current_user.sign_in_count
是判断首次登录的方式
你会做这样的事情。
class ApplicationController < ActionController::Base
def after_sign_in_path_for(resource)
if current_user.sign_in_count == 1
edit_passwords_path
else
root_path
end
end
end
您需要实施 edit/update 密码操作。
class PasswordsController < ApplicationController
def edit
end
def update
if current_user.update_with_password(user_params)
flash[:notice] = 'password update succeed..'
render :edit
else
flash[:error] = 'password update failed.'
render :edit
end
end
private
def user_params
params.require(:user).permit(:current_password, :password, :password_confirmation)
end
end
config/routes.rb
resource :passwords
app/views/passwords/_form.html.erb
<%= form_for current_user, url: passwords_path do |f| %>
current_password:<br />
<%= f.password_field :current_password %><br />
password:<br />
<%= f.password_field :password %><br />
password_confirmation:<br />
<%= f.password_field :password_confirmation %><br />
<br />
<%= f.submit %>
<% end %>