diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index cd7f6aa..35d6731 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,3 +1,17 @@ class ApplicationController < ActionController::Base - before_action :authenticate_user! + before_action :authenticate_user! + before_action :configure_permitted_parameters, if: :devise_controller? + + protected + + def configure_permitted_parameters + devise_parameter_sanitizer.permit(:sign_up, keys: [:display_name]) + devise_parameter_sanitizer.permit(:account_update, keys: [:display_name]) + end + + # Uncomment for redirect after login + def after_sign_in_path_for(resource) + # return the path based on resource + '/checks' + end end diff --git a/app/views/devise/registrations/edit.html.erb b/app/views/devise/registrations/edit.html.erb index 38d95b8..9dbfd07 100644 --- a/app/views/devise/registrations/edit.html.erb +++ b/app/views/devise/registrations/edit.html.erb @@ -1,43 +1,181 @@ -

Edit <%= resource_name.to_s.humanize %>

+
-<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %> - <%= render "devise/shared/error_messages", resource: resource %> - -
- <%= f.label :email %>
- <%= f.email_field :email, autofocus: true, autocomplete: "email" %> +
+

Edit <%= resource_name.to_s.humanize %>

+ <%= link_to "Back", :back, class: "rounded-lg py-3 px-5 bg-blue-600 text-white block font-medium" %>
- <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %> -
Currently waiting confirmation for: <%= resource.unconfirmed_email %>
- <% end %> +
+ +
+
+ <%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %> +
+
-
- <%= f.label :password %> (leave blank if you don't want to change it)
- <%= f.password_field :password, autocomplete: "new-password" %> - <% if @minimum_password_length %> -
- <%= @minimum_password_length %> characters minimum - <% end %> + <%= render "devise/shared/error_messages", resource: resource %> + +
+

+ Profile +

+
+ +
+
+ <%= f.label :email, class: "block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2" %> +
+
+ <%= f.email_field :email, autofocus: false, autocomplete: "email", class: "flex-1 block w-full focus:ring-indigo-500 focus:border-indigo-500 min-w-0 rounded-none rounded-r-md sm:text-sm border-gray-300", placeholder: "foo@example.com" %> +
+ <% if true or devise_mapping.confirmable? && resource.pending_reconfirmation? %> +

Currently waiting confirmation for: <%= resource.email %>

+ <% end %> +
+
+
+ +
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+
+ <% end %> +
+
-
- <%= f.label :password_confirmation %>
- <%= f.password_field :password_confirmation, autocomplete: "new-password" %> + + +
+
+
+

Profile

+

+ This information will be displayed publicly so be careful what you share. +

+
+
+
+ <%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %> +
+
+ +
+
+ <%= render "devise/shared/error_messages", resource: resource %> +
+
+ +
+
+ <%= f.label :email, class: "block text-sm font-medium text-gray-700" %> +
+ <%= f.email_field :email, autofocus: false, autocomplete: "email", class: "focus:ring-indigo-500 focus:border-indigo-500 flex-1 block w-full rounded-none rounded-r-md sm:text-sm border-gray-300", placeholder: "foo@example.com" %> +
+
+
+ + <% if true or devise_mapping.confirmable? && resource.pending_reconfirmation? %> +
+
+ Currently waiting confirmation for: <%= resource.email %> +
+
+ <% end %> + +
+
+ <%= f.label :display_name, class: "block text-sm font-medium text-gray-700" %> +
+ <%= f.text_field :display_name, autocomplete: "name", class: "focus:ring-indigo-500 focus:border-indigo-500 flex-1 block w-full rounded-none rounded-r-md sm:text-sm border-gray-300" %> +
+
+
+ +
+
+
+ <%= f.label :password, class: "block text-sm font-medium text-gray-700" %> + (leave blank if you don't want to change it) +
+
+ <%= f.password_field :password, autocomplete: "new-password", class: "focus:ring-indigo-500 focus:border-indigo-500 flex-1 block w-full rounded-none rounded-r-md sm:text-sm border-gray-300" %> +
+ <% if @minimum_password_length %> +

+ <%= @minimum_password_length %> characters minimum +

+ <% end %> +
+
+ +
+
+ <%= f.label :password_confirmation, class: "block text-sm font-medium text-gray-700" %> +
+ <%= f.password_field :password_confirmation, autocomplete: "new-password", class: "focus:ring-indigo-500 focus:border-indigo-500 flex-1 block w-full rounded-none rounded-r-md sm:text-sm border-gray-300" %> +
+
+
+ +
+
+
+ <%= f.label :current_password, class: "block text-sm font-medium text-gray-700" %> + (we need your current password to confirm your changes) +
+
+ <%= f.password_field :current_password, autocomplete: "current-password", class: "focus:ring-indigo-500 focus:border-indigo-500 flex-1 block w-full rounded-none rounded-r-md sm:text-sm border-gray-300" %> +
+
+
+ +
+
+ +
+
+ <% end %> +
+
-
- <%= f.label :current_password %> (we need your current password to confirm your changes)
- <%= f.password_field :current_password, autocomplete: "current-password" %> -
- -
- <%= f.submit "Update" %> -
-<% end %> - -

Cancel my account

- -

Unhappy? <%= button_to "Cancel my account", registration_path(resource_name), data: { confirm: "Are you sure?" }, method: :delete %>

- -<%= link_to "Back", :back %> diff --git a/app/views/devise/shared/_error_messages.html.erb b/app/views/devise/shared/_error_messages.html.erb index ba7ab88..db34382 100644 --- a/app/views/devise/shared/_error_messages.html.erb +++ b/app/views/devise/shared/_error_messages.html.erb @@ -1,15 +1,31 @@ <% if resource.errors.any? %> -
-

- <%= I18n.t("errors.messages.not_saved", - count: resource.errors.count, - resource: resource.class.model_name.human.downcase) - %> -

-
    - <% resource.errors.full_messages.each do |message| %> -
  • <%= message %>
  • - <% end %> -
+
+
+
+ <%= heroicon "check-circle", variant: :solid, options: { class: "h-5 w-5 text-red-400" } %> +
+
+

+ <%= I18n.t("errors.messages.not_saved", + count: resource.errors.count, + resource: resource.class.model_name.human.downcase) + %> +

+
    + <% resource.errors.full_messages.each do |message| %> +
  • <%= message %>
  • + <% end %> +
+
+
+
+ +
+
+
+ <% end %> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index d831abf..f67a425 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -13,117 +13,13 @@
- + <% if user_signed_in? %> + <%= render partial: "shared/main_nav_signed_in" %> + <% else %> + <%= render partial: "shared/main_nav_signed_out" %> + <% end %>
-
-
-

- <%= yield :main_header %> -

-
-
<% if notice.present? %> diff --git a/app/views/shared/_main_nav_signed_in.html.erb b/app/views/shared/_main_nav_signed_in.html.erb new file mode 100644 index 0000000..a3a1360 --- /dev/null +++ b/app/views/shared/_main_nav_signed_in.html.erb @@ -0,0 +1,100 @@ + \ No newline at end of file diff --git a/app/views/shared/_main_nav_signed_out.html.erb b/app/views/shared/_main_nav_signed_out.html.erb new file mode 100644 index 0000000..12e5c5e --- /dev/null +++ b/app/views/shared/_main_nav_signed_out.html.erb @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/app/views/shared/_user_menu.html.erb b/app/views/shared/_user_menu.html.erb index 49f10f9..f04cfa5 100644 --- a/app/views/shared/_user_menu.html.erb +++ b/app/views/shared/_user_menu.html.erb @@ -1,3 +1,5 @@ -<%= link_to "Your Profile", "#", class: common_classes + " " + active_classes %> +<%= link_to "Your Profile", edit_user_registration_path(@user), class: common_classes + " " + active_classes %> <%= link_to "Settings", "#", class: common_classes + " " + active_classes %> -<%= button_to "Sign out", destroy_user_session_path(@user), method: :delete, class: common_classes + " " + active_classes + " inline" %> \ No newline at end of file +
+ <%= button_to "Sign out", destroy_user_session_path(@user), method: :delete, class: common_classes + " " + active_classes + " inline" %> +
\ No newline at end of file diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index f6e3724..19bfbd8 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -4,7 +4,9 @@

<%= notice %>

<% end %> - <%= render @user %> +
+ +
<%= link_to 'Edit this user', edit_user_path(@user), class: "mt-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
diff --git a/config/routes.rb b/config/routes.rb index c6ae083..87dd297 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,7 +1,16 @@ Rails.application.routes.draw do - devise_for :users, :path_prefix => 'my' - resources :users + devise_for :users + # devise_for :users, skip: [:sessions] + # as :user do + # get 'signin', to: 'devise/sessions#new', as: :new_user_session + # post 'signin', to: 'devise/sessions#create', as: :user_session + # delete 'signout', to: 'devise/sessions#destroy', as: :destroy_user_session + # end + scope '/admin' do + resources :users + end resources :checks + # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html # Defines the root path route ("/")