update permissions relationships calls to use from/to
This commit is contained in:
@@ -19,7 +19,7 @@ func (s *service) buildOrganizationRelationships(org *models.OrganizationDetails
|
||||
Relation: RelateParent,
|
||||
Resource: s.rootResource,
|
||||
},
|
||||
SubjectType: TypeProject,
|
||||
SubjectRelation: RelateParent,
|
||||
}
|
||||
|
||||
for _, member := range org.Memberships {
|
||||
|
||||
@@ -17,10 +17,10 @@ func (s *service) processRelationships(ctx context.Context, eventType string, re
|
||||
|
||||
wantParentRelationship, wantSubjectRelationships := s.mapRelationWants(relationships)
|
||||
|
||||
liveParentRelationships, liveSubjectRelationships, err := s.getRelationshipMap(ctx, relationships.Resource, relationships.SubjectType)
|
||||
liveParentRelationships, liveSubjectRelationships, err := s.getRelationshipMap(ctx, relationships.Resource, relationships.SubjectRelation)
|
||||
if err != nil {
|
||||
rlogger.Errorw("failed to get relationship map",
|
||||
"relationships.subject_type", relationships.SubjectType,
|
||||
"relationships.subject_relation", relationships.SubjectRelation,
|
||||
"error", err,
|
||||
)
|
||||
|
||||
@@ -177,16 +177,16 @@ func (s *service) mapRelationWants(relationships Relationships) (*Relation, map[
|
||||
// getRelationshipMap fetches the provided resources relationships, as the source resource and the destination subject.
|
||||
// Returned are two maps, the first maps Subject IDs -> Relationship
|
||||
// The second map, maps Resource IDs -> relationship
|
||||
func (s *service) getRelationshipMap(ctx context.Context, resource IDPrefixableResource, relatedObjectType ObjectType) (map[gidx.PrefixedID]RelationshipType, map[gidx.PrefixedID]RelationshipType, error) {
|
||||
liveResource, err := s.perms.ListResourceRelationships(ctx, resource.PrefixedID(), "")
|
||||
func (s *service) getRelationshipMap(ctx context.Context, resource IDPrefixableResource, relation RelationshipType) (map[gidx.PrefixedID]RelationshipType, map[gidx.PrefixedID]RelationshipType, error) {
|
||||
liveResource, err := s.perms.ListResourceRelationshipsFrom(ctx, resource.PrefixedID())
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var liveSubject []permissions.ResourceRelationship
|
||||
|
||||
if relatedObjectType != "" {
|
||||
liveSubject, err = s.perms.ListResourceRelationships(ctx, resource.PrefixedID(), relatedObjectType.Prefix())
|
||||
if relation != "" {
|
||||
liveSubject, err = s.perms.ListResourceRelationshipsTo(ctx, resource.PrefixedID())
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
@@ -205,6 +205,10 @@ func (s *service) getRelationshipMap(ctx context.Context, resource IDPrefixableR
|
||||
subject := make(map[gidx.PrefixedID]RelationshipType, len(liveSubject))
|
||||
|
||||
for _, relationship := range liveSubject {
|
||||
if relationship.Relation != string(relation) {
|
||||
continue
|
||||
}
|
||||
|
||||
subject[relationship.ResourceID] = RelationshipType(relationship.Relation)
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ type IDPrefixableResource interface {
|
||||
type Relationships struct {
|
||||
Resource IDPrefixableResource
|
||||
Parent Relation
|
||||
SubjectType ObjectType
|
||||
SubjectRelation RelationshipType
|
||||
SubjectRelationships []Relation
|
||||
Memberships []ResourceMemberships
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user