Use checkboxes to toggle accesses in bulk
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
class Projects::AccessesController < ApplicationController
|
||||
include ProjectScoped
|
||||
|
||||
def edit
|
||||
@users = @project.users
|
||||
end
|
||||
|
||||
def update
|
||||
update_access
|
||||
redirect_to project_access_url(@project)
|
||||
end
|
||||
|
||||
private
|
||||
def update_access
|
||||
users = Current.account.users.active.find([ Current.user.id, *params[:user_ids] ])
|
||||
users.each { |user| @project.accesses.create_or_find_by!(user: user) }
|
||||
@project.accesses.where.not(user: users).destroy_all
|
||||
end
|
||||
end
|
||||
@@ -1,24 +0,0 @@
|
||||
class Projects::UsersController < ApplicationController
|
||||
include ProjectScoped
|
||||
|
||||
before_action :set_user, except: %i[ index ]
|
||||
|
||||
def index
|
||||
@users = @project.users
|
||||
end
|
||||
|
||||
def create
|
||||
@project.accesses.create_or_find_by!(user: @user)
|
||||
redirect_to project_users_url(@project)
|
||||
end
|
||||
|
||||
def destroy
|
||||
@project.accesses.destroy_by(user: @user)
|
||||
redirect_to project_users_url(@project)
|
||||
end
|
||||
|
||||
private
|
||||
def set_user
|
||||
@user = Current.account.users.find(params[:id])
|
||||
end
|
||||
end
|
||||
@@ -13,6 +13,8 @@ class User < ApplicationRecord
|
||||
|
||||
normalizes :email_address, with: ->(value) { value.strip.downcase }
|
||||
|
||||
scope :active, -> { where(active: true) }
|
||||
|
||||
def initials
|
||||
name.scan(/\b\w/).join
|
||||
end
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
<h1>Users on <%= @project.name %></h1>
|
||||
|
||||
<%= form_with url: project_access_path, method: :put do |form| %>
|
||||
<ul>
|
||||
<% Current.account.users.active.each do |user| %>
|
||||
<li>
|
||||
<%= check_box_tag "user_ids[]", user.id, @project.users.include?(user), id: nil, disabled: user == Current.user %>
|
||||
<%= user.name %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
|
||||
<%= form.submit %>
|
||||
<% end %>
|
||||
@@ -1,7 +0,0 @@
|
||||
<h1>Users on <%= @project.name %></h1>
|
||||
|
||||
<ul>
|
||||
<% @users.each do |user| %>
|
||||
<li><%= user.name %> <%= link_to "X", project_user_path(@project, user), data: { turbo_method: :delete } %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
+1
-1
@@ -4,7 +4,7 @@ Rails.application.routes.draw do
|
||||
resource :session
|
||||
|
||||
resources :projects do
|
||||
resources :users, controller: "projects/users"
|
||||
resource :access, controller: "projects/accesses"
|
||||
end
|
||||
|
||||
resources :bubbles do
|
||||
|
||||
Reference in New Issue
Block a user