Validate email address

This commit is contained in:
ricola 2025-12-04 17:41:28 -06:00
parent 55a5801da4
commit e4df728a04
2 changed files with 28 additions and 12 deletions

View file

@ -136,19 +136,27 @@ get '/reset' do
end end
post '/reset' do post '/reset' do
@user = User.find_by(email: params[:email]) @errors = []
if @user unless params[:email] =~ URI::MailTo::EMAIL_REGEXP
@reset = SecureRandom.uuid @errors << OpenStruct.new(:attribute => :email, :type => :invalid)
@user.reset = hash_password(@reset) end
@user.save if not @errors.empty?
mail = Mail.new erb :reset
mail.from = settings.admin_email else
mail.to = @user.email @user = User.find_by(email: params[:email])
mail.subject = _("Reset your password") if @user
mail.body = erb :reset_email, :layout => false @reset = SecureRandom.uuid
mail.deliver @user.reset = hash_password(@reset)
@user.save
mail = Mail.new
mail.from = settings.admin_email
mail.to = @user.email
mail.subject = _("Reset your password")
mail.body = erb :reset_email, :layout => false
mail.deliver
end
erb :reset_sent
end end
erb :reset_sent
end end
get '/reset/:uuid' do get '/reset/:uuid' do

View file

@ -1,5 +1,13 @@
<h1 class="mb-5"><%= _("Reset password") %></h1> <h1 class="mb-5"><%= _("Reset password") %></h1>
<% if @errors %>
<% @errors.each do |error| %>
<% if error.attribute == :email and error.type == :invalid %>
<p class="alert alert-warning mb-4"><%= _("Enter an email address.") %></p>
<% end %>
<% end %>
<% end %>
<form action="/reset" method="post"> <form action="/reset" method="post">
<div class="mb-3"> <div class="mb-3">
<label for="email" class="form-label"><%= _("Email") %></label> <label for="email" class="form-label"><%= _("Email") %></label>