Move password edit to own page
This commit is contained in:
parent
2f940fab13
commit
d1175870c2
|
@ -0,0 +1,26 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class PasswordsController < ApplicationController
|
||||||
|
def edit
|
||||||
|
@user = Current.user
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
if Current.user.update!(password_params)
|
||||||
|
redirect_to Current.user, notice: t(".success")
|
||||||
|
else
|
||||||
|
flash.now[:alert] = t(".error")
|
||||||
|
render :edit, status: :unprocessable_entity
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def password_params
|
||||||
|
params.require(:user).permit(
|
||||||
|
:password_challenge,
|
||||||
|
:password,
|
||||||
|
:password_confirmation,
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
|
@ -55,9 +55,6 @@ class UsersController < ApplicationController
|
||||||
|
|
||||||
def existing_user_params
|
def existing_user_params
|
||||||
params.require(:user).permit(
|
params.require(:user).permit(
|
||||||
:password,
|
|
||||||
:password_confirmation,
|
|
||||||
:password_challenge,
|
|
||||||
:first_name,
|
:first_name,
|
||||||
:last_name,
|
:last_name,
|
||||||
:profile,
|
:profile,
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
<%= content_for :title, t(".change_password") %>
|
||||||
|
|
||||||
|
<h2><%= t(".change_password") %></h2>
|
||||||
|
|
||||||
|
<section class="inset">
|
||||||
|
<%= form_with model: @user, url: user_password_path(@user), method: :patch do |f| %>
|
||||||
|
<%= f.label :password_challenge, t(".current_password") %>
|
||||||
|
<%= f.password_field :password_challenge %>
|
||||||
|
<%= display_form_errors(@user, :password_challenge) %>
|
||||||
|
|
||||||
|
<%= f.label :password %>
|
||||||
|
<%= f.password_field :password %>
|
||||||
|
<%= display_form_errors(@user, :password) %>
|
||||||
|
|
||||||
|
<%= f.label :password_confirmation %>
|
||||||
|
<%= f.password_field :password_confirmation %>
|
||||||
|
<%= display_form_errors(@user, :password_confirmation) %>
|
||||||
|
|
||||||
|
<%= f.submit t(".update_password") %>
|
||||||
|
<% end %>
|
||||||
|
</section>
|
|
@ -18,17 +18,10 @@
|
||||||
<%= f.text_field :email, required: true, disabled: user.persisted? %>
|
<%= f.text_field :email, required: true, disabled: user.persisted? %>
|
||||||
<%= display_form_errors(user, :email) %>
|
<%= display_form_errors(user, :email) %>
|
||||||
|
|
||||||
|
<% if user.new_record? %>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend><%= t(".password") %></legend>
|
<legend><%= t(".password") %></legend>
|
||||||
|
|
||||||
<% if user.persisted? %>
|
|
||||||
<%= f.label :password_challenge, t(".current_password") %>
|
|
||||||
<%= f.password_field :password_challenge, required: user.new_record? %>
|
|
||||||
<%= display_form_errors(user, :password_challenge) %>
|
|
||||||
|
|
||||||
<p><%= t(".password_hint") %></p>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<%= f.label :password %>
|
<%= f.label :password %>
|
||||||
<%= f.password_field :password, required: user.new_record? %>
|
<%= f.password_field :password, required: user.new_record? %>
|
||||||
<%= display_form_errors(user, :password) %>
|
<%= display_form_errors(user, :password) %>
|
||||||
|
@ -37,6 +30,7 @@
|
||||||
<%= f.password_field :password_confirmation, required: user.new_record? %>
|
<%= f.password_field :password_confirmation, required: user.new_record? %>
|
||||||
<%= display_form_errors(user, :password_confirmation) %>
|
<%= display_form_errors(user, :password_confirmation) %>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
|
|
|
@ -4,3 +4,7 @@
|
||||||
|
|
||||||
<%= render partial: "users/form",
|
<%= render partial: "users/form",
|
||||||
locals: { user: @user, button_text: t(".update_profile") } %>
|
locals: { user: @user, button_text: t(".update_profile") } %>
|
||||||
|
|
||||||
|
<section class="inset">
|
||||||
|
<%= link_to t(".update_password"), edit_user_password_path(Current.user) %>
|
||||||
|
</section>
|
||||||
|
|
|
@ -71,6 +71,15 @@ en:
|
||||||
invalid_token: That token seems to have expired, please try resettting your password again.
|
invalid_token: That token seems to have expired, please try resettting your password again.
|
||||||
success: Your password has been reset, you may now log in.
|
success: Your password has been reset, you may now log in.
|
||||||
error: Failed to reset password. Please try again or contact us for help.
|
error: Failed to reset password. Please try again or contact us for help.
|
||||||
|
passwords:
|
||||||
|
edit:
|
||||||
|
change_password: Change your password
|
||||||
|
current_password: Current password
|
||||||
|
update_password: Update password
|
||||||
|
update:
|
||||||
|
success: Your password has been updated
|
||||||
|
error: Failed to update password
|
||||||
|
|
||||||
sessions:
|
sessions:
|
||||||
create:
|
create:
|
||||||
success: "Hello, %{name}!"
|
success: "Hello, %{name}!"
|
||||||
|
@ -156,10 +165,12 @@ en:
|
||||||
edit:
|
edit:
|
||||||
edit_profile: Edit profile
|
edit_profile: Edit profile
|
||||||
update_profile: Update profile
|
update_profile: Update profile
|
||||||
|
update_password: Change your password
|
||||||
form:
|
form:
|
||||||
password: Password
|
password: Password
|
||||||
password_hint: To keep your existing password, leave the below fields blank
|
password_hint: To keep your existing password, leave the below fields blank
|
||||||
current_password: Current password
|
current_password: Current password
|
||||||
|
update_password: Change your password
|
||||||
update:
|
update:
|
||||||
success: Your profile has been updated
|
success: Your profile has been updated
|
||||||
error: Failed to update profile
|
error: Failed to update profile
|
||||||
|
@ -183,4 +194,3 @@ en:
|
||||||
If you did not request a password reset, please ignore this email.
|
If you did not request a password reset, please ignore this email.
|
||||||
|
|
||||||
Otherwise, please visit the link below to reset your password.
|
Otherwise, please visit the link below to reset your password.
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,9 @@ Rails.application.routes.draw do
|
||||||
get "login" => "sessions#new", as: :login
|
get "login" => "sessions#new", as: :login
|
||||||
delete "logout" => "sessions#destroy", as: :logout
|
delete "logout" => "sessions#destroy", as: :logout
|
||||||
|
|
||||||
resources :users, only: [ :new, :create, :show, :edit, :update ]
|
resources :users, only: [ :new, :create, :show, :edit, :update ] do
|
||||||
|
resource :password, only: [ :edit, :update ]
|
||||||
|
end
|
||||||
resources :account_verifications, only: [ :show ]
|
resources :account_verifications, only: [ :show ]
|
||||||
resources :password_resets, only: [ :new, :create, :edit, :update ]
|
resources :password_resets, only: [ :new, :create, :edit, :update ]
|
||||||
resources :sessions, only: [ :new, :create, :destroy ]
|
resources :sessions, only: [ :new, :create, :destroy ]
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require "test_helper"
|
||||||
|
|
||||||
|
class PasswordsControllerTest < ActionDispatch::IntegrationTest
|
||||||
|
test "should get edit" do
|
||||||
|
user = users(:trevor)
|
||||||
|
sign_in user
|
||||||
|
get edit_user_password_path(user)
|
||||||
|
assert_response :success
|
||||||
|
end
|
||||||
|
|
||||||
|
test "should update password" do
|
||||||
|
user = users(:trevor)
|
||||||
|
sign_in user
|
||||||
|
patch user_password_path(user), params: { user: { password: "new_password", password_confirmation: "new_password" } }
|
||||||
|
assert_redirected_to user_path(user)
|
||||||
|
assert user.reload.authenticate("new_password")
|
||||||
|
end
|
||||||
|
end
|
3
todo.md
3
todo.md
|
@ -1,10 +1,9 @@
|
||||||
- avatars
|
- avatars
|
||||||
- delete avatar
|
- delete avatar
|
||||||
- default avatars
|
- default avatars
|
||||||
- discrete password page
|
|
||||||
- shared/private notes
|
- shared/private notes
|
||||||
- notifications
|
|
||||||
- Add characters to users/tables
|
- Add characters to users/tables
|
||||||
- Character sheets/prototypes
|
- Character sheets/prototypes
|
||||||
|
- notifications
|
||||||
- chat
|
- chat
|
||||||
- maps
|
- maps
|
||||||
|
|
Loading…
Reference in New Issue