Compare commits

..

4 commits

Author SHA1 Message Date
03b3e18126 Remove caps and spaces from email addresses
Closes #19
2026-01-09 17:41:15 -06:00
cb89742f60 Set time zone as well when signing up 2026-01-09 17:41:15 -06:00
51cfbd5548 Move reset link to error message 2026-01-09 17:41:15 -06:00
35f8c3f392 Redirect to previous page after login
Closes #24
2026-01-09 17:40:39 -06:00
3 changed files with 14 additions and 5 deletions

View file

@ -102,7 +102,7 @@ get '/signup' do
end end
post '/signup' do post '/signup' do
@user = User.create(email: params[:email]) @user = User.create(email: params[:email].downcase.strip)
@errors = [] @errors = []
if params[:password].empty? if params[:password].empty?
@errors << OpenStruct.new(:attribute => :password, :type => :blank) @errors << OpenStruct.new(:attribute => :password, :type => :blank)
@ -114,6 +114,7 @@ post '/signup' do
@user.save @user.save
session.clear session.clear
session[:user_id] = @user.id session[:user_id] = @user.id
session[:timezone] = params[:timezone]
redirect '/' redirect '/'
else else
erb :signup erb :signup
@ -125,7 +126,7 @@ get '/login' do
end end
post '/login' do post '/login' do
user = User.find_by(email: params[:email]) user = User.find_by(email: params[:email].downcase.strip)
if user && verify_password(params[:password], user.password) if user && verify_password(params[:password], user.password)
if not user.reset.nil? if not user.reset.nil?
user.reset = nil user.reset = nil
@ -150,6 +151,7 @@ get '/reset' do
end end
post '/reset' do post '/reset' do
params[:email].downcase!.strip!
logger.info "Password reset request for \"#{params[:email]}\"" logger.info "Password reset request for \"#{params[:email]}\""
@errors = [] @errors = []
if not params[:email] =~ URI::MailTo::EMAIL_REGEXP if not params[:email] =~ URI::MailTo::EMAIL_REGEXP

View file

@ -1,7 +1,10 @@
<h1 class="mb-5"><%= _("Login") %></h1> <h1 class="mb-5"><%= _("Login") %></h1>
<% if @error %> <% if @error %>
<p class="alert alert-warning mb-4"><%= @error %></p> <div class="alert alert-warning mb-4">
<p><%= @error %></p>
<p class="mb-0"><a href="/reset"><%= _("Reset password") %></a></p>
</div>
<% end %> <% end %>
<form action="/login" name="login" method="post" class="mb-5"> <form action="/login" name="login" method="post" class="mb-5">
@ -13,12 +16,11 @@
<label for="password" class="form-label"><%= _("Password") %></label> <label for="password" class="form-label"><%= _("Password") %></label>
<input type="password" name="password" class="form-control"> <input type="password" name="password" class="form-control">
</div> </div>
<button type="submit" class="btn btn-primary"><%= _("Login") %></button>
<input type="hidden" name="r" value="<%= @params[:r] %>"> <input type="hidden" name="r" value="<%= @params[:r] %>">
<input type="hidden" name="timezone" value="UTC"> <input type="hidden" name="timezone" value="UTC">
<button type="submit" class="btn btn-primary"><%= _("Login") %></button>
</form> </form>
<p><a href="/signup"><%= _("Create account") %></a></p> <p><a href="/signup"><%= _("Create account") %></a></p>
<p><a href="/reset"><%= _("Reset password") %></a></p>
<script> <script>
document.login.timezone.value = Intl.DateTimeFormat().resolvedOptions().timeZone; document.login.timezone.value = Intl.DateTimeFormat().resolvedOptions().timeZone;

View file

@ -28,5 +28,10 @@
<label for="password" class="form-label"><%= _("Password") %></label> <label for="password" class="form-label"><%= _("Password") %></label>
<input type="password" name="password" value="<%= params[:password] %>" class="form-control"> <input type="password" name="password" value="<%= params[:password] %>" class="form-control">
</div> </div>
<input type="hidden" name="timezone" value="UTC">
<button type="submit" class="btn btn-primary"><%= _("Create account") %></button> <button type="submit" class="btn btn-primary"><%= _("Create account") %></button>
</form> </form>
<script>
document.signup.timezone.value = Intl.DateTimeFormat().resolvedOptions().timeZone;
</script>