From 3e7909c02b5062f546b1604b8213e36549c69254 Mon Sep 17 00:00:00 2001 From: Trevor Vallender Date: Wed, 29 May 2024 17:17:06 +0100 Subject: [PATCH] Add initial user show page --- app/controllers/table_invites_controller.rb | 2 +- app/controllers/users_controller.rb | 11 +++++++++++ app/models/user.rb | 4 ++++ app/views/table_invites/index.html.erb | 2 +- app/views/users/show.html.erb | 7 +++++++ config/locales/en.yml | 2 ++ config/routes.rb | 2 +- test/controllers/users_controller_test.rb | 6 ++++++ 8 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 app/views/users/show.html.erb diff --git a/app/controllers/table_invites_controller.rb b/app/controllers/table_invites_controller.rb index 19e45c2..49affb9 100644 --- a/app/controllers/table_invites_controller.rb +++ b/app/controllers/table_invites_controller.rb @@ -5,7 +5,7 @@ class TableInvitesController < ApplicationController before_action :set_table_invite, only: [ :edit, :update ] def index - @table_invites = TableInvite.where(email: Current.user.email) + @table_invites = TableInvite.where(email: Current.user.email).not_responded end def new diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 61f678f..df1837a 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -2,6 +2,7 @@ class UsersController < ApplicationController skip_before_action :authenticate, only: [ :new, :create ] + before_action :set_user, only: [ :show ] def new @user = User.new @@ -20,6 +21,12 @@ class UsersController < ApplicationController end end + def show + if @user == Current.user + @table_invites = TableInvite.where(email: @user.email).not_responded + end + end + private def user_params @@ -32,4 +39,8 @@ class UsersController < ApplicationController :last_name, ) end + + def set_user + @user = User.find_by(username: params[:id]) + end end diff --git a/app/models/user.rb b/app/models/user.rb index 0247ab8..8c59498 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -37,6 +37,10 @@ class User < ApplicationRecord scope :verified, -> { where(verified: true) } scope :unverified, -> { where(verified: false) } + def to_param + username + end + def full_name return first_name if last_name.blank? diff --git a/app/views/table_invites/index.html.erb b/app/views/table_invites/index.html.erb index a9c1b2d..1956ec1 100644 --- a/app/views/table_invites/index.html.erb +++ b/app/views/table_invites/index.html.erb @@ -4,7 +4,7 @@ <% if @table_invites.any? %> <% @table_invites.each do |table_invite| %> - <%= link_to table_invite.table, edit_table_invite_path(table_invite) %> + <%= link_to table_invite.table.name, edit_table_invite_path(table_invite) %> <% end %> <% else %>

<%= t(".no_table_invites") %>

diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb new file mode 100644 index 0000000..313266b --- /dev/null +++ b/app/views/users/show.html.erb @@ -0,0 +1,7 @@ +<%= content_for :title, @user.username %> + +

<%= @user.username %>

+ +<% if @user == Current.user && @table_invites.any? %> + <%= link_to t(".your_invites"), table_invites_path %> +<% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 343ca63..adab564 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -122,6 +122,8 @@ en: create: error: "Could not create account: %{error}" success: "Thanks for joining Tabletop Companion, %{name}! Please check your email to verify your address." + show: + your_invites: Your invites user_mailer: email_verified: content: |- diff --git a/config/routes.rb b/config/routes.rb index 8c7e2a9..058342e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -8,7 +8,7 @@ Rails.application.routes.draw do get "login" => "sessions#new", as: :login delete "logout" => "sessions#destroy", as: :logout - resources :users, only: [ :new, :create ] + resources :users, only: [ :new, :create, :show ] resources :account_verifications, only: [ :show ] resources :sessions, only: [ :new, :create, :destroy ] diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb index d86fa20..9a71861 100644 --- a/test/controllers/users_controller_test.rb +++ b/test/controllers/users_controller_test.rb @@ -8,6 +8,12 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_response :success end + test "should get show" do + sign_in users(:trevor) + get user_url(users(:trevor)) + assert_response :success + end + test "should create user" do assert_changes("User.count", +1) do post(users_url, params: { user: user_params })