mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-07-29 16:58:43 -04:00
feat: add space viewer with versions role (#2961)
* feat: add space viewer with versions role * fix after review --------- Co-authored-by: v.scharf <v.scharf@opencloud.eu>
This commit is contained in:
@@ -15,6 +15,7 @@ var (
|
||||
// but can be enabled by the user.
|
||||
_disabledByDefaultUnifiedRoleRoleIDs = []string{
|
||||
unifiedrole.UnifiedRoleSecureViewerID,
|
||||
unifiedrole.UnifiedRoleSpaceViewerWithVersionsID,
|
||||
unifiedrole.UnifiedRoleSpaceEditorWithoutVersionsID,
|
||||
unifiedrole.UnifiedRoleViewerListGrantsID,
|
||||
unifiedrole.UnifiedRoleEditorListGrantsID,
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
|
||||
provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1"
|
||||
libregraph "github.com/opencloud-eu/libre-graph-api-go"
|
||||
|
||||
"github.com/opencloud-eu/reva/v2/pkg/conversions"
|
||||
)
|
||||
|
||||
@@ -210,6 +211,8 @@ func cs3RoleToDisplayName(role *conversions.Role) string {
|
||||
return _viewerListGrantsUnifiedRoleDisplayName
|
||||
case conversions.RoleSpaceViewer:
|
||||
return _spaceViewerUnifiedRoleDisplayName
|
||||
case conversions.RoleSpaceViewerWithVersions:
|
||||
return _spaceViewerWithVersionsUnifiedRoleDisplayName
|
||||
case conversions.RoleEditor:
|
||||
return _editorUnifiedRoleDisplayName
|
||||
case conversions.RoleEditorWithVersions:
|
||||
|
||||
@@ -71,7 +71,7 @@ func TestCS3ResourcePermissionsToRole(t *testing.T) {
|
||||
cs3Conversions.RoleFileEditorWithVersions: {cs3Conversions.NewFileEditorWithVersionsRole().CS3ResourcePermissions(), unifiedrole.RoleFileEditorWithVersions, unifiedrole.UnifiedRoleConditionFile},
|
||||
cs3Conversions.RoleManager: {cs3Conversions.NewManagerRole().CS3ResourcePermissions(), unifiedrole.RoleManager, unifiedrole.UnifiedRoleConditionDrive},
|
||||
cs3Conversions.RoleSpaceViewer: {cs3Conversions.NewSpaceViewerRole().CS3ResourcePermissions(), unifiedrole.RoleSpaceViewer, unifiedrole.UnifiedRoleConditionDrive},
|
||||
cs3Conversions.RoleSpaceEditor: {cs3Conversions.NewSpaceEditorRole().CS3ResourcePermissions(), unifiedrole.RoleSpaceEditor, unifiedrole.UnifiedRoleConditionDrive},
|
||||
cs3Conversions.RoleSpaceEditor: {cs3Conversions.NewSpaceEditorRole().CS3ResourcePermissions(), unifiedrole.RoleSpaceEditorWithVersions, unifiedrole.UnifiedRoleConditionDrive},
|
||||
cs3Conversions.RoleSecureViewer + "1": {cs3Conversions.NewSecureViewerRole().CS3ResourcePermissions(), unifiedrole.RoleSecureViewer, unifiedrole.UnifiedRoleConditionFile},
|
||||
cs3Conversions.RoleSecureViewer + "2": {cs3Conversions.NewSecureViewerRole().CS3ResourcePermissions(), unifiedrole.RoleSecureViewer, unifiedrole.UnifiedRoleConditionFolder},
|
||||
cs3Conversions.RoleDenied: {cs3Conversions.NewDeniedRole().CS3ResourcePermissions(), unifiedrole.RoleDenied, unifiedrole.UnifiedRoleConditionFolder},
|
||||
|
||||
@@ -1,22 +1,23 @@
|
||||
package unifiedrole
|
||||
|
||||
var (
|
||||
RoleViewer = roleViewer
|
||||
RoleViewerWithVersions = roleViewerWithVersions
|
||||
RoleViewerListGrants = roleViewerListGrants
|
||||
RoleSpaceViewer = roleSpaceViewer
|
||||
RoleEditor = roleEditor
|
||||
RoleEditorWithVersions = roleEditorWithVersions
|
||||
RoleEditorListGrants = roleEditorListGrants
|
||||
RoleSpaceEditor = roleSpaceEditor
|
||||
RoleSpaceEditorWithoutVersions = roleSpaceEditorWithoutVersions
|
||||
RoleFileEditor = roleFileEditor
|
||||
RoleFileEditorWithVersions = roleFileEditorWithVersions
|
||||
RoleFileEditorListGrants = roleFileEditorListGrants
|
||||
RoleEditorLite = roleEditorLite
|
||||
RoleManager = roleManager
|
||||
RoleSecureViewer = roleSecureViewer
|
||||
RoleDenied = roleDenied
|
||||
RoleViewer = roleViewer
|
||||
RoleViewerWithVersions = roleViewerWithVersions
|
||||
RoleViewerListGrants = roleViewerListGrants
|
||||
RoleSpaceViewer = roleSpaceViewer
|
||||
RoleSpaceViewerWithVersions = roleSpaceViewerWithVersions
|
||||
RoleEditor = roleEditor
|
||||
RoleEditorWithVersions = roleEditorWithVersions
|
||||
RoleEditorListGrants = roleEditorListGrants
|
||||
RoleSpaceEditor = roleSpaceEditor
|
||||
RoleSpaceEditorWithVersions = roleSpaceEditorWithVersions
|
||||
RoleFileEditor = roleFileEditor
|
||||
RoleFileEditorWithVersions = roleFileEditorWithVersions
|
||||
RoleFileEditorListGrants = roleFileEditorListGrants
|
||||
RoleEditorLite = roleEditorLite
|
||||
RoleManager = roleManager
|
||||
RoleSecureViewer = roleSecureViewer
|
||||
RoleDenied = roleDenied
|
||||
|
||||
BuildInRoles = buildInRoles
|
||||
|
||||
|
||||
@@ -6,9 +6,10 @@ import (
|
||||
"strings"
|
||||
|
||||
libregraph "github.com/opencloud-eu/libre-graph-api-go"
|
||||
"github.com/opencloud-eu/reva/v2/pkg/conversions"
|
||||
"google.golang.org/protobuf/proto"
|
||||
|
||||
"github.com/opencloud-eu/reva/v2/pkg/conversions"
|
||||
|
||||
"github.com/opencloud-eu/opencloud/pkg/l10n"
|
||||
graphl10n "github.com/opencloud-eu/opencloud/services/graph/pkg/l10n"
|
||||
)
|
||||
@@ -22,6 +23,8 @@ const (
|
||||
UnifiedRoleViewerListGrantsID = "d5041006-ebb3-4b4a-b6a4-7c180ecfb17d"
|
||||
// UnifiedRoleSpaceViewerID Unified role space viewer id.
|
||||
UnifiedRoleSpaceViewerID = "a8d5fe5e-96e3-418d-825b-534dbdf22b99"
|
||||
// UnifiedRoleSpaceViewerWithVersionsID
|
||||
UnifiedRoleSpaceViewerWithVersionsID = "3de465fc-6e17-4839-8b8a-a77cc497878b"
|
||||
// UnifiedRoleEditorID Unified role editor id.
|
||||
UnifiedRoleEditorID = "fb6c3e19-e378-47e5-b277-9732f9de6e21"
|
||||
// UnifiedRoleEditorWithVersionsID
|
||||
@@ -121,6 +124,12 @@ var (
|
||||
// UnifiedRole SpaseViewer, Role DisplayName (resolves directly)
|
||||
_spaceViewerUnifiedRoleDisplayName = l10n.Template("Can view")
|
||||
|
||||
// UnifiedRole SpaceViewer, Role Description (resolves directly)
|
||||
_spaceViewerWithVersionsUnifiedRoleDescription = l10n.Template("View and download including the history.")
|
||||
|
||||
// UnifiedRole SpaseViewer, Role DisplayName (resolves directly)
|
||||
_spaceViewerWithVersionsUnifiedRoleDisplayName = l10n.Template("Can view")
|
||||
|
||||
// UnifiedRole Editor, Role Description (resolves directly)
|
||||
_editorUnifiedRoleDescription = l10n.Template("View, download, upload, edit, add and delete.")
|
||||
|
||||
@@ -214,11 +223,12 @@ var (
|
||||
roleViewerWithVersions,
|
||||
roleViewerListGrants,
|
||||
roleSpaceViewer,
|
||||
roleSpaceViewerWithVersions,
|
||||
roleEditor,
|
||||
roleEditorListGrants,
|
||||
roleEditorWithVersions,
|
||||
roleSpaceEditorWithVersions,
|
||||
roleSpaceEditor,
|
||||
roleSpaceEditorWithoutVersions,
|
||||
roleFileEditor,
|
||||
roleFileEditorWithVersions,
|
||||
roleFileEditorListGrants,
|
||||
@@ -345,6 +355,23 @@ var (
|
||||
}
|
||||
}()
|
||||
|
||||
// roleSpaceViewer creates a spaceviewer role
|
||||
roleSpaceViewerWithVersions = func() *libregraph.UnifiedRoleDefinition {
|
||||
r := conversions.NewSpaceViewerWithVersionsRole()
|
||||
return &libregraph.UnifiedRoleDefinition{
|
||||
Id: proto.String(UnifiedRoleSpaceViewerWithVersionsID),
|
||||
Description: proto.String(_spaceViewerWithVersionsUnifiedRoleDescription),
|
||||
DisplayName: proto.String(cs3RoleToDisplayName(r)),
|
||||
RolePermissions: []libregraph.UnifiedRolePermission{
|
||||
{
|
||||
AllowedResourceActions: CS3ResourcePermissionsToLibregraphActions(r.CS3ResourcePermissions()),
|
||||
Condition: proto.String(UnifiedRoleConditionDrive),
|
||||
},
|
||||
},
|
||||
LibreGraphWeight: proto.Int32(40),
|
||||
}
|
||||
}()
|
||||
|
||||
// roleEditorLite creates an editor-lite role
|
||||
roleEditorLite = func() *libregraph.UnifiedRoleDefinition {
|
||||
r := conversions.NewEditorLiteRole()
|
||||
@@ -420,8 +447,8 @@ var (
|
||||
}
|
||||
}()
|
||||
|
||||
// roleSpaceEditorWithoutVersions creates an editor without versions role
|
||||
roleSpaceEditorWithoutVersions = func() *libregraph.UnifiedRoleDefinition {
|
||||
// roleSpaceEditor creates an editor without versions role
|
||||
roleSpaceEditor = func() *libregraph.UnifiedRoleDefinition {
|
||||
r := conversions.NewSpaceEditorWithoutVersionsRole()
|
||||
return &libregraph.UnifiedRoleDefinition{
|
||||
Id: proto.String(UnifiedRoleSpaceEditorWithoutVersionsID),
|
||||
@@ -437,8 +464,8 @@ var (
|
||||
}
|
||||
}()
|
||||
|
||||
// roleSpaceEditor creates an editor role
|
||||
roleSpaceEditor = func() *libregraph.UnifiedRoleDefinition {
|
||||
// roleSpaceEditorWithVersions creates an editor role
|
||||
roleSpaceEditorWithVersions = func() *libregraph.UnifiedRoleDefinition {
|
||||
r := conversions.NewSpaceEditorRole()
|
||||
return &libregraph.UnifiedRoleDefinition{
|
||||
Id: proto.String(UnifiedRoleSpaceEditorID),
|
||||
|
||||
@@ -38,6 +38,10 @@ func TestGetDefinition(t *testing.T) {
|
||||
ids: []string{unifiedrole.UnifiedRoleFileEditorWithVersionsID},
|
||||
unifiedRoleDefinition: unifiedrole.RoleFileEditorWithVersions,
|
||||
},
|
||||
"pass space-viewer-with-versions": {
|
||||
ids: []string{unifiedrole.UnifiedRoleSpaceViewerWithVersionsID},
|
||||
unifiedRoleDefinition: unifiedrole.RoleSpaceViewerWithVersions,
|
||||
},
|
||||
"fail unknown": {
|
||||
ids: []string{"unknown"},
|
||||
expectError: unifiedrole.ErrUnknownRole,
|
||||
@@ -203,8 +207,9 @@ func TestGetRolesByPermissions(t *testing.T) {
|
||||
constraints: unifiedrole.UnifiedRoleConditionDrive,
|
||||
unifiedRoleDefinition: []*libregraph.UnifiedRoleDefinition{
|
||||
unifiedrole.RoleSpaceViewer,
|
||||
unifiedrole.RoleSpaceEditorWithoutVersions,
|
||||
unifiedrole.RoleSpaceViewerWithVersions,
|
||||
unifiedrole.RoleSpaceEditor,
|
||||
unifiedrole.RoleSpaceEditorWithVersions,
|
||||
unifiedrole.RoleManager,
|
||||
},
|
||||
},
|
||||
|
||||
@@ -33,6 +33,10 @@ var themeDefaults = KV{
|
||||
"label": "UnifiedRoleSpaceViewer",
|
||||
"iconName": "eye",
|
||||
},
|
||||
unifiedrole.UnifiedRoleSpaceViewerWithVersionsID: KV{
|
||||
"label": "UnifiedRoleSpaceViewerWithVersions",
|
||||
"iconName": "eye",
|
||||
},
|
||||
unifiedrole.UnifiedRoleFileEditorID: KV{
|
||||
"label": "UnifiedRoleFileEditor",
|
||||
"iconName": "pencil",
|
||||
|
||||
Reference in New Issue
Block a user