Documentation ¶
Overview ¶
Package rest exposes a REST API to manage shared rooms.
Package rest implements all the share logic for Cells and Links.
It is a high-level service using many other services for crud-ing shares through the REST API.
Index ¶
- Constants
- func DeleteHashDocument(ctx context.Context, shareId string) error
- func LoadHashDocumentData(ctx context.Context, shareLink *rest.ShareLink, acls []*idm.ACL) error
- func StoreHashDocument(ctx context.Context, link *rest.ShareLink, updateHash ...string) error
- type SharesHandler
- func (h *SharesHandler) AclsToCellAcls(ctx context.Context, acls []*idm.ACL) map[string]*rest.CellAcl
- func (h *SharesHandler) CheckLinkRootNodes(ctx context.Context, link *rest.ShareLink) error
- func (h *SharesHandler) CommonAclsForWorkspace(ctx context.Context, workspaceId string) (result []*idm.ACL, detectedRoots []string, err error)
- func (h *SharesHandler) ComputeTargetAcls(ctx context.Context, shareRequest *rest.PutCellRequest, workspaceId string, ...) []*idm.ACL
- func (h *SharesHandler) DeleteCell(req *restful.Request, rsp *restful.Response)
- func (h *SharesHandler) DeleteRootNodeRecursively(ctx context.Context, roomNode *tree.Node) error
- func (h *SharesHandler) DeleteShareLink(req *restful.Request, rsp *restful.Response)
- func (h *SharesHandler) DeleteWorkspace(ctx context.Context, scope idm.WorkspaceScope, workspaceId string) error
- func (h *SharesHandler) DiffAcls(ctx context.Context, initial []*idm.ACL, newOnes []*idm.ACL) (add []*idm.ACL, remove []*idm.ACL)
- func (h *SharesHandler) DiffReadRoles(ctx context.Context, initial []*idm.ACL, newOnes []*idm.ACL) (add []string, remove []string)
- func (h *SharesHandler) Filter() func(string) string
- func (h *SharesHandler) GetCell(req *restful.Request, rsp *restful.Response)
- func (h *SharesHandler) GetOrCreateHiddenUser(ctx context.Context, link *rest.ShareLink, passwordEnabled bool, ...) (user *idm.User, err error)
- func (h *SharesHandler) GetOrCreateWorkspace(ctx context.Context, wsUuid string, scope idm.WorkspaceScope, label string, ...) (*idm.Workspace, bool, error)
- func (h *SharesHandler) GetShareLink(req *restful.Request, rsp *restful.Response)
- func (h *SharesHandler) GetTemplateACLsForMinisite(ctx context.Context, roleId string, permissions []rest.ShareLinkAccessType, ...) (acls []*idm.ACL, err error)
- func (h *SharesHandler) ListSharedResources(req *restful.Request, rsp *restful.Response)
- func (h *SharesHandler) LoadAdminRootNodes(ctx context.Context, detectedRoots []string) (rootNodes map[string]*tree.Node)
- func (h *SharesHandler) LoadCellAclsObjects(ctx context.Context, roomAcls map[string]*rest.CellAcl) error
- func (h *SharesHandler) LoadDetectedRootNodes(ctx context.Context, detectedRoots []string) (rootNodes map[string]*tree.Node)
- func (h *SharesHandler) OwnerResourcePolicies(ctx context.Context, resourceId string) []*service2.ResourcePolicy
- func (h *SharesHandler) ParseRootNodes(ctx context.Context, shareRequest *rest.PutCellRequest) (error, *tree.Node, bool)
- func (h *SharesHandler) PutCell(req *restful.Request, rsp *restful.Response)
- func (h *SharesHandler) PutShareLink(req *restful.Request, rsp *restful.Response)
- func (h *SharesHandler) SwaggerTags() []string
- func (h *SharesHandler) UpdateACLsForHiddenUser(ctx context.Context, roleId string, workspaceId string, rootNodes []*tree.Node, ...) error
- func (h *SharesHandler) UpdatePoliciesFromAcls(ctx context.Context, workspace *idm.Workspace, initial []*idm.ACL, ...) bool
- func (h *SharesHandler) WorkspaceToCellObject(ctx context.Context, workspace *idm.Workspace) (*rest.Cell, error)
- func (h *SharesHandler) WorkspaceToShareLinkObject(ctx context.Context, workspace *idm.Workspace) (*rest.ShareLink, error)
Constants ¶
const PasswordComplexitySuffix = "#$!Az1"
Variables ¶
This section is empty.
Functions ¶
func LoadHashDocumentData ¶
Types ¶
type SharesHandler ¶
type SharesHandler struct {
}SharesHandler implements handler methods for the share REST service.
func NewSharesHandler ¶
func NewSharesHandler() *SharesHandler
NewSharesHandler simply creates a new SharesHandler.
func (*SharesHandler) AclsToCellAcls ¶
func (h *SharesHandler) AclsToCellAcls(ctx context.Context, acls []*idm.ACL) map[string]*rest.CellAcl
AclsToCellAcls Rewrites a flat list of ACLs to a structured map of CellAcls (more easily usable by clients).
func (*SharesHandler) CheckLinkRootNodes ¶ added in v1.2.0
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 (*SharesHandler) CommonAclsForWorkspace ¶
func (h *SharesHandler) 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 (*SharesHandler) ComputeTargetAcls ¶ added in v1.2.0
func (h *SharesHandler) ComputeTargetAcls(ctx context.Context, shareRequest *rest.PutCellRequest, workspaceId string, readonly bool) []*idm.ACL
ComputeTargetAcls create ACL objects that should be applied for this cell.
func (*SharesHandler) DeleteCell ¶
func (h *SharesHandler) DeleteCell(req *restful.Request, rsp *restful.Response)
DeleteCell loads the workspace and its root nodes and eventually removes room root totally.
func (*SharesHandler) DeleteRootNodeRecursively ¶
DeleteRootNodeRecursively loads all children of a root node and delete them, including the .pydio hidden files when they are folders.
func (*SharesHandler) DeleteShareLink ¶
func (h *SharesHandler) DeleteShareLink(req *restful.Request, rsp *restful.Response)
DeleteShareLink deletes a link information.
func (*SharesHandler) DeleteWorkspace ¶
func (h *SharesHandler) DeleteWorkspace(ctx context.Context, scope idm.WorkspaceScope, workspaceId string) error
DeleteWorkspace deletes a workspace and associated policies and ACLs. It also deletes the room node if necessary.
func (*SharesHandler) DiffAcls ¶
func (h *SharesHandler) 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 (*SharesHandler) DiffReadRoles ¶
func (h *SharesHandler) 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 (*SharesHandler) Filter ¶
func (h *SharesHandler) Filter() func(string) string
Filter returns a function to filter the swagger path.
func (*SharesHandler) GetCell ¶
func (h *SharesHandler) GetCell(req *restful.Request, rsp *restful.Response)
GetCell simply retrieves a shared room from its UUID.
func (*SharesHandler) GetOrCreateHiddenUser ¶
func (h *SharesHandler) GetOrCreateHiddenUser(ctx context.Context, link *rest.ShareLink, passwordEnabled bool, updatePassword string) (user *idm.User, err error)
GetOrCreateHiddenUser will load or create a user to create a ShareLink with.
func (*SharesHandler) GetOrCreateWorkspace ¶
func (h *SharesHandler) GetOrCreateWorkspace(ctx context.Context, wsUuid string, scope idm.WorkspaceScope, label 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 (*SharesHandler) GetShareLink ¶
func (h *SharesHandler) GetShareLink(req *restful.Request, rsp *restful.Response)
GetShareLink loads link information.
func (*SharesHandler) GetTemplateACLsForMinisite ¶
func (h *SharesHandler) GetTemplateACLsForMinisite(ctx context.Context, roleId string, permissions []rest.ShareLinkAccessType, aclClient idm.ACLServiceClient) (acls []*idm.ACL, err error)
GetTemplateACLsForMinisite loads actions and parameter acls from specific template roles.
func (*SharesHandler) ListSharedResources ¶
func (h *SharesHandler) ListSharedResources(req *restful.Request, rsp *restful.Response)
ListSharedResources implements the corresponding Rest API operation
func (*SharesHandler) LoadAdminRootNodes ¶ added in v1.0.1
func (h *SharesHandler) LoadAdminRootNodes(ctx context.Context, detectedRoots []string) (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 (*SharesHandler) LoadCellAclsObjects ¶
func (h *SharesHandler) LoadCellAclsObjects(ctx context.Context, roomAcls map[string]*rest.CellAcl) error
LoadCellAclsObjects loads associated users / groups / roles based on the role Ids of the acls.
func (*SharesHandler) LoadDetectedRootNodes ¶
func (h *SharesHandler) LoadDetectedRootNodes(ctx context.Context, detectedRoots []string) (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 (*SharesHandler) OwnerResourcePolicies ¶
func (h *SharesHandler) OwnerResourcePolicies(ctx context.Context, resourceId string) []*service2.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 (*SharesHandler) ParseRootNodes ¶
func (h *SharesHandler) ParseRootNodes(ctx context.Context, shareRequest *rest.PutCellRequest) (error, *tree.Node, bool)
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 (*SharesHandler) PutCell ¶
func (h *SharesHandler) PutCell(req *restful.Request, rsp *restful.Response)
PutCell creates or updates a shared room (a.k.a a Cell) via REST API.
func (*SharesHandler) PutShareLink ¶
func (h *SharesHandler) PutShareLink(req *restful.Request, rsp *restful.Response)
PutShareLink creates or updates a link to a shared item.
func (*SharesHandler) SwaggerTags ¶
func (h *SharesHandler) SwaggerTags() []string
SwaggerTags list the names of the service tags declared in the swagger json implemented by this service.
func (*SharesHandler) UpdateACLsForHiddenUser ¶
func (h *SharesHandler) UpdateACLsForHiddenUser(ctx context.Context, roleId string, workspaceId string, rootNodes []*tree.Node, permissions []rest.ShareLinkAccessType, update bool) error
UpdateACLsForHiddenUser deletes and replaces access ACLs for a hidden user.
func (*SharesHandler) UpdatePoliciesFromAcls ¶
func (h *SharesHandler) UpdatePoliciesFromAcls(ctx context.Context, workspace *idm.Workspace, initial []*idm.ACL, target []*idm.ACL) bool
UpdatePoliciesFromAcls recomputes the required policies from acl changes.
func (*SharesHandler) WorkspaceToCellObject ¶
func (h *SharesHandler) WorkspaceToCellObject(ctx context.Context, workspace *idm.Workspace) (*rest.Cell, error)
WorkspaceToCellObject rewrites a workspace to a Cell object by reloading its ACLs.