Implemented reset role functionality [SCI-6261] ()

* Implemented reset role functionality [SCI-6261]

* Linter fixes [SCI-6261]
This commit is contained in:
artoscinote 2021-11-15 11:12:31 +01:00 committed by GitHub
parent a6c61c2b4e
commit 4ce0c53d36
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 66 additions and 8 deletions
app
assets/stylesheets/access_permissions
controllers/access_permissions
models
views/access_permissions
config/locales

View file

@ -43,7 +43,8 @@
margin-left: 1em;
}
a {
a,
.bootstrap-select > .dropdown-toggle.bs-placeholder {
color: $color-volcano;
}

View file

@ -21,7 +21,12 @@ module AccessPermissions
def update
@experiment_member = ExperimentMember.new(current_user, @experiment, @project)
@experiment_member.update(permitted_update_params)
if permitted_update_params[:user_role_id] == 'reset'
@experiment_member.reset(permitted_update_params)
else
@experiment_member.update(permitted_update_params)
end
respond_to do |format|
format.json do

View file

@ -22,7 +22,12 @@ module AccessPermissions
def update
@my_module_member = MyModuleMember.new(current_user, @my_module, @experiment, @project)
@my_module_member.update(permitted_update_params)
if permitted_update_params[:user_role_id] == 'reset'
@my_module_member.reset(permitted_update_params)
else
@my_module_member.update(permitted_update_params)
end
respond_to do |format|
format.json do

View file

@ -36,6 +36,21 @@ class ExperimentMember
)
end
def reset(params)
ActiveRecord::Base.transaction do
prepare_data(params)
@user_role =
@experiment.project
.user_assignments
.find_by(user: user_assignment.user)
.user_role
user_assignment.update!(user_role: @user_role, assigned: :automatically)
log_change_activity
end
end
private
def prepare_data(params)

View file

@ -30,6 +30,21 @@ class MyModuleMember
end
end
def reset(params)
initialize_user_assignment!(params)
ActiveRecord::Base.transaction do
@user_role =
@my_module.experiment
.user_assignments
.find_by(user: user_assignment.user)
.user_role
user_assignment.update!(user_role: @user_role, assigned: :automatically)
log_change_activity
end
end
private
def initialize_user_assignment!(params)

View file

@ -1,6 +1,6 @@
<% # frozen_string_literal: true %>
<div class="modal fade experiment-assignments-modal" tabindex="-1" role="dialog" data-action="modal-close">
<div class="modal fade user-assignments-modal experiment-assignments-modal" tabindex="-1" role="dialog" data-action="modal-close">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content" id="user_assignments_modal">
<div class="modal-header">

View file

@ -1,6 +1,6 @@
<% # frozen_string_literal: true %>
<div class="modal fade my-module-assignments-modal" tabindex="-1" role="dialog">
<div class="modal fade user-assignments-modal my-module-assignments-modal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content" id="user_assignments_modal">
<div class="modal-header">

View file

@ -20,7 +20,12 @@
<% unless user == current_user %>
<div class="user-assignment-controls">
<div class="user-assignment-role">
<%= f.select :user_role_id, options_for_select(user_roles_collection, selected: f.object.user_role.id), {}, class: 'form-control selectpicker', title: t('user_assignment.change_experiment_role'), data: { 'selected-text-format' => 'static' } %>
<%= f.select :user_role_id, nil, {}, id: "experiment_member_#{experiment_member.user.id}_user_role_id", class: 'form-control selectpicker', title: t('user_assignment.change_experiment_role'), data: { 'selected-text-format' => 'static' } do %>
<option data-content="<span title='<%= t('.reset_description') %>'><%= t('.reset') %></span>" value="reset"><%= t('.reset') %></option>
<% user_roles_collection.each do |user_role| %>
<option value="<%= user_role[1] %>"><%= user_role[0] %></option>
<% end %>
<% end %>
</div>
</div>
<% end %>

View file

@ -20,7 +20,12 @@
<% unless user == current_user %>
<div class="user-assignment-controls">
<div class="user-assignment-role">
<%= f.select :user_role_id, options_for_select(user_roles_collection, selected: f.object.user_role.id), {}, class: 'form-control selectpicker', title: t('user_assignment.change_my_module_role'), data: { 'selected-text-format' => 'static' } %>
<%= f.select :user_role_id, nil, {}, id: "my_module_member_#{my_module_member.user.id}_user_role_id", class: 'form-control selectpicker', title: t('user_assignment.change_my_module_role'), data: { 'selected-text-format' => 'static' } do %>
<option data-content="<span title='<%= t('.reset_description') %>'><%= t('.reset') %></span>" value="reset"><%= t('.reset') %></option>
<% user_roles_collection.each do |user_role| %>
<option value="<%= user_role[1] %>"><%= user_role[0] %></option>
<% end %>
<% end %>
</div>
</div>
<% end %>

View file

@ -1,6 +1,6 @@
<% # frozen_string_literal: true %>
<div class="modal fade project-assignments-modal" tabindex="-1" role="dialog" data-action="modal-close">
<div class="modal fade user-assignments-modal project-assignments-modal" tabindex="-1" role="dialog" data-action="modal-close">
<div class="modal-dialog modal-lg" role="document">
<%= render 'access_permissions/partials/edit_assignments_content', project: project, new_resource_path: new_resource_path, update_path: update_path %>
</div>

View file

@ -2529,6 +2529,13 @@ en:
submit_singular: "Grant access to 1 user"
submit_plural: "Grant access to {num} users"
find_people_html: "Find people"
experiment_member_field:
reset: "Inherit role"
reset_description: "The inherited role from project will be applied"
my_module_member_field:
reset: "Inherit role"
reset_description: "The inherited role from project or experiment will be applied"
projects:
modals:
show_modal: