Commit Graph
52 Commits
Author SHA1 Message Date
Florian SchadeandGitHub ad06a192d8 enhancement: add graph beta listPermissions endpoint (#7753)
* enhancement: add graph beta listPermissions endpoint

besides the new api endpoint it includes several utilities to simplify the graph api development.

* resolve drive and item id from the request path
* generic pointer and value utilities
* space root detection

* update GetDriveAndItemIDParam signature to return a error

* move errorcode package

* enhancement: add generic error code handling

* fix: rebase
2023-11-28 17:06:04 +01:00
Florian Schade 170021a38e chore: go version bump to 1.21 2023-11-23 14:52:01 +01:00
a6b75bc9f6 fix libre-graph status codes (#7705)
* fix libre-graph status codes

* owncloud-test-middleware bumped

---------

Co-authored-by: Roman Perekhod <rperekhod@owncloud.com>
2023-11-15 17:45:23 +01:00
Christian RichterandFlorian Schade fde6a4b67a [Experiment] Remove language object from GetUser
Co-authored-by: Florian Schade <fschade@owncloud.com>

Signed-off-by: Christian Richter <crichter@owncloud.com>
2023-11-15 13:36:35 +01:00
15699f02b8 Incorporate requested changes
Co-authored-by: Julian Koberg <jkoberg@owncloud.com>
Co-authored-by: Ralf Haferkamp <rhaferkamp@owncloud.com>
Co-authored-by: Michael Barz <mbarz@owncloud.com>
Signed-off-by: Christian Richter <crichter@owncloud.com>
2023-11-15 13:22:51 +01:00
5e02658873 Fix wrong variable
Signed-off-by: Christian Richter <crichter@owncloud.com>
Co-authored-by: Julian Koberg <jkoberg@owncloud.com>
Co-authored-by: Ralf Haferkamp <rhaferkamp@owncloud.com>
2023-11-15 11:23:24 +01:00
Christian Richter 1e34e43c10 Add language to PostUser, allow admin to read user values
Signed-off-by: Christian Richter <crichter@owncloud.com>
2023-11-15 11:23:24 +01:00
Christian Richter 407238efa5 incorporate requested changes
Signed-off-by: Christian Richter <crichter@owncloud.com>
2023-11-15 11:23:24 +01:00
Christian Richter c5d3b74cd4 filter out unallowed fields in changes
Signed-off-by: Christian Richter <crichter@owncloud.com>
2023-11-15 11:23:24 +01:00
e2e1d1da44 fix(graph users test): provide proto list value example on how to set language
Co-authored-by: Florian Schade <fschade@owncloud.com>
Signed-of-by: Christian Richter <crichter@owncloud.com>
2023-11-15 11:23:24 +01:00
174097214f Persist preferred language for user
Signed-off-by: Christian Richter <crichter@owncloud.com>
Co-authored-by: Julian Koberg <jkoberg@owncloud.com>
Co-authored-by: Michael Barz <mbarz@owncloud.com>
2023-11-15 11:23:24 +01:00
Daniël Franke 952ebe7d7d Pass context to event publishing.
To allow tracing propagation via events, we need to pass the context
to the `Publish` function of reva events. This adds the context
everywhere where events are published. If there was no context to pass,
we started a new one with `context.Background()`.
2023-08-11 12:01:19 +02:00
Christian RichterandJulian Koberg c4f9f18a39 Show changes between old an new values in audit log
Co-authored-by: Julian Koberg <jkoberg@owncloud.com>
Signed-off-by: Christian Richter <crichter@owncloud.com>
2023-06-16 10:52:37 +02:00
Roman PerekhodandRalf Haferkamp df5641f406 cleared up the errors rendering 2023-06-12 09:19:54 +02:00
4f26424db6 [full-ci] enhancement: use reva client pool selectors (#6452)
* enhancement: use reva client pool selectors

register mock service to registry and pass tests

* enhancement: bump reva

* Fix a couple of linter issues

---------

Co-authored-by: Ralf Haferkamp <rhaferkamp@owncloud.com>
2023-06-08 12:41:04 +02:00
Roman Perekhod 1ac49dfd64 Fix the username validation when an admin update the user 2023-06-06 17:15:38 +02:00
Ralf Haferkamp 0726f1b143 graph/users: Sanitize some log levels
The "calling function XYZ" log messages should only appear at debug level.
Message indicating client errors when creating a user (e.g. invalid characters
in username or missing attributes) are logged at info level (instead of debug)
now.
2023-05-24 17:17:15 +02:00
Ralf HaferkampandRalf Haferkamp 77e773515d graph/users: gracefully handle PATCH requests with empty bodies
Return as success status code when the PATCH request comes with an empty
body. This is mainly to workaround issues like:
https://github.com/owncloud/web/issues/8946
2023-05-03 09:32:05 +02:00
e0b6ca0e29 [tests-only][full-ci] api test to get personal drive information of other users (#6018)
* api test to get personal drive information of other users

* fix the broken personal drive listing

* removed scenario from expected failure after issue fixed

---------

Co-authored-by: Michael Barz <mbarz@owncloud.com>
2023-04-21 16:59:16 +05:45
Daniel SwärdandRalf Haferkamp 620940ec3f graph: Add strict json decoding to return errors when receiving unknown parameters 2023-04-03 15:39:23 +02:00
Ralf HaferkampandRalf Haferkamp 81c0f21f78 graph: Allow to disable the default role assignment on user creation
Introduces a switch ('GRAPH_ASSIGN_DEFAULT_USER_ROLE') to allow to disable the assignment of the default role "User" to newly created users.
This will be used for setups where the role-assignments are populated either manually or during first login (e.g. from OIDC claims)
2023-03-15 15:42:57 +01:00
Daniel SwärdandRalf Haferkamp 23ba180e8a graph: Use userType property to distinguish between Member and Guest accounts
Fixes 5603

- Calling POST /graph/v1.0/users with userType not set will create a user as "Member"
- Calling POST /graph/v1.0/users with userType set as "Member" or "Guest" will create a user as "Member" or "Guest"
- Calling POST /graph/v1.0/users with userType set as anything but "Member" or "Guest" returns error
- Calling POST /graph/v1.0/education/users with userType not set will create a user as "Member"
- Calling POST /graph/v1.0/education/users with userType set as "Member" will create a user as "Member" and primary role as parameter specifies
- Calling POST /graph/v1.0/education/users with userType set as "Guest" will create a user as "Guest" and primary role as parameter specifies
- Calling POST /graph/v1.0/education/users with userType not set as anything but "Member" or "Guest" returns error
- Calling PATCH on /users or /education/users will update attribute in the same way as for POST
2023-03-15 12:05:29 +01:00
Ralf HaferkampandGitHub b7ec7c92c4 graph: Initial support for $filter in /users (#5533)
This adds some initial support for using $filter (as defined in the
odata spec) on the /users endpoint. Currently the following filters are
supported:

A single filter on `id` property of the `memberOf` relation of users.
To list all users that are members of a specific group:

```
curl 'https://localhost:9200/graph/v1.0/users?$filter=memberOf/any(m:m/id eq '262982c1-2362-4afa-bfdf-8cbfef64a06e')
```

A logical AND filteri on the `id` property of the `memberOf` relation of users.

`$filter=memberOf/any(m:m/id eq 262982c1-2362-4afa-bfdf-8cbfef64a06e) and memberOf/any(m:m/id eq 6040aa17-9c64-4fef-9bd0-77234d71bad0)`

This will cause at least two queries on the identity backend. The `and`
operation is performed locally.

Closes: #5487
2023-02-14 10:32:32 +01:00
Jörn Friedrich DreyerandGitHub fc95edb914 allow GETing a users personal drive (#5539)
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2023-02-10 14:17:19 +01:00
Ralf HaferkampandRalf Haferkamp 26f7523ff8 graph: Pass parsed odata request to the identity backend
In preparation for some more advanced queries pass the parse odata request
tVo the identity backend methods instead of the raw url.Values{}. This also
add some helpers for validating $expand and $search queries to reject
some unsupported queries.

Also remove support for `$select=memberOf` and `$select=drive|drives` queries
and stick to the technically correct `$expand=...`.
2023-02-08 14:25:55 +01:00
Jörn Friedrich DreyerandGitHub aa12a60d16 fix populating user drive and drives (#5426)
* fix populating user drive and drives

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

* update changelog

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

* fix test condition

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

Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2023-01-26 11:54:32 +01:00
Daniel SwärdandRalf Haferkamp c79d4ec241 graph: Allow creating users without email (#5253) 2023-01-23 15:20:32 +01:00
Jörn Friedrich DreyerandGitHub 52b7f41624 Populate expanded properties (#5421)
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>

Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2023-01-18 15:51:53 +01:00
Daniel SwärdandRalf Haferkamp 96239af982 graph: Allow provisioning users with legacy names (#5255)
Via configuration you can now configure to skip the validation of username and
instead decide to trust the upstream system that is adding users.
2023-01-18 12:25:53 +01:00
078698fdf4 graph: add appRoleAssignments and minimal application resource (#5318)
* bump libregraph-go lib

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

* add appRoleAssignment stubs

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

* add get application stub

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

* fetch appRoles for application from settings service

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

* initial list appRoleAssignments implementation

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

* initial create appRoleAssignment implementation, extract assignmentToAppRoleAssignment, configurable app id and displayname

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

* initial delete appRoleAssignment implementation, changed error handling and logging

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

* initial expand appRoleAssignment on users

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

* test user expand appRoleAssignment

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

* test appRoleAssignment

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

* fix education test by actually using the mocked roleManager

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

* test getapplication

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

* list assignments

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

* use common not exists error handling

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

* default to just 'ownCloud Infinite Scale' as application name

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

* fix store_test

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

* roll application uuid on init

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

* fix tests

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

* extract method

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

* Apply suggestions from code review

Co-authored-by: Michael Barz <mbarz@owncloud.com>

Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
Co-authored-by: Michael Barz <mbarz@owncloud.com>
2023-01-12 16:09:34 +01:00
Ralf HaferkampandRalf Haferkamp 4717248959 Simplify sort code a bit
Switch to sort.Slice() instead of sort.Sort(), which requires less
boilerplate.
2023-01-10 09:31:40 +01:00
Jörn Friedrich DreyerandRalf Haferkamp 57fd00d238 handle /education/user
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2022-12-21 15:38:14 +01:00
David Christofas 39917330f6 fix goconst bugs 2022-12-21 14:46:01 +01:00
Jörn Friedrich DreyerandGitHub d359a7c2cf [full-ci] standalone graph service with LDAP (#5199)
* standalone graph service with LDAP

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

* no panic on PATCH and DELETE

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

* fix apitoken yaml key

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

* update user, fix response codes

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

* fix group creation return code

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

* remove unknown user property

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

* fix create return code checks in graph feature context

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

* updating uses 200 OK when returning a body

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

* revert user statusCreated change for now

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

* revert return code changes

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

Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2022-12-12 12:46:10 +01:00
Jörn Friedrich DreyerandGitHub b2b4f9893c align revactx package import (#5206)
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>

Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2022-12-08 14:45:30 +01:00
Andre DuffeckandGitHub 0dc6eaf466 Graph test coverage (#5136)
* Add unit tests for users.go

* Do not choke on broken spaces

* Generate mocks for the RoleService

* Increase test coverage

* Increase test coverage
2022-11-29 10:22:40 +01:00
Andre DuffeckandGitHub 7c2961e18a Graph test coverage (#5098)
* First iteration of a groups test

* Do not render a result in case of an error

* Generate mocks for identity.Backend

* Export listResponse (-> ListResponse)

* Add unit tests for GetGroups

* Finish GetGroups unit tests

* Increase test coverage

* Increase test coverage

* Increase test coverage

* Add missing mocks

* Fix return codes

* Fix error messages
2022-11-23 14:01:29 +01:00
Michael Barz 0b7297d1b4 harden drives api and improve logging 2022-10-16 00:38:44 +02:00
Ralf Haferkamp cc53071f63 Forbid to remove own user account
And admin user is no longer allowed to remove its own user account.
This to prevent admins from locking themselves out.

Fixes: #3713
2022-09-23 09:13:46 +02:00
Ralf Haferkamp f43a233795 Fix home space deletion when deleting user by name
DELETE requess on /graph/v1.0/users also work when specifing a user by
name. For deleting the home space in that case we need to get the User's
id from the backend first.

Fixes: #4195
2022-09-07 18:13:41 +02:00
Ralf Haferkamp e4f9dfa40e graph: purge home space when deleting a user
previously the homespace was just marked as trashed

Fixes: #4195
2022-09-07 14:25:27 +02:00
David ChristofasandGitHub 2051f0d1e1 Merge pull request #4447 from dragonchaser/delete_userspace
Delete userspace
2022-09-02 14:41:57 +02:00
David Christofas e36cd4fa7f add returns after rendering errors and simplify loop condition 2022-09-02 11:54:17 +02:00
Ralf HaferkampandRalf Haferkamp a26b16c41d graph: Add $expand=memberOf support to /me
Fixes: #4283
2022-08-31 07:43:27 +02:00
Christian Richter 6a9d4efef6 add delete home space permission to admin role
Signed-off-by: Christian Richter <crichter@owncloud.com>
2022-08-30 11:09:05 +02:00
Christian Richter 05a60fd3a5 add home space deletion on user delete
Signed-off-by: Christian Richter <crichter@owncloud.com>
2022-08-26 15:00:55 +02:00
Michael Barz 67b52bbd55 add expand query for personal drive 2022-08-08 16:43:59 +02:00
Michael Barz cb7d024d89 fix listing of drives and quota 2022-08-03 12:50:00 +02:00
Christian Richter a030459c70 incorporate requested changes
Signed-off-by: Christian Richter <crichter@owncloud.com>
2022-07-29 14:39:19 +02:00
Christian Richter 1e21e23056 add drives output
Signed-off-by: Christian Richter <crichter@owncloud.com>
2022-07-29 14:39:19 +02:00