From 59b5aabd19ce9df96ace262a20a4c6e59dcfa2b3 Mon Sep 17 00:00:00 2001 From: Rob Sterner Date: Thu, 18 Jan 2024 16:40:02 -0500 Subject: [PATCH] adds a users index --- .../settings/tabs_component.html.erb | 3 +- .../users/list_item_component.html.erb | 31 +++++++++++++++ .../settings/users/list_item_component.rb | 39 +++++++++++++++++++ .../settings/users/status_component.html.erb | 3 ++ .../settings/users/status_component.rb | 22 +++++++++++ app/controllers/settings/users_controller.rb | 26 +++++++++++++ app/views/settings/users/index.html.erb | 9 +++++ config/routes.rb | 1 + 8 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 app/components/settings/users/list_item_component.html.erb create mode 100644 app/components/settings/users/list_item_component.rb create mode 100644 app/components/settings/users/status_component.html.erb create mode 100644 app/components/settings/users/status_component.rb create mode 100644 app/controllers/settings/users_controller.rb create mode 100644 app/views/settings/users/index.html.erb diff --git a/app/components/settings/tabs_component.html.erb b/app/components/settings/tabs_component.html.erb index 532f18f3..ecffd362 100644 --- a/app/components/settings/tabs_component.html.erb +++ b/app/components/settings/tabs_component.html.erb @@ -1,9 +1,9 @@
-
@@ -11,6 +11,7 @@
diff --git a/app/components/settings/users/list_item_component.html.erb b/app/components/settings/users/list_item_component.html.erb new file mode 100644 index 00000000..c1d162d6 --- /dev/null +++ b/app/components/settings/users/list_item_component.html.erb @@ -0,0 +1,31 @@ +
  • +
    + <%= helpers.user_gravatar(user: @user, css_classes: "h-12 w-12 flex-none rounded-full bg-gray-50") %> + +
    +
    + + +
    +
  • \ No newline at end of file diff --git a/app/components/settings/users/list_item_component.rb b/app/components/settings/users/list_item_component.rb new file mode 100644 index 00000000..6b93408c --- /dev/null +++ b/app/components/settings/users/list_item_component.rb @@ -0,0 +1,39 @@ +module Settings + module Users + class ListItemComponent < ViewComponent::Base + def initialize(current_company:, user:) + @current_company = current_company + @user = user + end + + def user_name + @user.name + end + + def user_email + @user.email + end + + def user_status + current_company_membership.status + end + + def user_role + @user.role + end + + def user_job_title + # TODO: add a field for users to set this. + "" + end + + private + + def current_company_membership + return @_membership if defined?(@_membership) + + @_membership = @user.memberships.where(company: @current_company).first + end + end + end +end \ No newline at end of file diff --git a/app/components/settings/users/status_component.html.erb b/app/components/settings/users/status_component.html.erb new file mode 100644 index 00000000..fc5c0886 --- /dev/null +++ b/app/components/settings/users/status_component.html.erb @@ -0,0 +1,3 @@ + + Status: <%= user_status %> + \ No newline at end of file diff --git a/app/components/settings/users/status_component.rb b/app/components/settings/users/status_component.rb new file mode 100644 index 00000000..13598917 --- /dev/null +++ b/app/components/settings/users/status_component.rb @@ -0,0 +1,22 @@ +module Settings + module Users + class StatusComponent < ViewComponent::Base + def initialize(status:) + @status = status + end + + def user_status + @status.capitalize + end + + def user_status_color + case @status + when Membership::ACTIVE + "bg-green-50 text-green-700 ring-green-600/20" + else + "bg-gray-50 text-gray-600 ring-gray-500/10" + end + end + end + end +end \ No newline at end of file diff --git a/app/controllers/settings/users_controller.rb b/app/controllers/settings/users_controller.rb new file mode 100644 index 00000000..9f74b399 --- /dev/null +++ b/app/controllers/settings/users_controller.rb @@ -0,0 +1,26 @@ +class Settings::UsersController < ApplicationController + before_action :require_user! + before_action :require_company_owner_or_admin! + + def index + @users = current_company.users.all + end + + def show + end + + def edit + end + + def update + end + + def new + end + + def create + end + + def destroy + end +end diff --git a/app/views/settings/users/index.html.erb b/app/views/settings/users/index.html.erb new file mode 100644 index 00000000..ba68093b --- /dev/null +++ b/app/views/settings/users/index.html.erb @@ -0,0 +1,9 @@ +<%= render(Settings::TabsComponent.new) %> + +
    +
      + <% @users.each do |user| %> + <%= render(Settings::Users::ListItemComponent.new(user:, current_company:)) %> + <% end %> +
    +
    \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 04737a58..1bd8974c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -30,6 +30,7 @@ post :create_checkout_session end end + resources :users, controller: "settings/users" end root "dashboard#show"