Compare commits

...

2 Commits

4 changed files with 27 additions and 8 deletions

View File

@ -12,9 +12,9 @@ class UsersController < ApplicationController
end
def create
@user = User.new(user_params)
@user = User.new(user_params.except(:roles))
if @user.save
assign_roles(@user)
update_user_roles(@user, params[:user][:roles] || ['user'])
redirect_to users_path, notice: 'User was successfully created.'
else
render :new
@ -43,7 +43,12 @@ class UsersController < ApplicationController
end
def user_params
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: [])
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
@ -62,9 +67,10 @@ class UsersController < ApplicationController
def update_user_roles(user, roles_names)
user.roles.delete_all # Remove existing roles
user.roles.delete_all # Remove existing roles if you want to reset roles on update
roles_names = ['user'] if roles_names.blank? # Ensure there's a default role
roles_names.each do |role_name|
user.add_role(role_name) unless role_name.blank?
user.add_role(role_name)
end
end

View File

@ -1,2 +1,6 @@
module UsersHelper
end
def display_user_role(user)
user.roles.first&.name&.capitalize || "None"
end
end

View File

@ -1,4 +1,9 @@
class User < ApplicationRecord
rolify
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable
def active_for_authentication?
super && !access_revoked
end
end

View File

@ -7,16 +7,20 @@
<table class="table">
<thead class="table-light">
<tr>
<th>Name</th>
<th>Email</th>
<th>Admin</th>
<th>Company</th>
<th>Permissions</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<% @users.each do |user| %>
<tr>
<td><%= user.first_name %> <%= user.last_name %></td>
<td><%= user.email %></td>
<td><%= user.has_role?(:admin) ? 'Yes' : 'No' %></td> <!-- Assuming you're using Rolify for role management -->
<td><%= user.company %></td>
<td><%= display_user_role(user) %></td>
<td>
<%= link_to edit_user_path(user), class: 'btn btn-info btn-sm' do %>
<i class="bi bi-pencil-fill" style="color: white;"></i>