Commit Graph

4374 Commits

Author SHA1 Message Date
Pascal Bleser
df98358ddf groupware: swagger API documentation improvements
* add more documentation for properties

 * fixes after a bit of trial-and-error with go-swagger

 * fix email filter marshalling when there are no search criteria

 * introduce an apidoc.yml that contains Swagger data and is merged when
   generating the swagger.yml from sources
2026-02-27 14:46:42 +01:00
Pascal Bleser
ae1ceacbf5 Groupware improvements
* ensure that all the jmap responses contain the SessionState

 * implement missing errors that were marked as TODO

 * moved common functions from pkg/jmap and pkg/services/groupware to
   pkg/log and pkg/structs to commonalize them across both source trees

 * implement error handling for SetError occurences

 * Email: replace anonymous map[string]bool for mailbox rights with a
   MailboxRights struct, as the keys are well-defined, which allows for
   properly documenting them

 * introduce ObjectType as an "enum"

 * fix JSON marshalling and unmarshalling of EmailBodyStructure

 * move the swagger documentation structs from groupware_api.go to
   groupware_docs.go

 * fix: change verb for /groupware/accounts/*/vacation from POST to PUT
2026-02-27 14:46:42 +01:00
Pascal Bleser
bfbd2ce751 groupware: minor email searching response improvements + started implementing vacation response setting API 2026-02-27 14:46:42 +01:00
Pascal Bleser
8fe6d88420 groupware: add identities of all accounts to the index resource 2026-02-27 14:46:42 +01:00
Pascal Bleser
7cdd22fe8a groupware: fix email search, add variant that includes the full emails 2026-02-27 14:46:42 +01:00
Pascal Bleser
c6b18db02b groupware: fix email search, add variant that includes the full emails 2026-02-27 14:46:42 +01:00
Pascal Bleser
b339f62b33 Groupware: refactor jmap package, implement Email/set, EmailSubmission
* refactor the jmap package to split it into several files as the
   jmap.api.go file was becoming too unwieldy

 * refactor the Groupware handler function response to be a Response
   object, to be more future-proof and avoid adding more and more
   return parameters while handling "no content" response as well

 * more godoc for the JMAP model

 * add Email creation, updating, deleting (Email/set,
   EmailSubmission/set)

 * add endpoints
   - POST /accounts/{accountid}/messages
   - PATCH|PUT /accounts/{accountid}/messages/{messageid}
   - DELETE /accounts/{accountid}/messages/{messageid}
2026-02-27 14:46:42 +01:00
Pascal Bleser
a958ede3cc groupware: implement message search with snippets 2026-02-27 14:46:42 +01:00
Pascal Bleser
8d495c6482 groupware: blob streaming (upload and download) 2026-02-27 14:46:42 +01:00
Pascal Bleser
1cdfeb9209 groupware: more JMAP operations implementation 2026-02-27 14:46:42 +01:00
Pascal Bleser
7f3363d9f7 groupware: further implementation and improvements 2026-02-27 14:46:42 +01:00
Pascal Bleser
b397cd461e refactored the Session object, refactored the services/groupware directory, and started Swagger documentation implementation 2026-02-27 14:46:42 +01:00
Pascal Bleser
0ba962bda1 groupware: refactoring the API mechanisms 2026-02-27 14:46:42 +01:00
Pascal Bleser
1b5932da07 groupware: implement JSON:API's error response format, with a revamped error handling in jmap and services/groupware 2026-02-27 14:46:42 +01:00
Pascal Bleser
1b8f17439e Refactor groupware service after ADR decision on the Groupware API
* after having decided that the Groupware API should be a standalone
   independent custom REST API that is using JMAP data models as much as
   possible,
 * removed Groupware APIs from the Graph service
 * moved Groupware implementation to the Groupware service, and
   refactored a few things accordingly
2026-02-27 14:46:42 +01:00
Pascal Bleser
b830e24239 Groupware and jmap: cleanup and API documentation 2026-02-27 14:46:42 +01:00
Pascal Bleser
a7f5ce0547 groupware: remove unneeded messages.go that was a remainder from an earlier implementation attempt, which also fixes compilation issues due to changes in main 2026-02-27 14:46:42 +01:00
Pascal Bleser
eca28fd996 Groupware improvements: refactoring, k6 tests
* refactored the models to be strongly typed with structs and mapstruct
   to decompose the dynamic parts of the JMAP payloads

 * externalized large JSON strings for tests into .json files under
   testdata/

 * added a couple of fantasy Graph groupware APIs to explore further
   options

 * added k6 scripts to test those graph/me/messages APIs, with a setup
   program to set up users in LDAP, fill their IMAP inbox, activate them
   in Stalwart, cleaning things up, etc...
2026-02-27 14:46:42 +01:00
Pascal Bleser
05a3b8fc32 groupware: removed debugging logs 2026-02-27 14:46:42 +01:00
Pascal Bleser
5d67e7b515 auth-api: fix: was missing newly introduced metrics 2026-02-27 14:46:42 +01:00
Pascal Bleser
b09161cfcb groupware and jmap improvements and refactoring 2026-02-27 14:46:42 +01:00
Pascal Bleser
75dac3645b Introduce a the auth-api service
* primitive implementation to demonstrate how it could work, still to
   be considered WIP at best

 * add new dependency: MicahParks/jwkset and MicahParks/keyfunc to
   retrieve the JWK set from KeyCloak to verify the signature of the
   JWTs sent as part of Bearer authentication in the /auth API

 * (minor) opencloud/.../service.go: clean up a logging statement that
   was introduced earlier to hunt down why the auth-api service was not
   being started
2026-02-27 14:46:41 +01:00
Pascal Bleser
bb2874177f add an auth-api service to make an exemplary implementation of an external authentication API for third party services such as Stalwart 2026-02-27 14:46:41 +01:00
Pascal Bleser
de4b154391 move services/groupware/pkg/jmap to pkg/jmap 2026-02-27 14:46:41 +01:00
Pascal Bleser
46aa800152 WIP: restructure the Jmap client, and implement the /me/messages Graph API endpoint with it 2026-02-27 14:46:41 +01:00
Pascal Bleser
df5514a1ed add missing routing for /groupware (currently unprotected for testing) 2026-02-27 14:46:41 +01:00
Pascal Bleser
b12e0d5b29 WIP: initial implementation of the groupware service 2026-02-27 14:46:41 +01:00
Mahdi Baghbani
d7cb432b4d fix(ocm): allow insecure tls for wayf discovery (#2404)
* fix(ocm): allow insecure tls for wayf discovery

Signed-off-by: Mahdi Baghbani <mahdi-baghbani@azadehafzar.io>
2026-02-26 14:44:38 +01:00
Florian Schade
b69b9cd569 fix: simplify subject.session key parsing 2026-02-25 14:02:09 +01:00
Florian Schade
e8ecbd7af1 refactor: make the logout mode private 2026-02-25 14:02:09 +01:00
Florian Schade
fd614eacf1 fix: use base64 record keys to prevent separator clashes with subjects or sessionIds that contain a dot 2026-02-25 14:02:09 +01:00
Florian Schade
910298aa05 chore: change naming 2026-02-25 14:02:09 +01:00
Florian Schade
7350050a05 test: add more backchannellogout tests 2026-02-25 14:02:09 +01:00
Florian Schade
f72e3f1e32 chore: cleanup backchannel logout pr for review 2026-02-25 14:02:09 +01:00
Florian Schade
0c62c45494 enhancement: document idp side-effects 2026-02-25 14:02:09 +01:00
Florian Schade
f6553498f6 enhancement: finalize backchannel logout 2026-02-25 14:02:09 +01:00
Christian Richter
6a0fd89475 refactor deletion
Co-authored-by: Jörn Dreyer <j.dreyer@opencloud.eu>
Co-authored-by: Michael Barz <m.barz@opencloud.eu>
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
2026-02-25 14:02:09 +01:00
Christian Richter
cb38aaab16 create mapping in cache for subject => sessionid
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
2026-02-25 14:02:09 +01:00
Christian Richter
762062bfa3 add mapping to backchannel logout for subject => sessionid
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
2026-02-25 14:02:09 +01:00
Christian Richter
291265afb0 add additional validation to logout token
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
Co-authored-by: Michael Barz <m.barz@opencloud.eu>
2026-02-25 14:02:09 +01:00
opencloudeu
49a018e973 [tx] updated from transifex 2026-02-24 00:12:39 +00:00
Ralf Haferkamp
372bb04ee8 chore(idp): Bump dependencies
The axios bump addresses CVE-2025-7783
2026-02-23 09:38:12 +01:00
Jannik Stehle
2a2e882a59 Merge pull request #2377 from opencloud-eu/feat/web-adjust-surface-colors
feat(web): change surface colors to more modern ones
2026-02-23 07:34:59 +01:00
opencloudeu
42e9c27174 [tx] updated from transifex 2026-02-22 00:13:15 +00:00
Jannik Stehle
02d73157c1 feat(web): change surface colors to more modern ones 2026-02-20 16:13:32 +01:00
Ralf Haferkamp
6dde2839df fix(oidc_auth): Fix userinfo cache expiration logic
When the userinfo claims store in the usercache is found to be expired,
do not return an error but ignore the cached entry and force a
re-verification of the access token (either via parsing the JWT again or
via a UserInfo lookup).
This is required for setups with non-JWT access tokes where the expiry
date set in the cached claims does not reflect the actual token expiry,
but just the CacheTTL.

Fixes: #1493
2026-02-19 13:17:17 +01:00
Ralf Haferkamp
212846f2f4 fix(idp): Remove kpop dependency
The built package (https://download.kopano.io/community/kapp:/kpop-2.7.2.tgz)
seems to be no longer available and upstream lico already switched away
from it quite a while ago.

Fixes: #2364
2026-02-19 12:16:30 +01:00
opencloudeu
4447893aeb [tx] updated from transifex 2026-02-18 00:15:57 +00:00
Alex
cdb942a093 feat: app-registry adjust default mime-types (#2354) 2026-02-17 16:39:55 +01:00
Ralf Haferkamp
78703806e4 feat(webfinger): add fallbacks for CLIENT_ID and SCOPE setting
This adds the variables 'OC_OIDC_CLIENT_ID' and
'OC_OIDC_CLIENT_SCOPES' as fallbacks for the platform specific settings.

For backwards compatibility with the "old" settings for the 'web'
service we also allow 'WEB_OIDC_CLIENT_ID' and 'WEB_OIDC_SCOPE' for the
"web" platform.
2026-02-17 10:41:35 +01:00