Skip to content

Commit 7c15f80

Browse files
authored
Merge pull request #48 from passbolt/v5-resource-share
Implement sharing for metadata
2 parents 19bc97c + c7568ee commit 7c15f80

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

helper/share.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,33 @@ func ShareResource(ctx context.Context, c *api.Client, resourceID string, change
7979
return fmt.Errorf("Validating Secret Data: %w", err)
8080
}
8181

82+
// if Metadata has not been shared yet then we need to do that
83+
// we assume that if MetadataKeyType is not null that this is a v5 Resource and that the other field are fine
84+
if resource.MetadataKeyType == api.MetadataKeyTypeUserKey {
85+
metadata, err := GetResourceMetadata(ctx, c, resource, rType)
86+
if err != nil {
87+
return fmt.Errorf("Get Metadata: %w", err)
88+
}
89+
90+
metadataKeyID, metadataKeyType, publicMetadataKey, err := GetMetadataKey(ctx, c, true)
91+
if err != nil {
92+
return fmt.Errorf("Get Metadata Key: %w", err)
93+
}
94+
resource.MetadataKeyID = metadataKeyID
95+
resource.MetadataKeyType = metadataKeyType
96+
97+
encMetadata, err := c.EncryptMessageWithKey(publicMetadataKey, string(metadata))
98+
if err != nil {
99+
return fmt.Errorf("Encrypt Metadata: %w", err)
100+
}
101+
resource.Metadata = encMetadata
102+
103+
resource, err = c.UpdateResource(ctx, resource.ID, *resource)
104+
if err != nil {
105+
return fmt.Errorf("Update Resource Metadata to Shared key: %w", err)
106+
}
107+
}
108+
82109
simulationResult, err := c.SimulateShareResource(ctx, resourceID, shareRequest)
83110
if err != nil {
84111
return fmt.Errorf("Simulate Share Resource: %w", err)

0 commit comments

Comments
 (0)