mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-04-01 18:02:27 +08:00
Implemented reset role functionality [SCI-6261] (#3662)
* Implemented reset role functionality [SCI-6261] * Linter fixes [SCI-6261]
This commit is contained in:
parent
a6c61c2b4e
commit
4ce0c53d36
11 changed files with 66 additions and 8 deletions
app
assets/stylesheets/access_permissions
controllers/access_permissions
models
views/access_permissions
experiments/modals
my_modules/modals
partials
projects/modals
config/locales
|
@ -43,7 +43,8 @@
|
|||
margin-left: 1em;
|
||||
}
|
||||
|
||||
a {
|
||||
a,
|
||||
.bootstrap-select > .dropdown-toggle.bs-placeholder {
|
||||
color: $color-volcano;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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 %>
|
||||
|
|
|
@ -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 %>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Add table
Reference in a new issue