Browse Source

Edit password page working and added

Co-authored-by: Dushan <dushan-madetech@users.noreply.github.com>
pull/110/head
Matthew Phelan 4 years ago
parent
commit
3cb305ed04
  1. 3
      Gemfile.lock
  2. 49
      app/views/devise/registrations/edit.html.erb
  3. 4
      app/views/users/account/index.html.erb
  4. 6
      config/routes.rb
  5. 5
      spec/features/user_spec.rb

3
Gemfile.lock

@ -232,6 +232,8 @@ GEM
minitest (5.14.4)
msgpack (1.4.2)
nio4r (2.5.8)
nokogiri (1.12.5-x86_64-darwin)
racc (~> 1.4)
nokogiri (1.12.5-x86_64-linux)
racc (~> 1.4)
orm_adapter (0.5.0)
@ -393,6 +395,7 @@ GEM
zeitwerk (2.5.1)
PLATFORMS
x86_64-darwin-19
x86_64-darwin-20
x86_64-linux

49
app/views/devise/registrations/edit.html.erb

@ -1,43 +1,26 @@
<h2>Edit <%= resource_name.to_s.humanize %></h2>
<% content_for :before_content do %>
<%= link_to 'Back', :back, class: "govuk-back-link" %>
<% end %>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
<%= render "devise/shared/error_messages", resource: resource %>
<%= form_for(resource, as: resource_name, url: user_registration_path(), html: { method: :put }) do |f| %>
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds">
<h1 class="govuk-heading-l">Change your password</h1>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true, autocomplete: "email" %>
<div class="govuk-form-group">
<%= f.label :current_password, class: "govuk-label" %>
<%= f.password_field :current_password, autocomplete: "current-password", class: "govuk-input" %>
</div>
<% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
<div>Currently waiting confirmation for: <%= resource.unconfirmed_email %></div>
<% end %>
<div class="field">
<%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
<%= f.password_field :password, autocomplete: "new-password" %>
<% if @minimum_password_length %>
<br />
<em><%= @minimum_password_length %> characters minimum</em>
<% end %>
<div class="govuk-form-group">
<%= f.label :password, class: "govuk-label" %>
<div id="undefined-hint" class="govuk-hint">
Your password must be at least 8 characters and hard to guess.
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
<%= f.password_field :password, autocomplete: "new-password", class: "govuk-input" %>
</div>
<div class="field">
<%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
<%= f.password_field :current_password, autocomplete: "current-password" %>
<%= f.submit "Update", class: "govuk-button" %>
</div>
<div class="actions">
<%= f.submit "Update" %>
</div>
<% end %>
<h3>Cancel my account</h3>
<p>Unhappy? <%= button_to "Cancel my account", registration_path(resource_name), data: { confirm: "Are you sure?" }, method: :delete %></p>
<%= link_to "Back", :back %>

4
app/views/users/account/index.html.erb

@ -39,9 +39,7 @@
••••••••
</dd>
<dd class="govuk-summary-list__actions">
<a class="govuk-link" href="/users/account/password?referrer=/account">
Change<span class="govuk-visually-hidden"> password</span>
</a>
<%= link_to "Change", edit_user_registration_path %>
</dd>
</div>
<div class="govuk-summary-list__row">

6
config/routes.rb

@ -1,8 +1,12 @@
Rails.application.routes.draw do
devise_for :users, controllers: { passwords: "users/passwords" }
devise_for :users, controllers: { passwords: "users/passwords" }, :skip => [:registrations]
devise_scope :user do
get "confirmations/reset", to: "users/passwords#reset_confirmation"
end
as :user do
get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration'
put 'users' => 'devise/registrations#update', :as => 'user_registration'
end
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
ActiveAdmin.routes(self)

5
spec/features/user_spec.rb

@ -70,5 +70,10 @@ RSpec.describe "User Features" do
click_link("change-email")
expect(page).to have_content("Personal details")
end
it "edit password page present and accessible" do
visit("users/edit")
expect(page).to have_content("Change your password")
end
end
end

Loading…
Cancel
Save