Browse Source
prevent managers from creating collections (#6890 )
managers without the access_all flag should not be able to create
collections. the manage all collections permission actually consists of
three separate custom permissions that have not been implemented yet for
more fine-grain access control.
pull/7065/head
Stefan Melmuk
1 week ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with
6 additions and
5 deletions
src/api/core/organizations.rs
src/db/models/organization.rs
@ -500,6 +500,10 @@ async fn post_organization_collections(
let data : FullCollectionData = data . into_inner ( ) ;
data . validate ( & org_id , & conn ) . await ? ;
if headers . membership . atype = = MembershipType ::Manager & & ! headers . membership . access_all {
err ! ( "You don't have permission to create collections" )
}
let collection = Collection ::new ( org_id . clone ( ) , data . name , data . external_id ) ;
collection . save ( & conn ) . await ? ;
@ -540,10 +544,6 @@ async fn post_organization_collections(
. await ? ;
}
if headers . membership . atype = = MembershipType ::Manager & & ! headers . membership . access_all {
CollectionUser ::save ( & headers . membership . user_uuid , & collection . uuid , false , false , false , & conn ) . await ? ;
}
Ok ( Json ( collection . to_json_details ( & headers . membership . user_uuid , None , & conn ) . await ) )
}
@ -514,7 +514,8 @@ impl Membership {
"familySponsorshipValidUntil" : null ,
"familySponsorshipToDelete" : null ,
"accessSecretsManager" : false ,
"limitCollectionCreation" : self . atype < MembershipType ::Manager , // If less then a manager return true, to limit collection creations
// limit collection creation to managers with access_all permission to prevent issues
"limitCollectionCreation" : self . atype < MembershipType ::Manager | | ! self . access_all ,
"limitCollectionDeletion" : true ,
"limitItemDeletion" : false ,
"allowAdminAccessToAllCollectionItems" : true ,