Documentation ¶
Index ¶
- Constants
- type Client
- func (sc *Client) AclsToCellAcls(ctx context.Context, acls []*idm.ACL) map[string]*rest.CellAcl
- func (sc *Client) CellById(ctx context.Context, wsUuid string, owner *idm.User) (*rest.Cell, error)
- func (sc *Client) CellsForNode(ctx context.Context, node *tree.Node, owner *idm.User) (ll []*rest.Cell, e error)
- func (sc *Client) CheckCellOptionsAgainstConfigs(ctx context.Context, cell *rest.Cell) error
- func (sc *Client) CheckLinkOptionsAgainstConfigs(ctx context.Context, link *rest.ShareLink, wss []*tree.WorkspaceRelativePath, ...) (PluginOptions, error)
- func (sc *Client) CheckLinkRootNodes(ctx context.Context, link *rest.ShareLink) (workspaces []*tree.WorkspaceRelativePath, files, folders bool, e error)
- func (sc *Client) ClearLostHiddenUsers(ctx context.Context) error
- func (sc *Client) CommonAclsForWorkspace(ctx context.Context, workspaceId string) (result []*idm.ACL, detectedRoots []string, err error)
- func (sc *Client) ComputeTargetAcls(ctx context.Context, ownerUser *idm.User, cell *rest.Cell, workspaceId string, ...) ([]*idm.ACL, error)
- func (sc *Client) DefaultOptions(ctx context.Context) PluginOptions
- func (sc *Client) DeleteCell(ctx context.Context, id string, ownerLogin string) error
- func (sc *Client) DeleteHashDocument(ctx context.Context, shareId string) error
- func (sc *Client) DeleteHiddenUser(ctx context.Context, link *rest.ShareLink) error
- func (sc *Client) DeleteLink(ctx context.Context, id string) error
- func (sc *Client) DeleteLinkWorkspace(ctx context.Context, workspaceId string) error
- func (sc *Client) DeleteRootNodeRecursively(ctx context.Context, ownerName string, roomNode *tree.Node) error
- func (sc *Client) DeleteWorkspace(ctx context.Context, ownerLogin string, scope idm.WorkspaceScope, ...) error
- func (sc *Client) DetectInheritedPolicy(ctx context.Context, roots []*tree.Node, ...) (string, error)
- func (sc *Client) DiffAcls(ctx context.Context, initial []*idm.ACL, newOnes []*idm.ACL) (add []*idm.ACL, remove []*idm.ACL)
- func (sc *Client) DiffReadRoles(ctx context.Context, initial []*idm.ACL, newOnes []*idm.ACL) (add []string, remove []string)
- func (sc *Client) GetCellWorkspace(ctx context.Context, wsUuid string) (*idm.Workspace, error)
- func (sc *Client) GetLinkWorkspace(ctx context.Context, wsUuid string) (*idm.Workspace, error)
- func (sc *Client) GetOrCreateHiddenUser(ctx context.Context, ownerUser *idm.User, link *rest.ShareLink, ...) (user *idm.User, err error)
- func (sc *Client) GetOrCreateWorkspace(ctx context.Context, ownerUser *idm.User, wsUuid string, ...) (*idm.Workspace, bool, error)
- func (sc *Client) GetTemplateACLsForMinisite(ctx context.Context, roleId string, perms []rest.ShareLinkAccessType, ...) (acls []*idm.ACL, err error)
- func (sc *Client) InheritPolicies(ctx context.Context, policyName string, read, write bool) (string, error)
- func (sc *Client) InterpretInheritedPolicy(ctx context.Context, name string) (read, write bool, e error)
- func (sc *Client) LinkById(ctx context.Context, wsUuid string) (*rest.ShareLink, error)
- func (sc *Client) LinksForNode(ctx context.Context, node *tree.Node, owner *idm.User) (ll []*rest.ShareLink, e error)
- func (sc *Client) ListSharedResources(ctx context.Context, subject string, scope idm.WorkspaceScope, ownedBy bool, ...) ([]*SharedResource, error)
- func (sc *Client) LoadAdminRootNodes(ctx context.Context, detectedRoots []string) (rootNodes map[string]*tree.Node)
- func (sc *Client) LoadCellAclsObjects(ctx context.Context, roomAcls map[string]*rest.CellAcl) error
- func (sc *Client) LoadDetectedRootNodes(ctx context.Context, detectedRoots []string, ...) (rootNodes map[string]*tree.Node)
- func (sc *Client) LoadHashDocumentData(ctx context.Context, shareLink *rest.ShareLink, acls []*idm.ACL) error
- func (sc *Client) OwnerResourcePolicies(ctx context.Context, ownerUser *idm.User, resourceId string) []*service.ResourcePolicy
- func (sc *Client) ParseRootNodes(ctx context.Context, cell *rest.Cell, createEmpty bool) (bool, error)
- func (sc *Client) RootsParentWorkspaces(ctx context.Context, rr []*tree.Node) (ww []*tree.WorkspaceRelativePath, e error)
- func (sc *Client) SearchHashDocumentForUser(ctx context.Context, userLogin string) (*docstore.ShareDocument, error)
- func (sc *Client) SharesForNode(ctx context.Context, node *tree.Node, contextOwner *idm.User, ...) ([]*idm.Workspace, error)
- func (sc *Client) StoreHashDocument(ctx context.Context, ownerUser *idm.User, link *rest.ShareLink, ...) error
- func (sc *Client) UpdateACLsForHiddenUser(ctx context.Context, roleId string, workspaceId string, rootNodes []*tree.Node, ...) error
- func (sc *Client) UpdatePoliciesFromAcls(ctx context.Context, workspace *idm.Workspace, initial []*idm.ACL, ...) bool
- func (sc *Client) UpsertCell(ctx context.Context, cell *rest.Cell, ownerUser *idm.User, hasReadonly bool, ...) (*rest.Cell, error)
- func (sc *Client) UpsertLink(ctx context.Context, link *rest.ShareLink, linkOptions LinkOptioner, ...) (*rest.ShareLink, error)
- func (sc *Client) WorkspaceToCellObject(ctx context.Context, workspace *idm.Workspace, ...) (*rest.Cell, error)
- func (sc *Client) WorkspaceToShareLinkObject(ctx context.Context, workspace *idm.Workspace) (*rest.ShareLink, error)
- type ContextEditableChecker
- type EmptyContextChecker
- type LinkOptioner
- type PluginOptions
- type SharedResource
Constants ¶
const PasswordComplexitySuffix = "#$!Az1"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct { common.RuntimeHolder // contains filtered or unexported fields }
func NewClient ¶
func NewClient(ctx context.Context, checker ContextEditableChecker) *Client
NewClient creates a new share client. Leave checker nil to use default implementation (returning always true)
func (*Client) AclsToCellAcls ¶
AclsToCellAcls Rewrites a flat list of ACLs to a structured map of CellAcls (more easily usable by clients).
func (*Client) CellsForNode ¶
func (sc *Client) CellsForNode(ctx context.Context, node *tree.Node, owner *idm.User) (ll []*rest.Cell, e error)
CellsForNode loads existing Cells attached to a given node (and owned by passed user)
func (*Client) CheckCellOptionsAgainstConfigs ¶
CheckCellOptionsAgainstConfigs loads specific share configurations from ACLs and checks that current cell complies with these.
func (*Client) CheckLinkOptionsAgainstConfigs ¶
func (sc *Client) CheckLinkOptionsAgainstConfigs(ctx context.Context, link *rest.ShareLink, wss []*tree.WorkspaceRelativePath, files, folders bool) (PluginOptions, error)
CheckLinkOptionsAgainstConfigs loads specific share configurations from ACLs and checks that current link complies with these.
func (*Client) CheckLinkRootNodes ¶
func (sc *Client) CheckLinkRootNodes(ctx context.Context, link *rest.ShareLink) (workspaces []*tree.WorkspaceRelativePath, files, folders bool, e error)
CheckLinkRootNodes loads the root nodes and check if one of the is readonly. If so, check that link permissions do not try to set the Upload mode.
func (*Client) ClearLostHiddenUsers ¶
ClearLostHiddenUsers makes sure that hidden users that are not linked to any existing link are removed. This is used during a migration to fix the missing users deletion prior to v2.0.0
func (*Client) CommonAclsForWorkspace ¶
func (sc *Client) CommonAclsForWorkspace(ctx context.Context, workspaceId string) (result []*idm.ACL, detectedRoots []string, err error)
CommonAclsForWorkspace makes successive calls to ACL service to get all ACLs for a given workspace.
func (*Client) ComputeTargetAcls ¶
func (sc *Client) ComputeTargetAcls(ctx context.Context, ownerUser *idm.User, cell *rest.Cell, workspaceId string, readonly bool, parentPolicy string) ([]*idm.ACL, error)
ComputeTargetAcls create ACL objects that should be applied for this cell.
func (*Client) DefaultOptions ¶
func (sc *Client) DefaultOptions(ctx context.Context) PluginOptions
DefaultOptions loads the plugin default options, without further context-based filtering
func (*Client) DeleteCell ¶
DeleteCell deletes a Cell by its ID
func (*Client) DeleteHashDocument ¶
DeleteHashDocument removes link data from the storage.
func (*Client) DeleteHiddenUser ¶
DeleteHiddenUser removes hidden user associated with this link
func (*Client) DeleteLink ¶
DeleteLink disable an existing ShareLink and remove associated resources
func (*Client) DeleteLinkWorkspace ¶
DeleteLinkWorkspace wraps DeleteWorkspace to remove unnecessary parameters
func (*Client) DeleteRootNodeRecursively ¶
func (sc *Client) DeleteRootNodeRecursively(ctx context.Context, ownerName string, roomNode *tree.Node) error
DeleteRootNodeRecursively loads all children of a root node and delete them, including the .pydio hidden files when they are folders.
func (*Client) DeleteWorkspace ¶
func (sc *Client) DeleteWorkspace(ctx context.Context, ownerLogin string, scope idm.WorkspaceScope, workspaceId string) error
DeleteWorkspace deletes a workspace and associated policies and ACLs. It also deletes the room node if necessary.
func (*Client) DetectInheritedPolicy ¶
func (*Client) DiffAcls ¶
func (sc *Client) DiffAcls(ctx context.Context, initial []*idm.ACL, newOnes []*idm.ACL) (add []*idm.ACL, remove []*idm.ACL)
DiffAcls compares to slices of ACLs on their RoleID and Action and returns slices of Acls to add and to remove.
func (*Client) DiffReadRoles ¶
func (sc *Client) DiffReadRoles(ctx context.Context, initial []*idm.ACL, newOnes []*idm.ACL) (add []string, remove []string)
DiffReadRoles detects the roles that have been globally added or removed, whatever the node.
func (*Client) GetCellWorkspace ¶
GetCellWorkspace is a shortcut for GetOrCreateWorkspace but for retrieval only
func (*Client) GetLinkWorkspace ¶
GetLinkWorkspace is a shortcut for GetOrCreateWorkspace but for retrieval only
func (*Client) GetOrCreateHiddenUser ¶
func (sc *Client) GetOrCreateHiddenUser(ctx context.Context, ownerUser *idm.User, link *rest.ShareLink, passwordEnabled bool, updatePassword string, passwordHashed bool) (user *idm.User, err error)
GetOrCreateHiddenUser will load or create a user to create a ShareLink with.
func (*Client) GetOrCreateWorkspace ¶
func (sc *Client) GetOrCreateWorkspace(ctx context.Context, ownerUser *idm.User, wsUuid string, scope idm.WorkspaceScope, label string, refLabel string, description string, updateIfNeeded bool) (*idm.Workspace, bool, error)
GetOrCreateWorkspace finds a workspace by its Uuid or creates it with the current user ResourcePolicies if it does not already exist.
func (*Client) GetTemplateACLsForMinisite ¶
func (sc *Client) GetTemplateACLsForMinisite(ctx context.Context, roleId string, perms []rest.ShareLinkAccessType, aclClient idm.ACLServiceClient) (acls []*idm.ACL, err error)
GetTemplateACLsForMinisite loads actions and parameter acls from specific template roles.
func (*Client) InheritPolicies ¶
func (sc *Client) InheritPolicies(ctx context.Context, policyName string, read, write bool) (string, error)
InheritPolicies find possible SecurityPolicy currently implied and compute a new one based on it.
func (*Client) InterpretInheritedPolicy ¶
func (sc *Client) InterpretInheritedPolicy(ctx context.Context, name string) (read, write bool, e error)
InterpretInheritedPolicy translates a SecurityPolicy to read/write permissions for user readability
func (*Client) LinksForNode ¶
func (sc *Client) LinksForNode(ctx context.Context, node *tree.Node, owner *idm.User) (ll []*rest.ShareLink, e error)
LinksForNode loads existing links for a give node
func (*Client) ListSharedResources ¶
func (sc *Client) ListSharedResources(ctx context.Context, subject string, scope idm.WorkspaceScope, ownedBy bool, p resources.ResourceProviderHandler) ([]*SharedResource, error)
ListSharedResources lists all links and cells Owned by a given user
func (*Client) LoadAdminRootNodes ¶
func (sc *Client) LoadAdminRootNodes(ctx context.Context, detectedRoots []string) (rootNodes map[string]*tree.Node)
LoadAdminRootNodes find actual nodes in the tree, and enrich their metadata if they appear in many workspaces for the current user.
func (*Client) LoadCellAclsObjects ¶
LoadCellAclsObjects loads associated users / groups / roles based on the role Ids of the acls.
func (*Client) LoadDetectedRootNodes ¶
func (sc *Client) LoadDetectedRootNodes(ctx context.Context, detectedRoots []string, accessList *permissions.AccessList) (rootNodes map[string]*tree.Node)
LoadDetectedRootNodes find actual nodes in the tree, and enrich their metadata if they appear in many workspaces for the current user.
func (*Client) LoadHashDocumentData ¶
func (sc *Client) LoadHashDocumentData(ctx context.Context, shareLink *rest.ShareLink, acls []*idm.ACL) error
LoadHashDocumentData loads link data from the storage (currently Docstore) by link Uuid.
func (*Client) OwnerResourcePolicies ¶
func (sc *Client) OwnerResourcePolicies(ctx context.Context, ownerUser *idm.User, resourceId string) []*service.ResourcePolicy
OwnerResourcePolicies produces a set of policies given ownership to current context user, read/write to current context user, and write access to profile:admin (can be useful for admin).
func (*Client) ParseRootNodes ¶
func (sc *Client) ParseRootNodes(ctx context.Context, cell *rest.Cell, createEmpty bool) (bool, error)
ParseRootNodes reads the request property to either create a new node using the "rooms" Virtual node, or just verify that the root nodes are not empty.
func (*Client) RootsParentWorkspaces ¶
func (sc *Client) RootsParentWorkspaces(ctx context.Context, rr []*tree.Node) (ww []*tree.WorkspaceRelativePath, e error)
RootsParentWorkspaces reads parents and find the root node of the workspace
func (*Client) SearchHashDocumentForUser ¶
func (sc *Client) SearchHashDocumentForUser(ctx context.Context, userLogin string) (*docstore.ShareDocument, error)
SearchHashDocumentForUser searches the DocStore to find documents that have either PRELOG_USER or PRESET_LOGIN with the passed userLogin value.
func (*Client) SharesForNode ¶
func (sc *Client) SharesForNode(ctx context.Context, node *tree.Node, contextOwner *idm.User, scopes ...idm.WorkspaceScope) ([]*idm.Workspace, error)
SharesForNode finds all active workspaces (Links or Cells) for a given node+owner combination
func (*Client) StoreHashDocument ¶
func (sc *Client) StoreHashDocument(ctx context.Context, ownerUser *idm.User, link *rest.ShareLink, updateHash ...string) error
StoreHashDocument sends link data to the storage backend, currently the Docstore service.
func (*Client) UpdateACLsForHiddenUser ¶
func (sc *Client) UpdateACLsForHiddenUser(ctx context.Context, roleId string, workspaceId string, rootNodes []*tree.Node, perms []rest.ShareLinkAccessType, parentPolicy string, update bool) error
UpdateACLsForHiddenUser deletes and replaces access ACLs for a hidden user.
func (*Client) UpdatePoliciesFromAcls ¶
func (sc *Client) UpdatePoliciesFromAcls(ctx context.Context, workspace *idm.Workspace, initial []*idm.ACL, target []*idm.ACL) bool
UpdatePoliciesFromAcls recomputes the required policies from acl changes.
func (*Client) UpsertCell ¶
func (sc *Client) UpsertCell(ctx context.Context, cell *rest.Cell, ownerUser *idm.User, hasReadonly bool, parentPolicy string) (*rest.Cell, error)
UpsertCell creates or update an existing cell with specific ACLs
func (*Client) UpsertLink ¶
func (sc *Client) UpsertLink(ctx context.Context, link *rest.ShareLink, linkOptions LinkOptioner, ownerUser *idm.User, parentPolicy string, options PluginOptions) (*rest.ShareLink, error)
UpsertLink creates or updates a ShareLink. ownerUser is required to apply correct permissions to the new/updated link The plugin options can be user-permissions-based otherwise use client.DefaultOptions()
func (*Client) WorkspaceToCellObject ¶
func (sc *Client) WorkspaceToCellObject(ctx context.Context, workspace *idm.Workspace, accessList *permissions.AccessList) (*rest.Cell, error)
WorkspaceToCellObject rewrites a workspace to a Cell object by reloading its ACLs.
type ContextEditableChecker ¶
type EmptyContextChecker ¶
type EmptyContextChecker struct{}
func (*EmptyContextChecker) IsContextEditable ¶
func (*EmptyContextChecker) IsContextEditable(ctx context.Context, resourceId string, policies []*service2.ResourcePolicy) bool
type LinkOptioner ¶
type PluginOptions ¶
type SharedResource ¶
type SharedResource struct {}