Skip to content

Commit bb700c5

Browse files
dhernandez-quoinpnabutovsky
authored andcommitted
Merged in r2-3062-shared-with-others-clickthrough (pull request #6997)
R2-3062 R2-3103 - Fix inaccurate click-throughs
2 parents fe5c52e + 83f4cd6 commit bb700c5

File tree

2 files changed

+75
-1
lines changed

2 files changed

+75
-1
lines changed

app/services/permitted_field_service.rb

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ class PermittedFieldService
4747
consent_for_services disclosure_other_orgs
4848
].freeze
4949

50+
PERMITTED_DASHBOARD_FILTERS = {
51+
Permission::DASH_CASE_RISK => %w[risk_level],
52+
Permission::DASH_SHARED_WITH_OTHERS => %w[transfer_status],
53+
Permission::DASH_SHARED_FROM_MY_TEAM => %w[transfer_status]
54+
}.freeze
55+
5056
PERMITTED_FIELDS_FOR_ACTION_SCHEMA = {
5157
Permission::CLOSE => { 'status' => { 'type' => 'string' }, 'date_closure' => { 'type' => 'date' } },
5258
Permission::REOPEN => {
@@ -116,7 +122,7 @@ def permitted_field_names(module_unique_id = nil, writeable = false, update = fa
116122
@permitted_field_names += permitted_overdue_task_field_names
117123
@permitted_field_names += PERMITTED_RECORD_INFORMATION_FIELDS if user.can?(:read, model_class)
118124
@permitted_field_names += ID_SEARCH_FIELDS if id_search.present?
119-
@permitted_field_names << 'risk_level' if user.can?(:case_risk, Dashboard)
125+
@permitted_field_names += permitted_dashboard_filter_field_names
120126
@permitted_field_names += permitted_reporting_location_field if model_class == Child
121127
@permitted_field_names += permitted_incident_reporting_location_field if model_class == Incident
122128
@permitted_field_names += permitted_registry_record_id
@@ -248,5 +254,13 @@ def permitted_attachment_fields
248254

249255
attachment_field_names
250256
end
257+
258+
def permitted_dashboard_filter_field_names
259+
PERMITTED_DASHBOARD_FILTERS.reduce([]) do |memo, (dashboard, field_names)|
260+
next memo unless user.can?(dashboard.to_sym, Dashboard)
261+
262+
memo + field_names
263+
end
264+
end
251265
end
252266
# rubocop:enable Metrics/ClassLength

spec/services/permitted_field_service_spec.rb

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,28 @@
7878
)
7979
end
8080

81+
let(:shared_with_other_dashboard_role) do
82+
Role.new_with_properties(
83+
name: 'Test Role 2',
84+
unique_id: 'test-role-2',
85+
group_permission: Permission::SELF,
86+
permissions: [
87+
Permission.new(resource: Permission::DASHBOARD, actions: [Permission::DASH_SHARED_WITH_OTHERS])
88+
]
89+
)
90+
end
91+
92+
let(:shared_from_my_team_dashboard_role) do
93+
Role.new_with_properties(
94+
name: 'Test Role 3',
95+
unique_id: 'test-role-3',
96+
group_permission: Permission::SELF,
97+
permissions: [
98+
Permission.new(resource: Permission::DASHBOARD, actions: [Permission::DASH_SHARED_FROM_MY_TEAM])
99+
]
100+
)
101+
end
102+
81103
let(:agency) do
82104
Agency.create!(
83105
name: 'Test Agency',
@@ -138,6 +160,32 @@
138160
)
139161
end
140162

163+
let(:user_with_shared_with_others) do
164+
User.create!(
165+
full_name: 'User With Shared With Others',
166+
user_name: 'user_with_shared_with_others',
167+
password: 'a12345632',
168+
password_confirmation: 'a12345632',
169+
170+
agency_id: agency.id,
171+
role: shared_with_other_dashboard_role,
172+
services: ['Test type']
173+
)
174+
end
175+
176+
let(:user_with_shared_from_my_team) do
177+
User.create!(
178+
full_name: 'User With Shared From My Team',
179+
user_name: 'user_with_shared_from_my_team',
180+
password: 'a12345632',
181+
password_confirmation: 'a12345632',
182+
183+
agency_id: agency.id,
184+
role: shared_from_my_team_dashboard_role,
185+
services: ['Test type']
186+
)
187+
end
188+
141189
let(:system_settings) do
142190
SystemSettings.create(
143191
default_locale: 'en',
@@ -254,6 +302,18 @@
254302
expect(permitted_field_names).to include('risk_level')
255303
end
256304

305+
it 'returns the transfer_status field permitted for a role with a shared_with_other permission in dashboard' do
306+
permitted_field_names = PermittedFieldService.new(user_with_shared_with_others, Child).permitted_field_names
307+
308+
expect(permitted_field_names).to include('transfer_status')
309+
end
310+
311+
it 'returns the transfer_status field permitted for a role with a shared_from_my_team permission in dashboard' do
312+
permitted_field_names = PermittedFieldService.new(user_with_shared_from_my_team, Child).permitted_field_names
313+
314+
expect(permitted_field_names).to include('transfer_status')
315+
end
316+
257317
describe 'MRM - Vioaltions forms and fields' do
258318
let(:mrm_form) do
259319
FormSection.create!(unique_id: 'A', name: 'A', parent_form: 'incident', form_group_id: 'm', fields: [mrm_field])

0 commit comments

Comments
 (0)