From 005da31e1455669739dd457ed5029de772ea956b Mon Sep 17 00:00:00 2001 From: Rob Sterner Date: Tue, 23 Jan 2024 22:16:58 -0500 Subject: [PATCH] user management + some future templates --- app/commands/add_user_to_company.rb | 17 ++-- .../settings/tabs_component.html.erb | 30 ++++--- app/components/settings/tabs_component.rb | 18 ++-- app/controllers/settings/users_controller.rb | 24 ++++++ app/views/settings/users/edit.html.erb | 4 + app/views/settings/users/index.html.erb | 6 +- app/views/settings/users/new.html.erb | 81 ++++++++++++++++++ app/views/settings/users/show.html.erb | 4 + spec/commands/add_user_to_company_spec.rb | 84 ++++++++++++++++++- spec/system/user_management_spec.rb | 70 ++++++++++++++++ 10 files changed, 315 insertions(+), 23 deletions(-) create mode 100644 app/views/settings/users/edit.html.erb create mode 100644 app/views/settings/users/new.html.erb create mode 100644 app/views/settings/users/show.html.erb create mode 100644 spec/system/user_management_spec.rb diff --git a/app/commands/add_user_to_company.rb b/app/commands/add_user_to_company.rb index e2bc6a91..bb46b3d0 100644 --- a/app/commands/add_user_to_company.rb +++ b/app/commands/add_user_to_company.rb @@ -2,7 +2,10 @@ class AddUserToCompany - attr_accessor :user + attr_accessor :user, :membership + attr_reader :errors + + class InvalidArguments < StandardError; end def initialize(email:, name:, role: "member", company:) @email = email @@ -12,8 +15,10 @@ def initialize(email:, name:, role: "member", company:) end def call - find_or_create_user - add_user_to_company + User.transaction do + find_or_create_user + add_user_to_company + end @user end @@ -25,10 +30,12 @@ def find_or_create_user user.name = @name user.current_company = @company end + + @user.save! end def add_user_to_company - @company.memberships.build(user: @user, role: @role, status: 'active') - @company.save! + @membership = @company.memberships.build(user: @user, role: @role, status: 'active') + @membership.save! end end \ No newline at end of file diff --git a/app/components/settings/tabs_component.html.erb b/app/components/settings/tabs_component.html.erb index ecffd362..4617ac37 100644 --- a/app/components/settings/tabs_component.html.erb +++ b/app/components/settings/tabs_component.html.erb @@ -1,15 +1,23 @@ -
-
- - +
+
+
+ <%= action_buttons %> +
-