diff --git a/app/controllers/projects/accesses_controller.rb b/app/controllers/projects/accesses_controller.rb new file mode 100644 index 000000000..fed94ea59 --- /dev/null +++ b/app/controllers/projects/accesses_controller.rb @@ -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 diff --git a/app/controllers/projects/users_controller.rb b/app/controllers/projects/users_controller.rb deleted file mode 100644 index 1eff78578..000000000 --- a/app/controllers/projects/users_controller.rb +++ /dev/null @@ -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 diff --git a/app/models/user.rb b/app/models/user.rb index bb9126890..1f3373fae 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -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 diff --git a/app/views/projects/accesses/edit.html.erb b/app/views/projects/accesses/edit.html.erb new file mode 100644 index 000000000..885f662e6 --- /dev/null +++ b/app/views/projects/accesses/edit.html.erb @@ -0,0 +1,14 @@ +