diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 3a25598..c7d8c60 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -43,8 +43,9 @@ class UsersController < ApplicationController
end
def user_params
- params.require(:user).permit(:email, :password, :password_confirmation, roles: [])
+ params.require(:user).permit(:email, :password, :password_confirmation, :remember_me, :first_name, :last_name, :phone, :company, :access_revoked, :access_start_date, :access_end_date, roles: [])
end
+
def require_admin
unless current_user.admin?
@@ -53,16 +54,12 @@ class UsersController < ApplicationController
end
def assign_roles(user)
- user.roles.delete_all # Clear all roles before reassigning to prevent duplicates
-
- # Assuming roles are passed as an array of role names from the form
- # and that the form sends an empty string if no roles are selected.
- selected_roles = params[:user][:roles].reject(&:blank?)
-
- selected_roles.each do |role_name|
- user.add_role(role_name) unless user.has_role?(role_name)
- end
+ user.roles = []
+ params[:user][:roles].each do |role_name|
+ user.add_role(role_name) unless role_name.blank?
+ end if params[:user][:roles].present?
end
+
def update_user_roles(user, roles_names)
user.roles.delete_all # Remove existing roles
diff --git a/app/views/users/_form.html.erb b/app/views/users/_form.html.erb
index 34a4a45..155c3cf 100644
--- a/app/views/users/_form.html.erb
+++ b/app/views/users/_form.html.erb
@@ -1,30 +1,68 @@
<%= form_with(model: user, local: true, html: { class: 'needs-validation', novalidate: true }) do |form| %>
-
+
+ <%# Display validation errors, if any %>
<% if user.errors.any? %>
-
<%= form.label :email, class: 'form-label' %>
<%= form.email_field :email, id: :user_email, class: 'form-control' %>
-
+ <%# First Name %>
- <%= form.label :roles, 'Assign Role', class: 'form-label' %>
- <%= form.select :roles, options_for_select(Role.pluck(:name), user.roles.pluck(:name)), {}, { multiple: true, class: 'form-control' } %>
+ <%= form.label :first_name, class: 'form-label' %>
+ <%= form.text_field :first_name, id: :user_first_name, class: 'form-control' %>
-
-
- <%= form.submit 'Save', class: 'btn btn-dark' %>
+ <%# Last Name %>
+
+ <%= form.label :last_name, class: 'form-label' %>
+ <%= form.text_field :last_name, id: :user_last_name, class: 'form-control' %>
+
+ <%# Phone Number %>
+
+ <%= form.label :phone, class: 'form-label' %>
+ <%= form.telephone_field :phone, id: :user_phone, class: 'form-control' %>
+
+
+ <%# Company %>
+
+ <%= form.label :company, class: 'form-label' %>
+ <%= form.text_field :company, id: :user_company, class: 'form-control' %>
+
+
+ <%# Assuming roles are assigned via checkboxes or a select dropdown %>
+
+ <%= form.label :roles, 'Assign Role(s)', class: 'form-label' %>
+ <%# Adjust this to your roles setup %>
+ <%= form.collection_select :roles, Role.all, :name, :name, {}, { multiple: true, class: 'form-select' } %>
+
+
+ <%# Access control fields %>
+
+ <%= form.check_box :access_revoked, class: 'form-check-input' %>
+ <%= form.label :access_revoked, 'Access Revoked', class: 'form-check-label' %>
+
+
+ <%# Date fields for access control %>
+
+ <%= form.label :access_start_date, 'Access Start Date', class: 'form-label' %>
+ <%= form.date_select :access_start_date, class: 'form-control' %>
+
+
+
+ <%= form.label :access_end_date, 'Access End Date', class: 'form-label' %>
+ <%= form.date_select :access_end_date, class: 'form-control' %>
+
+
+ <%# Submit button %>
+
+ <%= form.submit 'Save', class: 'btn btn-primary' %>
+
+
<% end %>
diff --git a/db/migrate/20240409215110_add_details_to_users.rb b/db/migrate/20240409215110_add_details_to_users.rb
new file mode 100644
index 0000000..476b576
--- /dev/null
+++ b/db/migrate/20240409215110_add_details_to_users.rb
@@ -0,0 +1,11 @@
+class AddDetailsToUsers < ActiveRecord::Migration[7.1]
+ def change
+ add_column :users, :first_name, :string
+ add_column :users, :last_name, :string
+ add_column :users, :phone, :string
+ add_column :users, :company, :string
+ add_column :users, :access_revoked, :boolean, default: false
+ add_column :users, :access_start_date, :date
+ add_column :users, :access_end_date, :date
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 9e1803d..4ac86c5 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema[7.1].define(version: 2024_04_03_213530) do
+ActiveRecord::Schema[7.1].define(version: 2024_04_09_215110) do
create_table "bank_accounts", force: :cascade do |t|
t.string "institution_name"
t.string "account_type"
@@ -180,6 +180,13 @@ ActiveRecord::Schema[7.1].define(version: 2024_04_03_213530) do
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.boolean "admin", default: false, null: false
+ t.string "first_name"
+ t.string "last_name"
+ t.string "phone"
+ t.string "company"
+ t.boolean "access_revoked", default: false
+ t.date "access_start_date"
+ t.date "access_end_date"
t.index ["email"], name: "index_users_on_email", unique: true
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
end