Add devise
This commit is contained in:
		
							
								
								
									
										13
									
								
								app/models/user.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								app/models/user.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
class User < ApplicationRecord
 | 
			
		||||
  # Include default devise modules. Others available are:
 | 
			
		||||
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
 | 
			
		||||
  devise :database_authenticatable, :registerable, :rememberable
 | 
			
		||||
 | 
			
		||||
  def email_required?
 | 
			
		||||
    false
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def email_changed?
 | 
			
		||||
    false
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										16
									
								
								app/views/devise/confirmations/new.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								app/views/devise/confirmations/new.html.erb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
<h2>Resend confirmation instructions</h2>
 | 
			
		||||
 | 
			
		||||
<%= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f| %>
 | 
			
		||||
  <%= render "devise/shared/error_messages", resource: resource %>
 | 
			
		||||
 | 
			
		||||
  <div class="field">
 | 
			
		||||
    <%= f.label :email %><br />
 | 
			
		||||
    <%= f.email_field :email, autofocus: true, autocomplete: "email", value: (resource.pending_reconfirmation? ? resource.unconfirmed_email : resource.email) %>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <div class="actions">
 | 
			
		||||
    <%= f.submit "Resend confirmation instructions" %>
 | 
			
		||||
  </div>
 | 
			
		||||
<% end %>
 | 
			
		||||
 | 
			
		||||
<%= render "devise/shared/links" %>
 | 
			
		||||
@@ -0,0 +1,5 @@
 | 
			
		||||
<p>Welcome <%= @email %>!</p>
 | 
			
		||||
 | 
			
		||||
<p>You can confirm your account email through the link below:</p>
 | 
			
		||||
 | 
			
		||||
<p><%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %></p>
 | 
			
		||||
							
								
								
									
										7
									
								
								app/views/devise/mailer/email_changed.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/views/devise/mailer/email_changed.html.erb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
<p>Hello <%= @email %>!</p>
 | 
			
		||||
 | 
			
		||||
<% if @resource.try(:unconfirmed_email?) %>
 | 
			
		||||
  <p>We're contacting you to notify you that your email is being changed to <%= @resource.unconfirmed_email %>.</p>
 | 
			
		||||
<% else %>
 | 
			
		||||
  <p>We're contacting you to notify you that your email has been changed to <%= @resource.email %>.</p>
 | 
			
		||||
<% end %>
 | 
			
		||||
							
								
								
									
										3
									
								
								app/views/devise/mailer/password_change.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								app/views/devise/mailer/password_change.html.erb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
<p>Hello <%= @resource.email %>!</p>
 | 
			
		||||
 | 
			
		||||
<p>We're contacting you to notify you that your password has been changed.</p>
 | 
			
		||||
@@ -0,0 +1,8 @@
 | 
			
		||||
<p>Hello <%= @resource.email %>!</p>
 | 
			
		||||
 | 
			
		||||
<p>Someone has requested a link to change your password. You can do this through the link below.</p>
 | 
			
		||||
 | 
			
		||||
<p><%= link_to 'Change my password', edit_password_url(@resource, reset_password_token: @token) %></p>
 | 
			
		||||
 | 
			
		||||
<p>If you didn't request this, please ignore this email.</p>
 | 
			
		||||
<p>Your password won't change until you access the link above and create a new one.</p>
 | 
			
		||||
							
								
								
									
										7
									
								
								app/views/devise/mailer/unlock_instructions.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/views/devise/mailer/unlock_instructions.html.erb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
<p>Hello <%= @resource.email %>!</p>
 | 
			
		||||
 | 
			
		||||
<p>Your account has been locked due to an excessive number of unsuccessful sign in attempts.</p>
 | 
			
		||||
 | 
			
		||||
<p>Click the link below to unlock your account:</p>
 | 
			
		||||
 | 
			
		||||
<p><%= link_to 'Unlock my account', unlock_url(@resource, unlock_token: @token) %></p>
 | 
			
		||||
							
								
								
									
										25
									
								
								app/views/devise/passwords/edit.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								app/views/devise/passwords/edit.html.erb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
<h2>Change your password</h2>
 | 
			
		||||
 | 
			
		||||
<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| %>
 | 
			
		||||
  <%= render "devise/shared/error_messages", resource: resource %>
 | 
			
		||||
  <%= f.hidden_field :reset_password_token %>
 | 
			
		||||
 | 
			
		||||
  <div class="field">
 | 
			
		||||
    <%= f.label :password, "New password" %><br />
 | 
			
		||||
    <% if @minimum_password_length %>
 | 
			
		||||
      <em>(<%= @minimum_password_length %> characters minimum)</em><br />
 | 
			
		||||
    <% end %>
 | 
			
		||||
    <%= f.password_field :password, autofocus: true, autocomplete: "new-password" %>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <div class="field">
 | 
			
		||||
    <%= f.label :password_confirmation, "Confirm new password" %><br />
 | 
			
		||||
    <%= f.password_field :password_confirmation, autocomplete: "new-password" %>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <div class="actions">
 | 
			
		||||
    <%= f.submit "Change my password" %>
 | 
			
		||||
  </div>
 | 
			
		||||
<% end %>
 | 
			
		||||
 | 
			
		||||
<%= render "devise/shared/links" %>
 | 
			
		||||
							
								
								
									
										16
									
								
								app/views/devise/passwords/new.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								app/views/devise/passwords/new.html.erb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
<h2>Forgot your password?</h2>
 | 
			
		||||
 | 
			
		||||
<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %>
 | 
			
		||||
  <%= render "devise/shared/error_messages", resource: resource %>
 | 
			
		||||
 | 
			
		||||
  <div class="field">
 | 
			
		||||
    <%= f.label :email %><br />
 | 
			
		||||
    <%= f.email_field :email, autofocus: true, autocomplete: "email" %>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <div class="actions">
 | 
			
		||||
    <%= f.submit "Send me reset password instructions" %>
 | 
			
		||||
  </div>
 | 
			
		||||
<% end %>
 | 
			
		||||
 | 
			
		||||
<%= render "devise/shared/links" %>
 | 
			
		||||
							
								
								
									
										43
									
								
								app/views/devise/registrations/edit.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								app/views/devise/registrations/edit.html.erb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
<h2>Edit <%= resource_name.to_s.humanize %></h2>
 | 
			
		||||
 | 
			
		||||
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
 | 
			
		||||
  <%= render "devise/shared/error_messages", resource: resource %>
 | 
			
		||||
 | 
			
		||||
  <div class="field">
 | 
			
		||||
    <%= f.label :email %><br />
 | 
			
		||||
    <%= f.email_field :email, autofocus: true, autocomplete: "email" %>
 | 
			
		||||
  </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>
 | 
			
		||||
 | 
			
		||||
  <div class="field">
 | 
			
		||||
    <%= f.label :password_confirmation %><br />
 | 
			
		||||
    <%= f.password_field :password_confirmation, autocomplete: "new-password" %>
 | 
			
		||||
  </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" %>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <div class="actions">
 | 
			
		||||
    <%= f.submit "Update" %>
 | 
			
		||||
  </div>
 | 
			
		||||
<% end %>
 | 
			
		||||
 | 
			
		||||
<h3>Cancel my account</h3>
 | 
			
		||||
 | 
			
		||||
<div>Unhappy? <%= button_to "Cancel my account", registration_path(resource_name), data: { confirm: "Are you sure?", turbo_confirm: "Are you sure?" }, method: :delete %></div>
 | 
			
		||||
 | 
			
		||||
<%= link_to "Back", :back %>
 | 
			
		||||
							
								
								
									
										29
									
								
								app/views/devise/registrations/new.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								app/views/devise/registrations/new.html.erb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
<h2>Sign up</h2>
 | 
			
		||||
 | 
			
		||||
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
 | 
			
		||||
  <%= render "devise/shared/error_messages", resource: resource %>
 | 
			
		||||
 | 
			
		||||
  <div class="field">
 | 
			
		||||
    <%= f.label :username %><br />
 | 
			
		||||
    <%= f.text_field :username, autofocus: true, autocomplete: "username" %>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <div class="field">
 | 
			
		||||
    <%= f.label :password %>
 | 
			
		||||
    <% if @minimum_password_length %>
 | 
			
		||||
    <em>(<%= @minimum_password_length %> characters minimum)</em>
 | 
			
		||||
    <% end %><br />
 | 
			
		||||
    <%= f.password_field :password, autocomplete: "new-password" %>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <div class="field">
 | 
			
		||||
    <%= f.label :password_confirmation %><br />
 | 
			
		||||
    <%= f.password_field :password_confirmation, autocomplete: "new-password" %>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <div class="actions">
 | 
			
		||||
    <%= f.submit "Sign up" %>
 | 
			
		||||
  </div>
 | 
			
		||||
<% end %>
 | 
			
		||||
 | 
			
		||||
<%= render "devise/shared/links" %>
 | 
			
		||||
							
								
								
									
										26
									
								
								app/views/devise/sessions/new.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								app/views/devise/sessions/new.html.erb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
<h2>Log in</h2>
 | 
			
		||||
 | 
			
		||||
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
 | 
			
		||||
  <div class="field">
 | 
			
		||||
    <%= f.label :username %><br />
 | 
			
		||||
    <%= f.text_field :username, autofocus: true, autocomplete: "username" %>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <div class="field">
 | 
			
		||||
    <%= f.label :password %><br />
 | 
			
		||||
    <%= f.password_field :password, autocomplete: "current-password" %>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <% if devise_mapping.rememberable? %>
 | 
			
		||||
    <div class="field">
 | 
			
		||||
      <%= f.check_box :remember_me %>
 | 
			
		||||
      <%= f.label :remember_me %>
 | 
			
		||||
    </div>
 | 
			
		||||
  <% end %>
 | 
			
		||||
 | 
			
		||||
  <div class="actions">
 | 
			
		||||
    <%= f.submit "Log in" %>
 | 
			
		||||
  </div>
 | 
			
		||||
<% end %>
 | 
			
		||||
 | 
			
		||||
<%= render "devise/shared/links" %>
 | 
			
		||||
							
								
								
									
										15
									
								
								app/views/devise/shared/_error_messages.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								app/views/devise/shared/_error_messages.html.erb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
<% if resource.errors.any? %>
 | 
			
		||||
  <div id="error_explanation" data-turbo-cache="false">
 | 
			
		||||
    <h2>
 | 
			
		||||
      <%= I18n.t("errors.messages.not_saved",
 | 
			
		||||
                 count: resource.errors.count,
 | 
			
		||||
                 resource: resource.class.model_name.human.downcase)
 | 
			
		||||
       %>
 | 
			
		||||
    </h2>
 | 
			
		||||
    <ul>
 | 
			
		||||
      <% resource.errors.full_messages.each do |message| %>
 | 
			
		||||
        <li><%= message %></li>
 | 
			
		||||
      <% end %>
 | 
			
		||||
    </ul>
 | 
			
		||||
  </div>
 | 
			
		||||
<% end %>
 | 
			
		||||
							
								
								
									
										25
									
								
								app/views/devise/shared/_links.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								app/views/devise/shared/_links.html.erb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
<%- if controller_name != 'sessions' %>
 | 
			
		||||
  <%= link_to "Log in", new_session_path(resource_name) %><br />
 | 
			
		||||
<% end %>
 | 
			
		||||
 | 
			
		||||
<%- if devise_mapping.registerable? && controller_name != 'registrations' %>
 | 
			
		||||
  <%= link_to "Sign up", new_registration_path(resource_name) %><br />
 | 
			
		||||
<% end %>
 | 
			
		||||
 | 
			
		||||
<%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %>
 | 
			
		||||
  <%= link_to "Forgot your password?", new_password_path(resource_name) %><br />
 | 
			
		||||
<% end %>
 | 
			
		||||
 | 
			
		||||
<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
 | 
			
		||||
  <%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %><br />
 | 
			
		||||
<% end %>
 | 
			
		||||
 | 
			
		||||
<%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
 | 
			
		||||
  <%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %><br />
 | 
			
		||||
<% end %>
 | 
			
		||||
 | 
			
		||||
<%- if devise_mapping.omniauthable? %>
 | 
			
		||||
  <%- resource_class.omniauth_providers.each do |provider| %>
 | 
			
		||||
    <%= button_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider), data: { turbo: false } %><br />
 | 
			
		||||
  <% end %>
 | 
			
		||||
<% end %>
 | 
			
		||||
							
								
								
									
										16
									
								
								app/views/devise/unlocks/new.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								app/views/devise/unlocks/new.html.erb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
<h2>Resend unlock instructions</h2>
 | 
			
		||||
 | 
			
		||||
<%= form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f| %>
 | 
			
		||||
  <%= render "devise/shared/error_messages", resource: resource %>
 | 
			
		||||
 | 
			
		||||
  <div class="field">
 | 
			
		||||
    <%= f.label :email %><br />
 | 
			
		||||
    <%= f.email_field :email, autofocus: true, autocomplete: "email" %>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <div class="actions">
 | 
			
		||||
    <%= f.submit "Resend unlock instructions" %>
 | 
			
		||||
  </div>
 | 
			
		||||
<% end %>
 | 
			
		||||
 | 
			
		||||
<%= render "devise/shared/links" %>
 | 
			
		||||
@@ -11,6 +11,16 @@
 | 
			
		||||
  </head>
 | 
			
		||||
 | 
			
		||||
  <body>
 | 
			
		||||
    <p class="notice"><%= notice %></p>
 | 
			
		||||
    <p class="alert"><%= alert %></p>
 | 
			
		||||
    <div style="display: block;">
 | 
			
		||||
      <% if user_signed_in? %>
 | 
			
		||||
        <p>Welcome <%= current_user.username %></p>
 | 
			
		||||
        <%= link_to "Sign Out", destroy_user_session_path, data: { turbo_method: :delete } %>
 | 
			
		||||
      <% else %>
 | 
			
		||||
        <%= link_to "Sign In", new_user_session_path %>
 | 
			
		||||
        <%= link_to "Register", new_user_registration_path %>
 | 
			
		||||
      <% end %>
 | 
			
		||||
    <%= yield %>
 | 
			
		||||
  </body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user