+26
-42
@@ -141,20 +141,20 @@ func (r *Role) WebDAVPermissions(isDir, isShared, isMountpoint, isPublic bool) s
|
||||
}
|
||||
|
||||
// RoleFromName creates a role from the name
|
||||
func RoleFromName(name string, sharing bool) *Role {
|
||||
func RoleFromName(name string) *Role {
|
||||
switch name {
|
||||
case RoleDenied:
|
||||
return NewDeniedRole()
|
||||
case RoleViewer:
|
||||
return NewViewerRole(sharing)
|
||||
return NewViewerRole()
|
||||
case RoleSpaceViewer:
|
||||
return NewSpaceViewerRole()
|
||||
case RoleEditor:
|
||||
return NewEditorRole(sharing)
|
||||
return NewEditorRole()
|
||||
case RoleSpaceEditor:
|
||||
return NewSpaceEditorRole()
|
||||
case RoleFileEditor:
|
||||
return NewFileEditorRole(sharing)
|
||||
return NewFileEditorRole()
|
||||
case RoleUploader:
|
||||
return NewUploaderRole()
|
||||
case RoleManager:
|
||||
@@ -183,15 +183,11 @@ func NewDeniedRole() *Role {
|
||||
}
|
||||
|
||||
// NewViewerRole creates a viewer role. `sharing` indicates if sharing permission should be added
|
||||
func NewViewerRole(sharing bool) *Role {
|
||||
func NewViewerRole() *Role {
|
||||
p := PermissionRead
|
||||
if sharing {
|
||||
p |= PermissionShare
|
||||
}
|
||||
return &Role{
|
||||
Name: RoleViewer,
|
||||
cS3ResourcePermissions: &provider.ResourcePermissions{
|
||||
AddGrant: sharing,
|
||||
GetPath: true,
|
||||
GetQuota: true,
|
||||
InitiateFileDownload: true,
|
||||
@@ -221,15 +217,11 @@ func NewSpaceViewerRole() *Role {
|
||||
}
|
||||
|
||||
// NewEditorRole creates an editor role. `sharing` indicates if sharing permission should be added
|
||||
func NewEditorRole(sharing bool) *Role {
|
||||
func NewEditorRole() *Role {
|
||||
p := PermissionRead | PermissionCreate | PermissionWrite | PermissionDelete
|
||||
if sharing {
|
||||
p |= PermissionShare
|
||||
}
|
||||
return &Role{
|
||||
Name: RoleEditor,
|
||||
cS3ResourcePermissions: &provider.ResourcePermissions{
|
||||
AddGrant: sharing,
|
||||
CreateContainer: true,
|
||||
Delete: true,
|
||||
GetPath: true,
|
||||
@@ -271,15 +263,11 @@ func NewSpaceEditorRole() *Role {
|
||||
}
|
||||
|
||||
// NewFileEditorRole creates a file-editor role
|
||||
func NewFileEditorRole(sharing bool) *Role {
|
||||
func NewFileEditorRole() *Role {
|
||||
p := PermissionRead | PermissionWrite
|
||||
if sharing {
|
||||
p |= PermissionShare
|
||||
}
|
||||
return &Role{
|
||||
Name: RoleEditor,
|
||||
cS3ResourcePermissions: &provider.ResourcePermissions{
|
||||
AddGrant: sharing,
|
||||
GetPath: true,
|
||||
GetQuota: true,
|
||||
InitiateFileDownload: true,
|
||||
@@ -378,34 +366,30 @@ func NewManagerRole() *Role {
|
||||
// RoleFromOCSPermissions tries to map ocs permissions to a role
|
||||
// TODO: rethink using this. ocs permissions cannot be assigned 1:1 to roles
|
||||
func RoleFromOCSPermissions(p Permissions, ri *provider.ResourceInfo) *Role {
|
||||
if p == PermissionInvalid {
|
||||
switch {
|
||||
// Invalid
|
||||
case p == PermissionInvalid:
|
||||
return NewNoneRole()
|
||||
}
|
||||
|
||||
if p.Contain(PermissionRead) {
|
||||
if p.Contain(PermissionWrite) && p.Contain(PermissionCreate) && p.Contain(PermissionDelete) {
|
||||
if p.Contain(PermissionShare) {
|
||||
return NewEditorRole(true)
|
||||
}
|
||||
|
||||
if isSpaceRoot(ri) {
|
||||
return NewSpaceEditorRole()
|
||||
}
|
||||
}
|
||||
|
||||
if p == PermissionRead && isSpaceRoot(ri) {
|
||||
// Uploader
|
||||
case p == PermissionCreate:
|
||||
return NewUploaderRole()
|
||||
// Viewer/SpaceViewer
|
||||
case p == PermissionRead:
|
||||
if isSpaceRoot(ri) {
|
||||
return NewSpaceViewerRole()
|
||||
}
|
||||
|
||||
if p == PermissionRead|PermissionShare && !isSpaceRoot(ri) {
|
||||
return NewViewerRole(true)
|
||||
return NewViewerRole()
|
||||
// Editor/SpaceEditor
|
||||
case p.Contain(PermissionRead) && p.Contain(PermissionWrite) && p.Contain(PermissionCreate) && p.Contain(PermissionDelete) && !p.Contain(PermissionShare):
|
||||
if isSpaceRoot(ri) {
|
||||
return NewSpaceEditorRole()
|
||||
}
|
||||
|
||||
return NewEditorRole()
|
||||
// Custom
|
||||
default:
|
||||
return NewLegacyRoleFromOCSPermissions(p)
|
||||
}
|
||||
if p == PermissionCreate {
|
||||
return NewUploaderRole()
|
||||
}
|
||||
// legacy
|
||||
return NewLegacyRoleFromOCSPermissions(p)
|
||||
}
|
||||
|
||||
func isSpaceRoot(ri *provider.ResourceInfo) bool {
|
||||
|
||||
Reference in New Issue
Block a user