Commit Graph

518 Commits

Author SHA1 Message Date
Jörn Friedrich Dreyer
1c9da9a0be verify all system accounts are set
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
(cherry picked from commit 972adafd29)
2024-03-12 16:36:09 +01:00
Phil Davis
22c19472de chore: set introductionVersion 5.0 in services/graph 2024-03-07 13:51:37 +05:45
Phil Davis
d27e33a1bd chore: add introductionVersion pre5.0 to environment variable docs 2024-03-07 13:51:37 +05:45
Ralf Haferkamp
a6feca1edf docs: Add missing doc comments
(cherry picked from commit 954998a1561ed9863642c9b4b5fd6732ad0bd7dd)
2024-02-28 17:42:54 +01:00
Ralf Haferkamp
92b1f768b4 fix: Remove unneeded code
errors.Join(errs...) ignores nil errors and returns nil if there are not errors.

(cherry picked from commit f5a282c13e4245fb29e7e7217889878a4efb99ce)
2024-02-28 17:42:54 +01:00
Ralf Haferkamp
696b7b7a8d enhancement(sharing): Check driveID when unmounting share
Only accept requests against the shareJail driveID

(cherry picked from commit 64f6c147dd55f1ede79f1709e09817939fcc4387)
2024-02-28 17:42:54 +01:00
Ralf Haferkamp
693bc7b38f Fix typos
(cherry picked from commit 10babaf4c527d91825f70cea68065f44dc01b8da)
2024-02-28 17:42:54 +01:00
Ralf Haferkamp
bb5e1bac35 enhancement(sharing): allow unmounting a share
(cherry picked from commit 35acae10a3d1a7370115f3444e433af2df7e5346)
2024-02-28 17:42:54 +01:00
Ralf Haferkamp
ebcca0e678 enhancement(sharing): Return newly created driveItem
When accepting a share via 'POST /v1beta1/drives/{driveId}/root/children'
return the newly created driveItem. This driveItem wraps the accepted
remoteItem representing the shared resource (similar to the
'sharedWithMe' response.

This also refactors some of the helpers for user lookup and CS3 share to
driveItem conversion so they can be more easily shared.

(cherry picked from commit 7edc2febba4cd039c885a748d8f0e70610c2a147)
2024-02-28 17:42:54 +01:00
Ralf Haferkamp
d005bb858b enhancement(sharing): Simplify route for accepting shares
In theory creating the driveItem to accepting a shared resource
can be done via '/v1beta1/drives/{drive-id}/item/{item-id}/children'
but there is also the simplified variant via
'/v1beta1/drives/{drive-id}/root/children' (aligned with the example
in the spec). For now we'll just implement the latter because accepting
a share will always be done via root of the sharejail drive.

(cherry picked from commit c8a89e92f1ad662b6931bd8089795228e8492ae6)
2024-02-28 17:42:54 +01:00
Ralf Haferkamp
e959faf9da enhancement(graph): refrain from registering routes via the Router interface
After some back an forth we agreed on keeping the routes defined
in a central place for now.

(cherry picked from commit e7985f42b6edf92f0a4344d4f3f8c5e28c23e276)
2024-02-28 17:42:54 +01:00
Ralf Haferkamp
059a77edf3 fix(graph): Remove duplicated routes from router
(cherry picked from commit 54226aee7b594524967a470fcdfa51d66ff8abfd)
2024-02-28 17:42:54 +01:00
Florian Schade
321c692ff4 test: add more tests for the DrivesDriveItemService implementation
(cherry picked from commit d48da968af116102b21f1f4397d3f589adbc8ce1)
2024-02-28 17:42:54 +01:00
Florian Schade
c5bdc5d595 test: improve graph share accept/decline test coverage
(cherry picked from commit 5c3972530eb19a27f24ecfcb7ff0f42682e7b49c)
2024-02-28 17:42:54 +01:00
Florian Schade
8d5beee430 enhancement: add DrivesDriveItemApi DeleteDriveItem tests
(cherry picked from commit c10d7dd84bd3cda0270f25356b9931c47be7b889)
2024-02-28 17:42:54 +01:00
Florian Schade
43a6d5569f enhancement: add basic share unmount
(cherry picked from commit 877f233bf1d40346f3cb5e2114b5cd0fb464b460)
2024-02-28 17:42:54 +01:00
Florian Schade
a61adbc85b enhancement: handle share mount errors
(cherry picked from commit 92fc17d1bbc9b7d094fa89f7553aa4f11cc42f3d)
2024-02-28 17:42:54 +01:00
Florian Schade
cb43cbaee4 enhancement: make use of body driveItem for graph share accept
(cherry picked from commit 796233c8d5a03f90ec49bf6cc2737036373e616d)
2024-02-28 17:42:54 +01:00
Florian Schade
50ea1f46e7 enhancement: add basic share accept feature, error handling and detailed implementation still missed
(cherry picked from commit a5b70b3d7a7d4471f97643e5a6ad0a4de12f2b03)
2024-02-28 17:42:54 +01:00
Florian Schade
7e07254556 feature(sharing): add endpoints to accept or decline a share
(cherry picked from commit 795d0fcc619947db135025191b421bf5dac20e5e)
2024-02-28 17:42:54 +01:00
Ralf Haferkamp
b6fea0faed [full-ci] fix(sharing-ng): align sharedWithMe driveItem IDs with PROPFIND response (#8467)
* Bump reva

Fixes: #8080

* fix(sharing-ng): align sharedWithMe driveItem IDs

The IDs of the driveItems returned by the 'sharedWithMe' endpoint
should match the ids returned by the webdav PROPFIND response on
the share jail.

Fixes: #8420
2024-02-21 13:25:49 +01:00
Ralf Haferkamp
3d3f8949f5 Bump mockery to 2.40.2
to address issues when building with go1.22:
https://github.com/vektra/mockery/pull/753
2024-02-09 11:48:45 +01:00
Roman Perekhod
fb5f29c537 fix the bug when the expiration dates can't be removed from link permissions 2024-02-09 10:38:40 +01:00
mmattel
6e721eb4f5 [docs-only] Fix envvar descriptions trailing a double dot 2024-02-06 11:52:10 +01:00
Ralf Haferkamp
07860ef8e7 Fix some fallout of recent mockery changes (#8341)
* Fix mockery setup for graph service

Add missing interfaces to .mockery.yaml. Use existing mocks from protogen
where possible. Remove remaining //go:generate call.

* Add mockery config for settings service

* Add mockery config for proxy service
2024-02-01 21:09:01 +01:00
Ralf Haferkamp
36eff3b280 graph/sharedWithMe: Fix 'createdBy' attribute for resources from project spaces
Don't return a meaningless userid anymore for shares created from files or directories
in a project space. These resources don't have a real owner.

Fixes: #8314
2024-02-01 15:38:55 +01:00
Ralf Haferkamp
857125577f graph/sharedWithMe: return shares for the same resource as a single driveItem
- multiple shares for the same resource are now returned as a single driveItem
- the id for that driveItem is for now based on the resourceId of the shared item
  {sharesstorageproviderid}${sharejailid}!{resourceid of shared item}
- each share is exposed as a separate permission on the remoteId
- the permission now has an invitation property which provides the id of the creator
  of the share
- the client.synchronize flag is now exposed on the top-level driveitem. If at
  least on share of a resource is in accepted state the client.synchronize flag
  will be set to true.
- the UI.Hidden flag is now exposed on the top-level driveitem. If at least on
  share of a resource is marked as hidden the UI.Hidden flag will be set to
  true.
- the 'shared' property is no longer available (the relevant information from that
  moved to the 'invitation' property of the individual permissions.
2024-02-01 15:38:55 +01:00
Ralf Haferkamp
8e01d58909 graph/sharedWithMe: Adjust the driveItem's ID once more
In order to be able to group shares received for the same resource in a single driveItem
the driveItem's ID needs to be unrelated to the underlying shares' ids. We decided to base
it off of the shared resource's id (currently
{sharesstorageproviderid}${sharejailid}!{resourceid of shared item})
2024-02-01 15:38:55 +01:00
Jörn Friedrich Dreyer
fad94d2038 bump mockery, add test stub for oidc_auth.go, align mock generation (#8321)
* bump mockery, add test stub for oidc_auth.go

Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>

* use .mockery.yaml for all mocks

Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>

* drop legacy go:generate mockery

Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>

* align mock placement

Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>

---------

Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2024-02-01 10:07:44 +01:00
Florian Schade
ac878e1399 fix: graph api sharing parentReference path (#8307)
* fix: graph api sharing parentReference path

* Update services/graph/pkg/service/v0/driveitems.go

Co-authored-by: Jörn Friedrich Dreyer <jfd@butonic.de>

---------

Co-authored-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2024-01-30 12:01:54 +01:00
Florian Schade
63f244bd60 enhancement: add parent name and path to shared the shared by me endpoint (#8293) 2024-01-26 12:34:20 +01:00
Jörn Friedrich Dreyer
48610091ad set size when starting an upload session via graph (#8288)
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2024-01-25 22:00:12 +01:00
Ralf Haferkamp
da495fd306 graph/sharing: Fix role condition for space roots
When computing the allowed roles for a spaceroot use the correct conditions.
Spaceroots require '@Subject.objectId Any_of @Resource.owners'.

Note: Updating or deleting the permissions on a spaceroot via
'v1beta1/drives/{driveid}/items/{itemid}/permissions/{permissionid}' does still
not work.
2024-01-24 17:03:00 +01:00
Ralf Haferkamp
d9fc4af575 graph/sharing: Add check for role conditions
Use the condition from the unifiedrole to check if the requested role
is actually applicable to the selected resource.

Fixes: #8131
2024-01-24 17:03:00 +01:00
Ralf Haferkamp
f38f940d22 graph/sharing: Fix role conditions for Space specific sharing roles
Co-Owner and Manager are space specific roles. They need the UnifiedRoleConditionOwner.
2024-01-24 17:03:00 +01:00
Ralf Haferkamp
f3ed318d9d graph/drives: Fix status code for PATCH/DELETE on drives don't allow them
Return a 405 Status when UpdateSpace() or DeleteSpace() are not implemented
in the backend for a certain type of drive (e.g. the virtual mountpoint drives
created for shares).

Fixes: #7881
2024-01-22 14:04:38 +01:00
Ralf Haferkamp
0e1b5dd989 graph/sharedWitMe: fix response for shares from project space
Resources on project space do not have a real owner assigned. A special
of the type USER_TYPE_SPACE_OWNER is returned as the owner. This type of
user can't be looked up via a GetUser request. So we skip that call for
this usertype.

This also fixes the behavior of 'sharedWithMe' for case when the owner
or creator of a share or shared resource can't be looked up in the 'users'
service. Previously cause the complete request to fail with an error message.
So a single share with an unresolvable owner caused 'sharedWithMe' to fail.
Now we log a warning but return all shares. Those where the owner or creator
couldn't be resolved will have the 'displayName' field of the user in the
'remoteItem.shared.owner' or 'remoteItem.shared.sharedBy' property left
empty.

Fixes: #8215
Fixes: #8027
2024-01-19 09:01:33 +01:00
jkoberg
a4d71134f5 remove unused parameter
Signed-off-by: jkoberg <jkoberg@owncloud.com>
2024-01-17 13:21:28 +01:00
jkoberg
386e37cbdc cleanup graph/.../driveitems.go
Signed-off-by: jkoberg <jkoberg@owncloud.com>
2024-01-17 11:58:56 +01:00
Ralf Haferkamp
3cc485a0fc graph/sharewithme: add unit test for 'remoteitem.permissions' property 2024-01-16 15:09:27 +01:00
Ralf Haferkamp
2c161881ba graph/sharedWithMe: Fix 'parentReference' on 'driveItem'
The outer parentreference should refer to the drive containing the mountpoint.
In our case this is the storagespaceid of the virtual share jail.

Also 'CreatedBy' should be the same as on the wrapped remote item. Not the share creator.
2024-01-16 15:09:27 +01:00
Ralf Haferkamp
eab501f593 graph/sharedwithme: move flags from 'remoteItem' back into 'permissions' 2024-01-16 15:09:27 +01:00
Ralf Haferkamp
5bfc943a0c graph/sharedWithMe: Renable and adjust unit test for recent changes 2024-01-16 15:09:27 +01:00
Ralf Haferkamp
b5af346384 bugfix: graph/sharedWithMe fix shared.Owner property
The value of driveItem.remoteItem.shared.Owner should match the owner property
of the received share not the owner property of the resourceInfo.
2024-01-16 15:09:27 +01:00
Ralf Haferkamp
03e704c291 graph/sharedWithMe: Set the permission property only on the wrapped remoteItem
Sematically the outer driveItem shouldn't carryt the permission. It's the `remoteItem`
that reflects the grantee's permissions.
2024-01-16 15:09:27 +01:00
Ralf Haferkamp
dd61270e7d graph/sharedWithMe: separate method for converting CS3 share to libregraph
For readability and reduced complexity of the sharedWithMe method. It was getting
too large already.
2024-01-16 15:09:27 +01:00
Florian Schade
cfba9f29cc enhancement: make use uo remote item ui hidden and client synchronized 2024-01-16 15:09:27 +01:00
Florian Schade
b91bc535a8 enhancement: simplify sharedWithMe
- remove unnecessary stat for accepted items
- only display permission actions if the role cannot be resolved
- add permission user and group displayName
2024-01-16 15:09:27 +01:00
Florian Schade
0b796443f2 enhancement: add ui hidden and client synced prop 2024-01-16 15:09:27 +01:00
Florian Schade
8c6ba9c360 fix: shared with me listing 2024-01-16 15:09:27 +01:00