@@ -35,14 +35,22 @@ def user_with_roles_abilities
3535 return if user . roles . empty?
3636
3737 can :read , :pages_data
38- organization_ability_restrictions
38+
39+ # record/download access for unrestricted organizations
40+ can :read , ActiveStorage ::Attachment , { record : { organization : { restrict_downloads : false } } }
41+ can :read , MarcRecord , upload : { organization : { restrict_downloads : false } }
42+ can :read , Stream , organization : { restrict_downloads : false }
43+ can :read , Upload , organization : { restrict_downloads : false }
44+
45+ # record/download access for restricted organizations where access has been granted
46+ can :read , ActiveStorage ::Attachment , { record : { organization : { id : permitted_organization_ids } } }
47+ can :read , MarcRecord , upload : { organization : { id : permitted_organization_ids } }
48+ can :read , Stream , organization : { id : permitted_organization_ids }
49+ can :read , Upload , organization : { id : permitted_organization_ids }
3950 end
4051
41- def organization_ability_restrictions ( restrictions = { restrict_downloads : false } )
42- can :read , ActiveStorage ::Attachment , { record : { organization : restrictions } }
43- can :read , MarcRecord , upload : { organization : restrictions }
44- can :read , Stream , organization : restrictions
45- can :read , Upload , organization : restrictions
52+ def permitted_organization_ids
53+ @permitted_organization_ids ||= user . organizations . flat_map ( &:effective_downloadable_organizations ) . pluck ( :id ) . uniq
4654 end
4755
4856 def site_admin_user_abilities
@@ -75,7 +83,11 @@ def organization_member_abilities
7583
7684 can %i[ create ] , [ Upload ] , organization : { id : member_organization_ids }
7785 can :read , AllowlistedJwt , resource_type : 'Organization' , resource_id : member_organization_ids
78- organization_ability_restrictions ( { id : member_organization_ids } )
86+ # record/download access for organizations where the user is a member
87+ can :read , ActiveStorage ::Attachment , { record : { organization : { id : member_organization_ids } } }
88+ can :read , MarcRecord , upload : { organization : { id : member_organization_ids } }
89+ can :read , Stream , organization : { id : member_organization_ids }
90+ can :read , Upload , organization : { id : member_organization_ids }
7991 end
8092
8193 def member_organization_ids
0 commit comments