Allow user to see their profile page

This commit is contained in:
ricola 2026-04-20 13:09:14 -06:00
parent b4e56645f6
commit 267dc439f1
4 changed files with 18 additions and 11 deletions

View file

@ -218,6 +218,11 @@ post '/logout' do
redirect '/login' redirect '/login'
end end
get '/users/:id' do
require_admin_or_self
erb :users_show
end
get '/admin' do get '/admin' do
require_admin require_admin
@users = User.all @users = User.all
@ -225,12 +230,6 @@ get '/admin' do
erb :admin erb :admin
end end
get '/admin/users/:id' do
require_admin
@user = User.find(params[:id])
erb :admin_users
end
get '/admin/users/:id/organizers/:vote/delete' do get '/admin/users/:id/organizers/:vote/delete' do
require_admin require_admin
rating = Organizer.where(user: params[:id]).where(vote: params[:vote]).each do |organizer| rating = Organizer.where(user: params[:id]).where(vote: params[:vote]).each do |organizer|
@ -652,6 +651,12 @@ helpers do
redirect '/' unless is_admin redirect '/' unless is_admin
end end
def require_admin_or_self
require_login
find_user
redirect '/' unless is_admin or current_user == @user
end
def find_vote def find_vote
@vote = Vote.find_by(secure_id: params[:id]) @vote = Vote.find_by(secure_id: params[:id])
end end
@ -660,6 +665,10 @@ helpers do
@candidate = Candidate.find(params[:cid]) @candidate = Candidate.find(params[:cid])
end end
def find_user
@user = User.find(params[:id])
end
def all_users_sorted def all_users_sorted
User.all.each.sort_by { |user| user.email } User.all.each.sort_by { |user| user.email }
end end

View file

@ -14,7 +14,7 @@
</thead> </thead>
<% @users.sort_by { |user| user.email }.each do |user| %> <% @users.sort_by { |user| user.email }.each do |user| %>
<tr> <tr>
<td><a href="/admin/users/<%= user.id %>"><%= user.email %></a></td> <td><a href="/users/<%= user.id %>"><%= user.email %></a></td>
<td><%= format_date(user.created_at) %></td> <td><%= format_date(user.created_at) %></td>
<td><%= user.admin %></td> <td><%= user.admin %></td>
<td><%= user.votes.length %></td> <td><%= user.votes.length %></td>

View file

@ -40,7 +40,7 @@
<div class="d-flex flex-wrap justify-content-end pe-3 py-3 mb-4"> <div class="d-flex flex-wrap justify-content-end pe-3 py-3 mb-4">
<% if current_user %> <% if current_user %>
<%= current_user.email %> <a href="/users/<%= current_user.id %>"><%= current_user.email %></a>
<% else %> <% else %>
&nbsp; &nbsp;
<% end %> <% end %>

View file

@ -1,6 +1,4 @@
<h1 class="mb-5"><%= _("Admin") %></h1> <h1 class="mb-5"><%= @user.email %></h1>
<h2 class="mb-4"><%= @user.email %></h2>
<p><%= _("Created: %{date}") % { date: format_date(@user.created_at) } %></p> <p><%= _("Created: %{date}") % { date: format_date(@user.created_at) } %></p>