Working on the User model. Have the new desired fields for users and need to still stylize Edit page, link the right form page and continue with access revoking.
This commit is contained in:
parent
867deebf20
commit
cbbe45c791
|
@ -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
|
||||
|
|
|
@ -1,30 +1,68 @@
|
|||
<%= form_with(model: user, local: true, html: { class: 'needs-validation', novalidate: true }) do |form| %>
|
||||
<!-- Display errors, if any -->
|
||||
|
||||
<%# Display validation errors, if any %>
|
||||
<% if user.errors.any? %>
|
||||
<div id="error_explanation" class="alert alert-danger" role="alert">
|
||||
<h4><%= pluralize(user.errors.count, "error") %> prohibited this user from being saved:</h4>
|
||||
<ul>
|
||||
<% user.errors.full_messages.each do |message| %>
|
||||
<li><%= message %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<%# Error messages display block %>
|
||||
<% end %>
|
||||
|
||||
<!-- Email field -->
|
||||
<%# User attributes fields %>
|
||||
<%# Email field %>
|
||||
<div class="mb-3">
|
||||
<%= form.label :email, class: 'form-label' %>
|
||||
<%= form.email_field :email, id: :user_email, class: 'form-control' %>
|
||||
</div>
|
||||
|
||||
<!-- Role selection -->
|
||||
<%# First Name %>
|
||||
<div class="mb-3">
|
||||
<%= 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' %>
|
||||
</div>
|
||||
|
||||
<!-- Submit button -->
|
||||
<div class="actions">
|
||||
<%= form.submit 'Save', class: 'btn btn-dark' %>
|
||||
<%# Last Name %>
|
||||
<div class="mb-3">
|
||||
<%= form.label :last_name, class: 'form-label' %>
|
||||
<%= form.text_field :last_name, id: :user_last_name, class: 'form-control' %>
|
||||
</div>
|
||||
|
||||
<%# Phone Number %>
|
||||
<div class="mb-3">
|
||||
<%= form.label :phone, class: 'form-label' %>
|
||||
<%= form.telephone_field :phone, id: :user_phone, class: 'form-control' %>
|
||||
</div>
|
||||
|
||||
<%# Company %>
|
||||
<div class="mb-3">
|
||||
<%= form.label :company, class: 'form-label' %>
|
||||
<%= form.text_field :company, id: :user_company, class: 'form-control' %>
|
||||
</div>
|
||||
|
||||
<%# Assuming roles are assigned via checkboxes or a select dropdown %>
|
||||
<div class="mb-3">
|
||||
<%= 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' } %>
|
||||
</div>
|
||||
|
||||
<%# Access control fields %>
|
||||
<div class="mb-3">
|
||||
<%= form.check_box :access_revoked, class: 'form-check-input' %>
|
||||
<%= form.label :access_revoked, 'Access Revoked', class: 'form-check-label' %>
|
||||
</div>
|
||||
|
||||
<%# Date fields for access control %>
|
||||
<div class="mb-3">
|
||||
<%= form.label :access_start_date, 'Access Start Date', class: 'form-label' %>
|
||||
<%= form.date_select :access_start_date, class: 'form-control' %>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<%= form.label :access_end_date, 'Access End Date', class: 'form-label' %>
|
||||
<%= form.date_select :access_end_date, class: 'form-control' %>
|
||||
</div>
|
||||
|
||||
<%# Submit button %>
|
||||
<div class="actions">
|
||||
<%= form.submit 'Save', class: 'btn btn-primary' %>
|
||||
</div>
|
||||
|
||||
<% end %>
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue