@@ -45,7 +45,7 @@ type ProjectsRepo interface {
4545 // UpdateMemberRoleInProject updates the role of a user or group in a project.
4646 UpdateMemberRoleInProject (ctx context.Context , orgID uuid.UUID , projectID uuid.UUID , memberID uuid.UUID , membershipType authz.MembershipType , newRole authz.Role ) (* ProjectMembership , error )
4747 // FindProjectMembershipByProjectAndID finds a project membership by project ID and member ID (user or group).
48- FindProjectMembershipByProjectAndID (ctx context.Context , projectID uuid.UUID , memberID uuid.UUID , membershipType authz.MembershipType ) (* ProjectMembership , error )
48+ FindProjectMembershipByProjectAndID (ctx context.Context , orgID uuid. UUID , projectID uuid.UUID , memberID uuid.UUID , membershipType authz.MembershipType ) (* ProjectMembership , error )
4949}
5050
5151// ProjectUseCase is a use case for projects
@@ -252,7 +252,7 @@ func (uc *ProjectUseCase) addUserToProject(ctx context.Context, orgID uuid.UUID,
252252 userUUID := uuid .MustParse (userMembership .User .ID )
253253
254254 // Check if the user is already a member of the project
255- existingMembership , err := uc .projectsRepository .FindProjectMembershipByProjectAndID (ctx , projectID , userUUID , authz .MembershipTypeUser )
255+ existingMembership , err := uc .projectsRepository .FindProjectMembershipByProjectAndID (ctx , orgID , projectID , userUUID , authz .MembershipTypeUser )
256256 if err != nil && ! IsNotFound (err ) {
257257 return nil , fmt .Errorf ("failed to check existing membership: %w" , err )
258258 }
@@ -289,7 +289,7 @@ func (uc *ProjectUseCase) addGroupToProject(ctx context.Context, orgID uuid.UUID
289289 }
290290
291291 // Check if the group already has membership in the project
292- existingMembership , err := uc .projectsRepository .FindProjectMembershipByProjectAndID (ctx , projectID , resolvedGroupID , authz .MembershipTypeGroup )
292+ existingMembership , err := uc .projectsRepository .FindProjectMembershipByProjectAndID (ctx , orgID , projectID , resolvedGroupID , authz .MembershipTypeGroup )
293293 if err != nil && ! IsNotFound (err ) {
294294 return nil , fmt .Errorf ("failed to check existing group membership: %w" , err )
295295 }
@@ -371,7 +371,7 @@ func (uc *ProjectUseCase) removeUserFromProject(ctx context.Context, orgID uuid.
371371 userUUID := uuid .MustParse (userMembership .User .ID )
372372
373373 // Check if the user is a member of the project
374- existingMembership , err := uc .projectsRepository .FindProjectMembershipByProjectAndID (ctx , projectID , userUUID , authz .MembershipTypeUser )
374+ existingMembership , err := uc .projectsRepository .FindProjectMembershipByProjectAndID (ctx , orgID , projectID , userUUID , authz .MembershipTypeUser )
375375 if err != nil && ! IsNotFound (err ) {
376376 return fmt .Errorf ("failed to check existing membership: %w" , err )
377377 }
@@ -406,7 +406,7 @@ func (uc *ProjectUseCase) removeGroupFromProject(ctx context.Context, orgID uuid
406406 }
407407
408408 // Check if the group has membership in the project
409- existingMembership , err := uc .projectsRepository .FindProjectMembershipByProjectAndID (ctx , projectID , resolvedGroupID , authz .MembershipTypeGroup )
409+ existingMembership , err := uc .projectsRepository .FindProjectMembershipByProjectAndID (ctx , orgID , projectID , resolvedGroupID , authz .MembershipTypeGroup )
410410 if err != nil && ! IsNotFound (err ) {
411411 return fmt .Errorf ("failed to check existing group membership: %w" , err )
412412 }
@@ -526,7 +526,8 @@ func (uc *ProjectUseCase) verifyRequesterHasPermissions(ctx context.Context, org
526526 for _ , m := range requesterMemberships {
527527 if m .ResourceType == authz .ResourceTypeProject &&
528528 m .ResourceID == projectID &&
529- m .Role == authz .RoleProjectAdmin {
529+ m .Role == authz .RoleProjectAdmin &&
530+ m .OrganizationID == orgID {
530531 hasProjectAdminRole = true
531532 break
532533 }
@@ -610,7 +611,7 @@ func (uc *ProjectUseCase) updateUserRoleInProject(ctx context.Context, orgID uui
610611 userUUID := uuid .MustParse (userMembership .User .ID )
611612
612613 // Check if the user is a member of the project
613- existingMembership , err := uc .projectsRepository .FindProjectMembershipByProjectAndID (ctx , projectID , userUUID , authz .MembershipTypeUser )
614+ existingMembership , err := uc .projectsRepository .FindProjectMembershipByProjectAndID (ctx , orgID , projectID , userUUID , authz .MembershipTypeUser )
614615 if err != nil && ! IsNotFound (err ) {
615616 return fmt .Errorf ("failed to check existing membership: %w" , err )
616617 }
@@ -652,7 +653,7 @@ func (uc *ProjectUseCase) updateGroupRoleInProject(ctx context.Context, orgID uu
652653 }
653654
654655 // Check if the group has membership in the project
655- existingMembership , err := uc .projectsRepository .FindProjectMembershipByProjectAndID (ctx , projectID , resolvedGroupID , authz .MembershipTypeGroup )
656+ existingMembership , err := uc .projectsRepository .FindProjectMembershipByProjectAndID (ctx , orgID , projectID , resolvedGroupID , authz .MembershipTypeGroup )
656657 if err != nil && ! IsNotFound (err ) {
657658 return fmt .Errorf ("failed to check existing group membership: %w" , err )
658659 }
0 commit comments