diff --git a/app/controllers/access_permissions/projects_controller.rb b/app/controllers/access_permissions/projects_controller.rb index 92b5d518b..bc2dfaf61 100644 --- a/app/controllers/access_permissions/projects_controller.rb +++ b/app/controllers/access_permissions/projects_controller.rb @@ -47,7 +47,8 @@ module AccessPermissions @user_assignment.update!(permitted_update_params) - log_activity(:change_user_role_on_project, @user_assignment) + log_activity(:change_user_role_on_project, { user_target: @user_assignment.user.id, + role: @user_assignment.user_role.name }) propagate_job(@user_assignment) respond_to do |format| @@ -67,16 +68,7 @@ module AccessPermissions if user_assignment_params[:user_id] == 'all' @project.update!(visibility: :visible, default_public_user_role_id: user_assignment_params[:user_role_id]) - Activities::CreateActivityService - .call(activity_type: :change_project_visibility, - owner: current_user, - subject: @project, - team: @project.team, - project: @project, - message_items: { - project: @project.id, - visibility: t('projects.activity.visibility_visible') - }) + log_activity(:change_project_visibility, { visibility: t('projects.activity.visibility_visible') }) else user_assignment = UserAssignment.find_or_initialize_by( @@ -91,7 +83,8 @@ module AccessPermissions assigned: :manually ) - log_activity(:assign_user_to_project, user_assignment) + log_activity(:assign_user_to_project, { user_target: user_assignment.user.id, + role: user_assignment.user_role.name }) created_count += 1 propagate_job(user_assignment) end @@ -126,7 +119,8 @@ module AccessPermissions end propagate_job(user_assignment, destroy: true) - log_activity(:unassign_user_from_project, user_assignment) + log_activity(:unassign_user_from_project, { user_target: user_assignment.user.id, + role: user_assignment.user_role.name }) render json: { flash: t('access_permissions.destroy.success', member_name: escape_input(user.full_name)) }, status: :ok @@ -141,6 +135,13 @@ module AccessPermissions @project.assign_attributes(permitted_default_public_user_role_params) @project.save! + if permitted_default_public_user_role_params[:default_public_user_role_id].blank? + log_activity(:change_project_visibility, { visibility: t('projects.activity.visibility_hidden') }) + else + log_activity(:project_access_changed_all_team_members, + { team: @project.team.id, role: @project.default_public_user_role&.name }) + end + UserAssignments::ProjectGroupAssignmentJob.perform_later(current_team, @project, current_user) end end @@ -194,16 +195,16 @@ module AccessPermissions ) end - def log_activity(type_of, user_assignment) + def log_activity(type_of, message_items = {}) + message_items = { project: @project.id }.merge(message_items) + Activities::CreateActivityService .call(activity_type: type_of, owner: current_user, subject: @project, team: @project.team, project: @project, - message_items: { project: @project.id, - user_target: user_assignment.user.id, - role: user_assignment.user_role.name }) + message_items: message_items) end end end diff --git a/app/controllers/access_permissions/protocols_controller.rb b/app/controllers/access_permissions/protocols_controller.rb index 96e27ab38..6365f6c00 100644 --- a/app/controllers/access_permissions/protocols_controller.rb +++ b/app/controllers/access_permissions/protocols_controller.rb @@ -44,7 +44,8 @@ module AccessPermissions end @user_assignment.update!(permitted_update_params) - log_activity(:protocol_template_access_changed, @user_assignment) + log_activity(:protocol_template_access_changed, { user_target: @user_assignment.user.id, + role: @user_assignment.user_role.name }) respond_to do |format| format.json do @@ -63,6 +64,8 @@ module AccessPermissions if user_assignment_params[:user_id] == 'all' @protocol.update!(default_public_user_role_id: user_assignment_params[:user_role_id]) + log_activity(:protocol_template_access_granted_all_team_members, + { team: @protocol.team.id, role: @protocol.default_public_user_role&.name }) else user_assignment = UserAssignment.find_or_initialize_by( assignable: @protocol, @@ -77,7 +80,8 @@ module AccessPermissions ) created_count += 1 - log_activity(:protocol_template_access_granted, user_assignment) + log_activity(:protocol_template_access_granted, { user_target: user_assignment.user.id, + role: user_assignment.user_role.name }) end end @@ -110,7 +114,8 @@ module AccessPermissions else user_assignment.destroy! end - log_activity(:protocol_template_access_revoked, user_assignment) + log_activity(:protocol_template_access_revoked, { user_target: user_assignment.user.id, + role: user_assignment.user_role.name }) end render json: { flash: t('access_permissions.destroy.success', member_name: user.full_name) } @@ -121,7 +126,15 @@ module AccessPermissions end def update_default_public_user_role + current_role = @protocol.default_public_user_role.name @protocol.update!(permitted_default_public_user_role_params) + type_of = if @protocol.default_public_user_role.present? + :protocol_template_access_changed_all_team_members + else + :protocol_template_access_revoked_all_team_members + end + + log_activity(type_of, { team: @protocol.team.id, role: @protocol.default_public_user_role&.name || current_role }) end private @@ -156,16 +169,16 @@ module AccessPermissions render_403 unless can_read_protocol_in_repository?(@protocol) end - def log_activity(type_of, user_assignment) + def log_activity(type_of, message_items = {}) + message_items = { protocol: @protocol.id }.merge(message_items) + Activities::CreateActivityService .call(activity_type: type_of, owner: current_user, subject: @protocol, team: @protocol.team, project: nil, - message_items: { protocol: @protocol.id, - user_target: user_assignment.user.id, - role: user_assignment.user_role.name }) + message_items: message_items) end end end diff --git a/config/initializers/extends.rb b/config/initializers/extends.rb index 9fe1a9b15..27b9fcc1c 100644 --- a/config/initializers/extends.rb +++ b/config/initializers/extends.rb @@ -437,11 +437,15 @@ class Extends protocol_template_access_changed: 234, protocol_template_access_revoked: 235, task_protocol_save_to_template: 236, - protocol_template_draft_created: 237 + protocol_template_draft_created: 237, + protocol_template_access_granted_all_team_members: 238, + protocol_template_access_changed_all_team_members: 239, + protocol_template_access_revoked_all_team_members: 240, + project_access_changed_all_team_members: 241 } ACTIVITY_GROUPS = { - projects: [*0..7, 32, 33, 34, 95, 108, 65, 109, *158..162], + projects: [*0..7, 32, 33, 34, 95, 108, 65, 109, *158..162, 241], task_results: [23, 26, 25, 42, 24, 40, 41, 99, 110, 122, 116, 128, 169, 172, 178], task: [8, 58, 9, 59, *10..14, 35, 36, 37, 53, 54, *60..63, 138, 139, 140, 64, 66, 106, 126, 120, 132, *146..148, 166], @@ -454,7 +458,7 @@ class Extends 78, 96, 107, 113, 114, *133..136, 180, 181, 182], protocol_repository: [80, 103, 89, 87, 79, 90, 91, 88, 85, 86, 84, 81, 82, 83, 101, 112, 123, 125, 117, 119, 129, 131, 170, 173, 179, 187, 186, - 190, 191, *204..215, 220, 221, 223, 227, 228, 229, *230..235, 237], + 190, 191, *204..215, 220, 221, 223, 227, 228, 229, *230..235, *237..240], team: [92, 94, 93, 97, 104], label_repository: [*216..219] } diff --git a/config/locales/global_activities/en.yml b/config/locales/global_activities/en.yml index 253bb6f5f..cc3ba3fbb 100644 --- a/config/locales/global_activities/en.yml +++ b/config/locales/global_activities/en.yml @@ -261,7 +261,11 @@ en: protocol_template_access_granted_html: "%{user} granted with access %{user_target} with user role %{role} to protocol template %{protocol}." protocol_template_access_changed_html: "%{user} changed %{user_target}’s role on protocol template %{protocol} to %{role}." protocol_template_access_revoked_html: "%{user} removed %{user_target} with user role %{role} from protocol template %{protocol}." + protocol_template_access_granted_all_team_members_html: "%{user} granted with access all team members of %{team} team with user role %{role} to protocol template %{protocol}." + protocol_template_access_changed_all_team_members_html: "%{user} changed %{team}’s role on protocol template %{protocol} to %{role}." + protocol_template_access_revoked_all_team_members_html: "%{user} removed %{team} team members with user role %{role} from protocol template %{protocol}." task_protocol_save_to_template_html: "%{user} created a new protocol template %{protocol} from a task." + project_access_changed_all_team_members_html: "%{user} changed %{team}’s role on project %{project} to %{role}." activity_name: create_project: "Project created" rename_project: "Project renamed" @@ -478,6 +482,10 @@ en: protocol_template_access_changed: "User role changed on a protocol" protocol_template_access_revoked: "User removed from a protocol" task_protocol_save_to_template: "Save as new protocol template" + protocol_template_access_granted_all_team_members: "Grant access to all team members" + protocol_template_access_changed_all_team_members: "Change role of all team members" + protocol_template_access_revoked_all_team_members: "Remove access from all team members" + project_access_changed_all_team_members: "Change role of all team members" activity_group: projects: "Projects" task_results: "Task results"