-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #41 from passbolt/v5-server-settings
V5 server settings
- Loading branch information
Showing
4 changed files
with
151 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
package api | ||
|
||
import ( | ||
"context" | ||
"encoding/json" | ||
) | ||
|
||
type PassboltAPIVersionType string | ||
|
||
const ( | ||
PassboltAPIVersionTypeV4 PassboltAPIVersionType = "v4" | ||
PassboltAPIVersionTypeV5 = "v5" | ||
) | ||
|
||
func (s PassboltAPIVersionType) IsValid() bool { | ||
switch s { | ||
case PassboltAPIVersionTypeV4, PassboltAPIVersionTypeV5: | ||
return true | ||
} | ||
return false | ||
} | ||
|
||
// MetadataTypeSettings Contains the Servers Settings about which Types to use | ||
type MetadataTypeSettings struct { | ||
DefaultResourceType PassboltAPIVersionType `json:"default_resource_types"` | ||
DefaultFolderType PassboltAPIVersionType `json:"default_folder_type"` | ||
DefaultTagType PassboltAPIVersionType `json:"default_tag_type"` | ||
DefaultCommentType PassboltAPIVersionType `json:"default_comment_type"` | ||
AllowCreationOfV5Resources bool `json:"allow_creation_of_v5_resources"` | ||
AllowCreationOfV5Folders bool `json:"allow_creation_of_v5_folders"` | ||
AllowCreationOfV5Tags bool `json:"allow_creation_of_v5_tags"` | ||
AllowCreationOfV5Comments bool `json:"allow_creation_of_v5_comments"` | ||
AllowCreationOfV4Resources bool `json:"allow_creation_of_v4_resources"` | ||
AllowCreationOfV4Folders bool `json:"allow_creation_of_v4_folders"` | ||
AllowCreationOfV4Tags bool `json:"allow_creation_of_v4_tags"` | ||
AllowCreationOfV4Comments bool `json:"allow_creation_of_v4_comments"` | ||
AllowV4V5Upgrade bool `json:"allow_v4_v5_upgrade"` | ||
AllowV4V5Downgrade bool `json:"allow_v5_v4_downgrade"` | ||
} | ||
|
||
func getV4DefaultMetadataTypeSettings() MetadataTypeSettings { | ||
return MetadataTypeSettings{ | ||
DefaultResourceType: PassboltAPIVersionTypeV4, | ||
DefaultFolderType: PassboltAPIVersionTypeV4, | ||
DefaultTagType: PassboltAPIVersionTypeV4, | ||
DefaultCommentType: PassboltAPIVersionTypeV4, | ||
AllowCreationOfV5Resources: false, | ||
AllowCreationOfV5Folders: false, | ||
AllowCreationOfV5Tags: false, | ||
AllowCreationOfV5Comments: false, | ||
AllowCreationOfV4Resources: true, | ||
AllowCreationOfV4Folders: true, | ||
AllowCreationOfV4Tags: true, | ||
AllowCreationOfV4Comments: true, | ||
AllowV4V5Upgrade: false, | ||
AllowV4V5Downgrade: false, | ||
} | ||
} | ||
|
||
// GetMetadataTypeSettings gets the Servers Settings about which Types to use | ||
func (c *Client) GetMetadataTypeSettings(ctx context.Context) (*MetadataTypeSettings, error) { | ||
msg, err := c.DoCustomRequest(ctx, "GET", "/metadata/types/settings.json", "v3", nil, nil) | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
var metadataSettings MetadataTypeSettings | ||
err = json.Unmarshal(msg.Body, &metadataSettings) | ||
if err != nil { | ||
return nil, err | ||
} | ||
return &metadataSettings, nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
package api | ||
|
||
import ( | ||
"context" | ||
"encoding/json" | ||
) | ||
|
||
// ServerSettingsResponse contains all Servers Settings | ||
type ServerSettingsResponse struct { | ||
Passbolt ServerPassboltSettings `json:"passbolt"` | ||
} | ||
|
||
// ServerPassboltSettings contains Passbolt specific server settings | ||
type ServerPassboltSettings struct { | ||
Plugins map[string]ServerPassboltPluginSettings `json:"plugins"` | ||
} | ||
|
||
// ServerPassboltPluginSettings contains the Settings of a Specific Passbolt Plugin | ||
type ServerPassboltPluginSettings struct { | ||
Enabled bool `json:"enabled"` | ||
Version string `json:"version"` | ||
} | ||
|
||
// GetServerSettings gets the Server Settings | ||
func (c *Client) GetServerSettings(ctx context.Context) (*ServerSettingsResponse, error) { | ||
msg, err := c.DoCustomRequest(ctx, "GET", "/settings.json", "v3", nil, nil) | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
var settings ServerSettingsResponse | ||
err = json.Unmarshal(msg.Body, &settings) | ||
if err != nil { | ||
return nil, err | ||
} | ||
return &settings, nil | ||
} | ||
|
||
func (ps *ServerPassboltSettings) IsPluginEnabled(name string) bool { | ||
p, ok := ps.Plugins[name] | ||
if !ok { | ||
return false | ||
} | ||
|
||
return p.Enabled | ||
} |