Skip to content

Commit

Permalink
Renamed "coowner" to "collaborator". To be reviewed once the role def…
Browse files Browse the repository at this point in the history
…initions are refactored and consolidated in a single place
  • Loading branch information
glpatcern committed Jul 6, 2021
1 parent 37656bf commit 2187419
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 24 deletions.
10 changes: 5 additions & 5 deletions cmd/reva/common.go
Expand Up @@ -30,11 +30,11 @@ import (
)

const (
viewerPermission string = "viewer"
readerPermission string = "reader"
editorPermission string = "editor"
coownerPermission string = "coowner"
denyPermission string = "denied"
viewerPermission string = "viewer"
readerPermission string = "reader"
editorPermission string = "editor"
collabPermission string = "collab"
denyPermission string = "denied"
)

type config struct {
Expand Down
2 changes: 1 addition & 1 deletion cmd/reva/share-create.go
Expand Up @@ -181,7 +181,7 @@ func getSharePerm(p string) (*provider.ResourcePermissions, error) {
RestoreFileVersion: true,
Move: true,
}, nil
case coownerPermission:
case collabPermission:
return &provider.ResourcePermissions{
GetPath: true,
InitiateFileDownload: true,
Expand Down
Expand Up @@ -145,7 +145,7 @@ func TestPermissions2Role(t *testing.T) {
table := map[Permissions]string{
PermissionRead: RoleViewer,
PermissionRead | PermissionWrite | PermissionCreate | PermissionDelete: RoleEditor,
PermissionAll: RoleCoowner,
PermissionAll: RoleCollaborator,
PermissionWrite: RoleLegacy,
PermissionShare: RoleLegacy,
PermissionWrite | PermissionShare: RoleLegacy,
Expand Down
45 changes: 34 additions & 11 deletions internal/http/services/owncloud/ocs/conversions/role.go
Expand Up @@ -40,14 +40,16 @@ const (
RoleLegacy string = "legacy"
// RoleDenied grants no permission at all on a resource
RoleDenied string = "denied"
// RoleViewer grants non-editor role on a resource
// RoleViewer grants a view-only role (no download) on a resource
RoleViewer string = "viewer"
// RoleReader grants non-editor role on a resource
RoleReader string = "reader"
// RoleEditor grants editor permission on a resource, including folders
RoleEditor string = "editor"
// RoleFileEditor grants editor permission on a single file
RoleFileEditor string = "file-editor"
// RoleCoowner grants owner permissions on a resource
RoleCoowner string = "coowner"
// RoleCollaborator rgrants editor+resharing permissions on a resource
RoleCollaborator string = "collaborator"
// RoleUploader FIXME: uploader role with only write permission can use InitiateFileUpload, not anything else
RoleUploader string = "uploader"
)
Expand Down Expand Up @@ -125,12 +127,14 @@ func RoleFromName(name string) *Role {
return NewDeniedRole()
case RoleViewer:
return NewViewerRole()
case RoleReader:
return NewReaderRole()
case RoleEditor:
return NewEditorRole()
case RoleFileEditor:
return NewFileEditorRole()
case RoleCoowner:
return NewCoownerRole()
case RoleCollaborator:
return NewCollaboratorRole()
case RoleUploader:
return NewUploaderRole()
}
Expand Down Expand Up @@ -174,6 +178,25 @@ func NewViewerRole() *Role {
}
}

// NewReaderRole creates a reader role
func NewReaderRole() *Role {
return &Role{
Name: RoleViewer,
cS3ResourcePermissions: &provider.ResourcePermissions{
// read
GetPath: true,
GetQuota: true,
InitiateFileDownload: true,
ListGrants: true,
ListContainer: true,
ListFileVersions: true,
ListRecycle: true,
Stat: true,
},
ocsPermissions: PermissionRead,
}
}

// NewEditorRole creates an editor role
func NewEditorRole() *Role {
return &Role{
Expand Down Expand Up @@ -232,10 +255,10 @@ func NewFileEditorRole() *Role {
}
}

// NewCoownerRole creates a coowner role
func NewCoownerRole() *Role {
// NewCollaboratorRole creates a collaborator role
func NewCollaboratorRole() *Role {
return &Role{
Name: RoleCoowner,
Name: RoleCollaborator,
cS3ResourcePermissions: &provider.ResourcePermissions{
// read
GetPath: true,
Expand Down Expand Up @@ -296,7 +319,7 @@ func RoleFromOCSPermissions(p Permissions) *Role {
if p.Contain(PermissionRead) {
if p.Contain(PermissionWrite) && p.Contain(PermissionCreate) && p.Contain(PermissionDelete) {
if p.Contain(PermissionShare) {
return NewCoownerRole()
return NewCollaboratorRole()
}
return NewEditorRole()
}
Expand Down Expand Up @@ -404,9 +427,9 @@ func RoleFromResourcePermissions(rp *provider.ResourcePermissions) *Role {
if r.ocsPermissions.Contain(PermissionWrite) && r.ocsPermissions.Contain(PermissionCreate) && r.ocsPermissions.Contain(PermissionDelete) {
r.Name = RoleEditor
if r.ocsPermissions.Contain(PermissionShare) {
r.Name = RoleCoowner
r.Name = RoleCollaborator
}
return r // editor or coowner
return r // editor or collaborator
}
if r.ocsPermissions == PermissionRead {
r.Name = RoleViewer
Expand Down
Expand Up @@ -243,23 +243,23 @@ func (h *Handler) createShare(w http.ResponseWriter, r *http.Request) {

switch shareType {
case int(conversions.ShareTypeUser):
// user collaborations default to coowner
if role, val, err := h.extractPermissions(w, r, statRes.Info, conversions.NewCoownerRole()); err == nil {
// user collaborations default to collab
if role, val, err := h.extractPermissions(w, r, statRes.Info, conversions.NewCollaboratorRole()); err == nil {
h.createUserShare(w, r, statRes.Info, role, val)
}
case int(conversions.ShareTypeGroup):
// group collaborations default to coowner
if role, val, err := h.extractPermissions(w, r, statRes.Info, conversions.NewCoownerRole()); err == nil {
// group collaborations default to collab
if role, val, err := h.extractPermissions(w, r, statRes.Info, conversions.NewCollaboratorRole()); err == nil {
h.createGroupShare(w, r, statRes.Info, role, val)
}
case int(conversions.ShareTypePublicLink):
// public links default to read only
if _, _, err := h.extractPermissions(w, r, statRes.Info, conversions.NewViewerRole()); err == nil {
if _, _, err := h.extractPermissions(w, r, statRes.Info, conversions.NewReaderRole()); err == nil {
h.createPublicLinkShare(w, r, statRes.Info)
}
case int(conversions.ShareTypeFederatedCloudShare):
// federated shares default to read only
if role, val, err := h.extractPermissions(w, r, statRes.Info, conversions.NewViewerRole()); err == nil {
if role, val, err := h.extractPermissions(w, r, statRes.Info, conversions.NewReaderRole()); err == nil {
h.createFederatedCloudShare(w, r, statRes.Info, role, val)
}
default:
Expand Down

0 comments on commit 2187419

Please sign in to comment.