Bidouillages avec le workflow des formulaires

This commit is contained in:
Jérémy Lecour 2022-01-26 23:39:29 +01:00 committed by Jérémy Lecour
parent aaff875024
commit 5b6b99a253
7 changed files with 161 additions and 60 deletions

View file

@ -1,29 +1,74 @@
<%= form_with model: @user, url: account_path, method: :put do |form| %>
<%= render partial: "shared/form_errors", locals: { object: form.object } %>
<div>
<%= form.label :email, "Current Email" %>
<%= form.text_field :email, disabled: true %>
<div class="min-h-full flex flex-col justify-center sm:px-6 lg:px-8">
<div class="sm:mx-auto sm:w-full sm:max-w-md">
<div class="bg-white py-8 px-4 shadow sm:rounded-lg sm:px-10">
<h2 class="text-center text-3xl font-extrabold text-gray-900">
Update your profile
</h2>
<%= form_with model: @user, url: account_path, method: :put, class: "space-y-6" do |form| %>
<div>
<%= form.label :email, class: "block text-sm font-medium text-gray-700" do %>
Current email address
<% end %>
<div class="mt-1">
<%= form.text_field :email, disabled: true, class: "appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm bg-gray-100" %>
</div>
</div>
<div>
<%= form.label :unconfirmed_email, class: "block text-sm font-medium text-gray-700" do %>
New email address
<% end %>
<div class="mt-1">
<%= form.text_field :unconfirmed_email, class: "appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" %>
</div>
</div>
<div>
<%= form.label :name, class: "block text-sm font-medium text-gray-700" do %>
Name
<% end %>
<div class="mt-1">
<%= form.text_field :name, class: "appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" %>
</div>
</div>
<div class="border-t border-gray-200 pt-5">
<div class="flex justify-between">
<%= form.label :password, class: "block text-sm font-medium text-gray-700" do %>
New password
<% end %>
<span class="text-sm text-gray-500">only if you want to change</span>
</div>
<div class="mt-1">
<%= form.password_field :password, autocomplete: "new-password", class: "appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" %>
</div>
</div>
<div>
<%= form.label :password, class: "block text-sm font-medium text-gray-700" do %>
Confirmation of new password
<% end %>
<div class="mt-1">
<%= form.password_field :password, autocomplete: "new-password", class: "appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" %>
</div>
</div>
<div class="border-t border-gray-200 pt-5">
<div class="flex justify-between">
<%= form.label :current_password, class: "block text-sm font-medium text-gray-700 after:content-['*'] after:ml-0.5 after:text-red-500" do %>
Current password
<% end %>
<span class="text-sm text-gray-500">for security</span>
</div>
<div class="mt-1">
<%= form.password_field :current_password, required: true, autocomplete: "current-password", class: "appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" %>
</div>
</div>
<div>
<%= form.submit "Update", class: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" %>
</div>
<% end %>
</div>
</div>
<div>
<%= form.label :unconfirmed_email, "New Email" %>
<%= form.text_field :unconfirmed_email %>
</div>
<div>
<%= form.label :name %>
<%= form.text_field :name, autocomplete: "name" %>
</div>
<div>
<%= form.label :password, "Password (leave blank if you don't want to change it)" %>
<%= form.password_field :password, autocomplete: "new-password" %>
</div>
<div>
<%= form.label :password_confirmation %>
<%= form.password_field :password_confirmation, autocomplete: "new-password" %>
</div>
<hr/>
<div>
<%= form.label :current_password, "Current password (we need your current password to confirm your changes)" %>
<%= form.password_field :current_password, required: true, autocomplete: "current-password" %>
</div>
<%= form.submit "Update Account" %>
<% end %>
</div>

View file

@ -1,4 +1,4 @@
<div class="min-h-full flex flex-col justify-center py-12 sm:px-6 lg:px-8">
<div class="min-h-full flex flex-col justify-center sm:px-6 lg:px-8">
<div class="sm:mx-auto sm:w-full sm:max-w-md">
<h2 class="text-center text-3xl font-extrabold text-gray-900">
Sign up for an account
@ -9,18 +9,33 @@
</p>
</div>
<div class="mt-8 sm:mx-auto sm:w-full sm:max-w-md">
<div class="bg-white py-8 px-4 shadow sm:rounded-lg sm:px-10">
<%= form_with model: @user, url: sign_up_path, class: "space-y-6" do |form| %>
<%= render partial: "shared/form_errors", locals: { object: form.object } %>
<div>
<%= form.label :email, class: "block text-sm font-medium text-gray-700" do %>
<%= form.label :email, class: "block text-sm font-medium text-gray-700 after:content-['*'] after:ml-0.5 after:text-red-500" do %>
Email address
<% end %>
<div class="mt-1">
<%= form.text_field :email, required: true, autofocus: true, autocomplete: "email", class: "appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" %>
</div>
<% if form.object.errors.where(:email).any? %>
<div class="mt-1 relative rounded-md shadow-sm">
<%= form.text_field :email, required: true, autocomplete: "email", placeholder: "you@example.com", aria: {invalid: "true", describedby: "email-error"}, class: "block w-full pr-10 border-red-300 text-red-900 placeholder-red-300 focus:outline-none focus:ring-red-500 focus:border-red-500 sm:text-sm rounded-md" %>
<div class="absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none">
<%= heroicon "exclamation-circle", variant: :solid, options: { class: "h-5 w-5 text-red-500" } %>
</div>
</div>
<% form.object.errors.where(:email).each do |error| %>
<p class="mt-2 text-sm text-red-600" id="email-error"><%= error.full_message %></p>
<% end %>
<% else %>
<div class="mt-1 relative rounded-md shadow-sm">
<%= form.text_field :email, required: true, autofocus: true, autocomplete: "email", placeholder: "you@example.com", class: "block w-full pr-10 border-gray-300 text-gray-900 placeholder-gray-300 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm rounded-md" %>
</div>
<% end %>
</div>
<div>
<%= form.label :name, class: "block text-sm font-medium text-gray-700" do %>
Your name
@ -31,21 +46,45 @@
</div>
<div>
<%= form.label :password, class: "block text-sm font-medium text-gray-700" do %>
<%= form.label :password, class: "block text-sm font-medium text-gray-700 after:content-['*'] after:ml-0.5 after:text-red-500" do %>
Password
<% end %>
<div class="mt-1">
<%= form.password_field :password, required: true, autocomplete: "new-password", class: "appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" %>
</div>
<% if form.object.errors.where(:password).any? %>
<div class="mt-1 relative rounded-md shadow-sm">
<%= form.password_field :password, required: true, autocomplete: "new-password", aria: {invalid: "true", describedby: "password-error"}, class: "block w-full pr-10 border-red-300 text-red-900 placeholder-red-300 focus:outline-none focus:ring-red-500 focus:border-red-500 sm:text-sm rounded-md" %>
<div class="absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none">
<%= heroicon "exclamation-circle", variant: :solid, options: { class: "h-5 w-5 text-red-500" } %>
</div>
</div>
<% form.object.errors.where(:password).each do |error| %>
<p class="mt-2 text-sm text-red-600" id="password-error"><%= error.full_message %></p>
<% end %>
<% else %>
<div class="mt-1 relative rounded-md shadow-sm">
<%= form.password_field :password, required: true, autofocus: true, autocomplete: "new-password", class: "block w-full pr-10 border-gray-300 text-gray-900 placeholder-gray-300 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm rounded-md" %>
</div>
<% end %>
</div>
<div>
<%= form.label :password_confirmation, class: "block text-sm font-medium text-gray-700" do %>
<%= form.label :password_confirmation, class: "block text-sm font-medium text-gray-700 after:content-['*'] after:ml-0.5 after:text-red-500" do %>
Password confirmation
<% end %>
<div class="mt-1">
<%= form.password_field :password_confirmation, required: true, autocomplete: "new-password", class: "appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" %>
</div>
<% if form.object.errors.where(:password_confirmation).any? %>
<div class="mt-1 relative rounded-md shadow-sm">
<%= form.password_field :password_confirmation, required: true, autocomplete: "new-password", aria: {invalid: "true", describedby: "password-confirmation-error"}, class: "block w-full pr-10 border-red-300 text-red-900 placeholder-red-300 focus:outline-none focus:ring-red-500 focus:border-red-500 sm:text-sm rounded-md" %>
<div class="absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none">
<%= heroicon "exclamation-circle", variant: :solid, options: { class: "h-5 w-5 text-red-500" } %>
</div>
</div>
<% form.object.errors.where(:password_confirmation).each do |error| %>
<p class="mt-2 text-sm text-red-600" id="password-confirmation-error"><%= error.full_message %></p>
<% end %>
<% else %>
<div class="mt-1 relative rounded-md shadow-sm">
<%= form.password_field :password_confirmation, required: true, autofocus: true, autocomplete: "new-password", class: "block w-full pr-10 border-gray-300 text-gray-900 placeholder-gray-300 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm rounded-md" %>
</div>
<% end %>
</div>
<div>

View file

@ -1,4 +1,4 @@
<div class="min-h-full flex flex-col justify-center py-12 sm:px-6 lg:px-8">
<div class="min-h-full flex flex-col justify-center sm:px-6 lg:px-8">
<div class="sm:mx-auto sm:w-full sm:max-w-md">
<h2 class="text-center text-3xl font-extrabold text-gray-900">
Resend instructions

View file

@ -75,12 +75,6 @@
</main>
</div>
<div>
Controller: <%= controller_name %>
<% if current_user %>
<br>User: <%= current_user.email %>
<% end %>
</div>
</div>
</body>
</html>

View file

@ -1,11 +1,34 @@
<%= form_with url: password_path(params[:password_reset_token]), scope: :user, method: :put do |form| %>
<div>
<%= form.label :password %>
<%= form.password_field :password, required: true %>
<div class="min-h-full flex flex-col justify-center sm:px-6 lg:px-8">
<div class="sm:mx-auto sm:w-full sm:max-w-md">
<div class="bg-white py-8 px-4 shadow sm:rounded-lg sm:px-10">
<h2 class="text-center text-3xl font-extrabold text-gray-900">
Change your password
</h2>
<%= form_with url: password_path(params[:password_reset_token]), scope: :user, method: :put, class: "space-y-6" do |form| %>
<div>
<%= form.label :password, class: "block text-sm font-medium text-gray-700" do %>
New password
<% end %>
<div class="mt-1">
<%= form.password_field :password, required: true, autocomplete: "new-password", class: "appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" %>
</div>
</div>
<div>
<%= form.label :password, class: "block text-sm font-medium text-gray-700" do %>
Confirmation of new password
<% end %>
<div class="mt-1">
<%= form.password_field :password, required: true, autocomplete: "new-password", class: "appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" %>
</div>
</div>
<div>
<%= form.submit "Update", class: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" %>
</div>
<% end %>
</div>
</div>
<div>
<%= form.label :password_confirmation %>
<%= form.password_field :password_confirmation, required: true %>
</div>
<%= form.submit "Update Password" %>
<% end %>
</div>

View file

@ -1,4 +1,4 @@
<div class="min-h-full flex flex-col justify-center py-12 sm:px-6 lg:px-8">
<div class="min-h-full flex flex-col justify-center sm:px-6 lg:px-8">
<div class="sm:mx-auto sm:w-full sm:max-w-md">
<h2 class="text-center text-3xl font-extrabold text-gray-900">
Forgot your password?

View file

@ -1,4 +1,4 @@
<div class="min-h-full flex flex-col justify-center py-12 sm:px-6 lg:px-8">
<div class="min-h-full flex flex-col justify-center sm:px-6 lg:px-8">
<div class="sm:mx-auto sm:w-full sm:max-w-md">
<h2 class="text-center text-3xl font-extrabold text-gray-900">
Sign in to your account