mirror of
https://github.com/passbolt/go-passbolt.git
synced 2025-06-27 22:49:35 +00:00
Preserve Additional Metadata
This commit is contained in:
parent
9c47dbbc2e
commit
ddd910a413
1 changed files with 23 additions and 52 deletions
|
@ -401,96 +401,67 @@ func UpdateResource(ctx context.Context, c *api.Client, resourceID, name, userna
|
||||||
return fmt.Errorf("Get Resource metadata: %w", err)
|
return fmt.Errorf("Get Resource metadata: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var metadataMap map[string]any
|
||||||
|
err = json.Unmarshal([]byte(orgMetadata), &metadataMap)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("Marshalling metadata: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
var newMetadata []byte
|
var newMetadata []byte
|
||||||
switch rType.Slug {
|
switch rType.Slug {
|
||||||
case "v5-default":
|
case "v5-default":
|
||||||
var metadataObj api.ResourceMetadataTypeV5DefaultWithTOTP
|
|
||||||
err = json.Unmarshal([]byte(orgMetadata), &metadataObj)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("Marshalling metadata: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Modify Metadata
|
// Modify Metadata
|
||||||
if name != "" {
|
if name != "" {
|
||||||
metadataObj.Name = name
|
metadataMap["name"] = name
|
||||||
}
|
}
|
||||||
if username != "" {
|
if username != "" {
|
||||||
metadataObj.Username = username
|
metadataMap["username"] = username
|
||||||
}
|
}
|
||||||
if uri != "" {
|
if uri != "" {
|
||||||
metadataObj.URIs = []string{uri}
|
metadataMap["uris"] = []string{uri}
|
||||||
}
|
|
||||||
newMetadata, err = json.Marshal(&metadataObj)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("Marshalling metadata: %w", err)
|
|
||||||
}
|
}
|
||||||
case "v5-password-string":
|
case "v5-password-string":
|
||||||
var metadataObj api.ResourceMetadataTypeV5DefaultWithTOTP
|
|
||||||
err = json.Unmarshal([]byte(orgMetadata), &metadataObj)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("Marshalling metadata: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Modify Metadata
|
// Modify Metadata
|
||||||
if name != "" {
|
if name != "" {
|
||||||
metadataObj.Name = name
|
metadataMap["name"] = name
|
||||||
}
|
}
|
||||||
if username != "" {
|
if username != "" {
|
||||||
metadataObj.Username = username
|
metadataMap["username"] = username
|
||||||
}
|
}
|
||||||
if uri != "" {
|
if uri != "" {
|
||||||
metadataObj.URIs = []string{uri}
|
metadataMap["uris"] = []string{uri}
|
||||||
}
|
}
|
||||||
if description != "" {
|
if description != "" {
|
||||||
metadataObj.Description = description
|
metadataMap["description"] = description
|
||||||
}
|
|
||||||
newMetadata, err = json.Marshal(&metadataObj)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("Marshalling metadata: %w", err)
|
|
||||||
}
|
}
|
||||||
case "v5-default-with-totp":
|
case "v5-default-with-totp":
|
||||||
var metadataObj api.ResourceMetadataTypeV5DefaultWithTOTP
|
|
||||||
err = json.Unmarshal([]byte(orgMetadata), &metadataObj)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("Marshalling metadata: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Modify Metadata
|
// Modify Metadata
|
||||||
if name != "" {
|
if name != "" {
|
||||||
metadataObj.Name = name
|
metadataMap["name"] = name
|
||||||
}
|
}
|
||||||
if username != "" {
|
if username != "" {
|
||||||
metadataObj.Username = username
|
metadataMap["username"] = username
|
||||||
}
|
}
|
||||||
if uri != "" {
|
if uri != "" {
|
||||||
metadataObj.URIs = []string{uri}
|
metadataMap["uris"] = []string{uri}
|
||||||
}
|
|
||||||
newMetadata, err = json.Marshal(&metadataObj)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("Marshalling metadata: %w", err)
|
|
||||||
}
|
}
|
||||||
case "v5-totp-standalone":
|
case "v5-totp-standalone":
|
||||||
var metadataObj api.ResourceMetadataTypeV5TOTPStandalone
|
|
||||||
err = json.Unmarshal([]byte(orgMetadata), &metadataObj)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("Marshalling metadata: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Modify Metadata
|
// Modify Metadata
|
||||||
if name != "" {
|
if name != "" {
|
||||||
metadataObj.Name = name
|
metadataMap["name"] = name
|
||||||
}
|
}
|
||||||
if uri != "" {
|
if uri != "" {
|
||||||
metadataObj.URIs = []string{uri}
|
metadataMap["uris"] = []string{uri}
|
||||||
}
|
|
||||||
newMetadata, err = json.Marshal(&metadataObj)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("Marshalling metadata: %w", err)
|
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("Unknown ResourceType: %v", rType.Slug)
|
return fmt.Errorf("Unknown ResourceType: %v", rType.Slug)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
newMetadata, err = json.Marshal(&metadataMap)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("Marshalling metadata: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
// Validate Metadata
|
// Validate Metadata
|
||||||
err = validateMetadata(rType, string(newMetadata))
|
err = validateMetadata(rType, string(newMetadata))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Add table
Reference in a new issue