Ga naar hoofdinhoud

User Profile & Account Management

PropertyValue
StatusImplemented (500 errors due to OpenConnector dependency)
StandardsGEMMA Identiteitsbeheercomponent, AVG/GDPR (data export, deactivation)
AppOpenRegister

Overview

OpenRegister provides self-service account management endpoints under /api/user/me/*. Users can manage their profile, password, avatar, notification preferences, activity history, API tokens, data export, and account deactivation. All endpoints require authentication and operate on the currently logged-in user.

Key Components

ComponentFilePurpose
UserControllerlib/Controller/UserController.phpREST API for all user management endpoints
UserServicelib/Service/UserService.phpBusiness logic for user operations
SecurityServicelib/Service/SecurityService.phpAuthentication and authorization checks

API Endpoints

All endpoints are prefixed with /index.php/apps/openregister/api/user/me.

#MethodURLRoute NameDescription
1GET/api/user/meuser#meGet current user profile
2PUT/api/user/meuser#updateMeUpdate user profile
3PUT/api/user/me/passworduser#changePasswordChange password
4POST/api/user/me/avataruser#uploadAvatarUpload avatar image
5DELETE/api/user/me/avataruser#deleteAvatarRemove avatar
6GET/api/user/me/exportuser#exportDataExport user data (GDPR)
7GET/api/user/me/notificationsuser#getNotificationPreferencesGet notification settings
8PUT/api/user/me/notificationsuser#updateNotificationPreferencesUpdate notification settings
9GET/api/user/me/activityuser#getActivityGet activity history
10GET/api/user/me/tokensuser#listTokensList API tokens
11POST/api/user/me/tokensuser#createTokenCreate new API token
12DELETE/api/user/me/tokens/{id}user#revokeTokenRevoke an API token
13POST/api/user/me/deactivateuser#requestDeactivationRequest account deactivation
14GET/api/user/me/deactivation-statususer#getDeactivationStatusCheck deactivation status
15DELETE/api/user/me/deactivateuser#cancelDeactivationCancel pending deactivation

Additional Auth Endpoints

MethodURLRoute NameDescription
POST/api/user/loginuser#loginUser login
POST/api/user/logoutuser#logoutUser logout

GDPR / AVG Compliance

  • Data Export (GET /api/user/me/export): Allows users to download all their personal data stored in OpenRegister, fulfilling the GDPR right of data portability.
  • Account Deactivation (POST /api/user/me/deactivate): Users can request account deactivation with a grace period, fulfilling the GDPR right to erasure. The deactivation can be checked (GET .../deactivation-status) or cancelled (DELETE .../deactivate) during the grace period.

API Test Results (2026-03-25)

All profile endpoints return HTTP 500 due to an external dependency error in OpenConnector:

EndpointMethodHTTP StatusError
/api/user/meGET500OpenConnector EventListener instantiation failure
/api/user/me/notificationsGET500Same
/api/user/me/notificationsPUT500Same
/api/user/me/activityGET500Same
/api/user/me/tokensGET500Same
/api/user/me/tokensPOST500Same
/api/user/me/deactivation-statusGET500Same

Root Cause

The 500 errors are caused by:

OCP\AppFramework\QueryException: Could not resolve
OCA\OpenConnector\EventListener\ObjectUpdatedEventListener!
Class can not be instantiated.

This is an OpenConnector app dependency issue (its event listener class cannot be auto-loaded), not a bug in the OpenRegister UserController itself. The routes are correctly registered in appinfo/routes.php (lines 492-506) and the controller class exists with proper method signatures.

Browser Verification (2026-03-25)

  • Contacts app (/apps/contacts): Loaded successfully. The Nextcloud Contacts app is accessible and shows the standard header navigation bar including a "Search contacts" button in the top-right.
  • OpenRegister app (/apps/openregister): Loaded successfully. Dashboard shows 10 registers, 105 schemas, 44,756 objects across registers (Publication, AMEF, Voorzieningen, Procest, LarpingApp, Pipelinq, and others). Navigation sidebar includes AI Chat, Registers, Schemas, Templates, Search/Views, Files, Agents, and Settings.