From 966b92e8d2af35a261f10aa158c680c3fb563de5 Mon Sep 17 00:00:00 2001 From: Soufiane Date: Fri, 16 Jun 2023 13:08:02 +0200 Subject: [PATCH] Activities update for grant project access to all team members [SCI-8383] (#5598) * Create new activities for granting/revoking access to all team members on projects [SCI-8383] --- .../access_permissions/projects_controller.rb | 12 ++++++-- app/controllers/projects_controller.rb | 28 ++++++++++++++----- config/initializers/extends.rb | 6 ++-- config/locales/global_activities/en.yml | 4 +++ 4 files changed, 39 insertions(+), 11 deletions(-) diff --git a/app/controllers/access_permissions/projects_controller.rb b/app/controllers/access_permissions/projects_controller.rb index 124b1fd45..81d44a672 100644 --- a/app/controllers/access_permissions/projects_controller.rb +++ b/app/controllers/access_permissions/projects_controller.rb @@ -68,7 +68,10 @@ module AccessPermissions if user_assignment_params[:user_id] == 'all' @project.update!(visibility: :visible, default_public_user_role_id: user_assignment_params[:user_role_id]) - log_activity(:change_project_visibility, { visibility: t('projects.activity.visibility_visible') }) + log_activity(:project_grant_access_to_all_team_members, + { visibility: t('projects.activity.visibility_visible'), + role: @project.default_public_user_role.name, + team: @project.team.id }) else user_assignment = UserAssignment.find_or_initialize_by( assignable: @project, @@ -141,8 +144,13 @@ module AccessPermissions if permitted_default_public_user_role_params[:default_public_user_role_id].blank? # revoke all team members access @project.visibility = :hidden + previous_user_role_name = @project.default_public_user_role.name + @project.default_public_user_role_id = nil @project.save! - log_activity(:change_project_visibility, { visibility: t('projects.activity.visibility_hidden') }) + log_activity(:project_remove_access_from_all_team_members, + { visibility: t('projects.activity.visibility_hidden'), + role: previous_user_role_name, + team: @project.team.id }) render json: { flash: t('access_permissions.update.revoke_all_team_members') } else # update all team members access diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index c64511770..040f0ad0d 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -184,7 +184,7 @@ class ProjectsController < ApplicationController end message_renamed = @project.name_changed? - message_visibility = if @project.visibility_changed? + message_visibility = if !@project.visibility_changed? nil elsif @project.visible? t('projects.activity.visibility_visible') @@ -200,24 +200,38 @@ class ProjectsController < ApplicationController 'restore' end - default_public_user_name = nil - if @project.visibility_changed? && @project.default_public_user_role_id_changed? - default_public_user_name = UserRole.find(project_params[:default_public_user_role_id])&.name + default_public_user_role_name = nil + if !@project.visibility_changed? && @project.default_public_user_role_id_changed? + default_public_user_role_name = UserRole.find(project_params[:default_public_user_role_id]).name end @project.last_modified_by = current_user if !return_error && @project.save # Add activities if needed - log_activity(:change_project_visibility, @project, visibility: message_visibility) if message_visibility.present? + if message_visibility.present? && @project.visible? + log_activity(:project_grant_access_to_all_team_members, + @project, + { visibility: message_visibility, + role: @project.default_public_user_role.name, + team: @project.team.id }) + end + if message_visibility.present? && !@project.visible? + log_activity(:project_remove_access_from_all_team_members, + @project, + { visibility: message_visibility, + role: @project.default_public_user_role.name, + team: @project.team.id }) + end + log_activity(:rename_project) if message_renamed.present? log_activity(:archive_project) if message_archived == 'archive' log_activity(:restore_project) if message_archived == 'restore' - if default_public_user_name.present? + if default_public_user_role_name.present? log_activity(:project_access_changed_all_team_members, @project, - { team: @project.team.id, role: default_public_user_name }) + { team: @project.team.id, role: default_public_user_role_name }) end flash_success = t('projects.update.success_flash', name: escape_input(@project.name)) diff --git a/config/initializers/extends.rb b/config/initializers/extends.rb index 35d04ba32..0961ada8e 100644 --- a/config/initializers/extends.rb +++ b/config/initializers/extends.rb @@ -441,11 +441,13 @@ class Extends 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 + project_access_changed_all_team_members: 241, + project_grant_access_to_all_team_members: 242, + project_remove_access_from_all_team_members: 243 } ACTIVITY_GROUPS = { - projects: [*0..7, 32, 33, 34, 95, 108, 65, 109, *158..162, 241], + projects: [*0..7, 32, 33, 34, 95, 108, 65, 109, *158..162, 241, 242, 243], 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], diff --git a/config/locales/global_activities/en.yml b/config/locales/global_activities/en.yml index 022374de4..1c134f943 100644 --- a/config/locales/global_activities/en.yml +++ b/config/locales/global_activities/en.yml @@ -47,6 +47,8 @@ en: create_project_html: "%{user} created project %{project}." rename_project_html: "%{user} renamed project %{project}." change_project_visibility_html: "%{user} changed project %{project}'s visibility to %{visibility}." + project_grant_access_to_all_team_members_html: "%{user} granted access to all team members of %{team} team with user role %{role} to project %{project}." + project_remove_access_from_all_team_members_html: "%{user} removed %{team} team members with user role %{role} from project %{project}." archive_project_html: "%{user} archived project %{project}." restore_project_html: "%{user} restored project %{project} from archive." add_comment_to_project_html: "%{user} commented on project %{project}." @@ -270,6 +272,8 @@ en: create_project: "Project created" rename_project: "Project renamed" change_project_visibility: "Project visibility changed" + project_grant_access_to_all_team_members: "Grant access to all team members" + project_remove_access_from_all_team_members: "Remove access from all team members" archive_project: "Project archived" restore_project: "Project restored" add_comment_to_project: "Project comment added"