Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
bd34f51
fix(workflow): Fix beta release branch reference master→main and add …
rubenvdlinde Jan 9, 2026
66e25f2
Merge remote-tracking branch 'origin/feature/newopenregister' into fe…
rubenvdlinde Jan 9, 2026
702489f
Lets test GEMMA
rubenvdlinde Jan 13, 2026
e134913
Merge remote-tracking branch 'origin/feature/newopenregister' into fe…
rubenvdlinde Jan 13, 2026
9a96415
Bump beta version to 0.1.137-beta.3 [skip ci]
actions-user Jan 13, 2026
884e828
Fix ArchiMate import statistics showing 0 created/updated/unchanged
rubenvdlinde Jan 15, 2026
5e534e6
Fix compatibility with the new version of the configService
rjzondervan Jan 15, 2026
464968f
Fix ArchiMate import statistics: change skipped to unchanged
rubenvdlinde Jan 15, 2026
52a233a
WIP: Fix ArchiMate statistics - change skipped to unchanged (not work…
rubenvdlinde Jan 15, 2026
5892e9e
Fix ArchiMate import statistics structure: changed 'skipped' to 'unch…
rubenvdlinde Jan 15, 2026
befb7f2
Fix ArchiMate import statistics using ObjectService results
rubenvdlinde Jan 15, 2026
9dd4624
Merge remote-tracking branch 'origin/fix/settingsService' into featur…
rubenvdlinde Jan 16, 2026
c99689f
Test scripts
rubenvdlinde Jan 16, 2026
1abb02c
Bump beta version to 0.1.137-beta.4 [skip ci]
actions-user Jan 16, 2026
bccfdfc
Fix organisation page to only extend contactpersonen, not @self.schema
rubenvdlinde Jan 18, 2026
465d47f
Fix: Remove unnecessary _extend from audit-trails and files endpoints
rubenvdlinde Jan 18, 2026
8be6852
Remove frontend-forced _source parameter, let backend decide
rubenvdlinde Jan 18, 2026
c960ad1
Fix: Only send changed fields when activating organisation
rubenvdlinde Jan 18, 2026
c3f9877
Fixes for automatic user creation
rubenvdlinde Jan 18, 2026
a2100c2
Merge remote-tracking branch 'origin/feature/newopenregister' into fe…
rubenvdlinde Jan 18, 2026
c55a885
Bump beta version to 0.1.137-beta.5 [skip ci]
actions-user Jan 18, 2026
1c31054
Fixes and schema updated
rubenvdlinde Jan 18, 2026
1f27f2c
Merge remote-tracking branch 'origin/feature/newopenregister' into fe…
rubenvdlinde Jan 18, 2026
b0e6361
feat: Add Twig default values for type fields for backward compatibility
rubenvdlinde Jan 18, 2026
a0c4cd2
Bump beta version to 0.1.137-beta.6 [skip ci]
actions-user Jan 18, 2026
6b66550
fix: Support e-mailadres property name for contact email lookup
rubenvdlinde Jan 18, 2026
aa88e2c
Merge remote-tracking branch 'origin/feature/newopenregister' into fe…
rubenvdlinde Jan 18, 2026
d7fd6f2
Small fixes on aanbod service
rubenvdlinde Jan 18, 2026
3265f0d
Bump beta version to 0.1.137-beta.7 [skip ci]
actions-user Jan 18, 2026
14d8b87
Lots of small fixes
rubenvdlinde Jan 19, 2026
5820bb7
BUssy on getitng a proper archi import
rubenvdlinde Jan 19, 2026
287f022
Configuration fix
rubenvdlinde Jan 19, 2026
07c84d2
Bump beta version to 0.1.137-beta.8 [skip ci]
actions-user Jan 19, 2026
3e6aa0a
Merge remote-tracking branch 'origin/feature/newopenregister' into fe…
rubenvdlinde Jan 19, 2026
79509de
Fixes to the archimate import
rubenvdlinde Jan 19, 2026
d781e77
Bump beta version to 0.1.137-beta.9 [skip ci]
actions-user Jan 19, 2026
fe7b6a1
Bit of updates to the subscribers
rubenvdlinde Jan 19, 2026
d0d9d63
Done with it
rubenvdlinde Jan 19, 2026
cf93d8e
Merge remote-tracking branch 'origin/feature/newopenregister' into fe…
rubenvdlinde Jan 19, 2026
e8626d2
Bump beta version to 0.1.137-beta.10 [skip ci]
actions-user Jan 19, 2026
386abc5
Configuraiton update
rubenvdlinde Jan 19, 2026
51611ea
Merge remote-tracking branch 'origin/feature/newopenregister' into fe…
rubenvdlinde Jan 19, 2026
0545f34
Bump beta version to 0.1.137-beta.11 [skip ci]
actions-user Jan 19, 2026
ecf4b09
Fixing organisation and user creation
rubenvdlinde Jan 19, 2026
921eec0
Merge remote-tracking branch 'origin/feature/newopenregister' into fe…
rubenvdlinde Jan 19, 2026
31f27fb
Teting the new release workflow
rubenvdlinde Jan 19, 2026
c32987b
Merge branch 'feature/newopenregister' into HEAD
rubenvdlinde Jan 19, 2026
0e2d9e7
Fixed critcal speed issue in the setting serivce
rubenvdlinde Jan 20, 2026
7a3bdea
Merge commit '0e2d9e7e3162dc80e48ca11dab1765135a2276b0' into feature/…
rubenvdlinde Jan 20, 2026
af236ad
Lets setup a release
rubenvdlinde Jan 20, 2026
f1ce996
optimize the test flow
rubenvdlinde Jan 20, 2026
65aeabb
Bump beta version to 0.1.137-beta.12 [skip ci]
actions-user Jan 20, 2026
2b71333
Merge branch 'feature/newopenregister' into beta-release
rubenvdlinde Jan 20, 2026
0a5bf61
Merge pull request #154 from ConductionNL/beta-release
rubenvdlinde Jan 20, 2026
d6fc097
Bump beta version to 0.1.137-beta.13 [skip ci]
actions-user Jan 20, 2026
5579009
Small fixes on activating users
rubenvdlinde Jan 20, 2026
dd084c1
Merge pull request #155 from ConductionNL/beta-release
rubenvdlinde Jan 20, 2026
54fe852
Bump beta version to 0.1.137-beta.14 [skip ci]
actions-user Jan 20, 2026
c4ac4a0
Moved initialization out of the call flow
rubenvdlinde Jan 20, 2026
092aa33
Merge pull request #156 from ConductionNL/beta-release
rubenvdlinde Jan 20, 2026
13d6cda
Bump beta version to 0.1.137-beta.15 [skip ci]
actions-user Jan 20, 2026
7997402
Fixing module compliancy
rubenvdlinde Jan 20, 2026
46d2a02
fix: Make status field optional in gebruik schema
rubenvdlinde Jan 20, 2026
ea6adc1
Merge pull request #157 from ConductionNL/beta-release
rubenvdlinde Jan 20, 2026
27c3f74
Bump beta version to 0.1.137-beta.16 [skip ci]
actions-user Jan 20, 2026
6dfd63f
fix: Add register and schema params to module lookup for magic tables
rubenvdlinde Jan 20, 2026
214c29b
Merge pull request #158 from ConductionNL/beta-release
rubenvdlinde Jan 20, 2026
18778f2
Bump beta version to 0.1.137-beta.17 [skip ci]
actions-user Jan 20, 2026
8505dee
fixing the sync service
rubenvdlinde Jan 20, 2026
916fb99
Merge pull request #159 from ConductionNL/beta-release
rubenvdlinde Jan 20, 2026
22d2249
Bump beta version to 0.1.137-beta.18 [skip ci]
actions-user Jan 20, 2026
d9e94f6
fix: Use standaardVersies property for module standards sync
rubenvdlinde Jan 20, 2026
d282759
feat: Support _extend parameter for registers and schemas in gebruik …
rubenvdlinde Jan 20, 2026
77459b7
fix: Return empty results for non-logged-in users in gebruik endpoint
rubenvdlinde Jan 20, 2026
d684ae5
Merge pull request #160 from ConductionNL/beta-release
rubenvdlinde Jan 20, 2026
fd0952b
Bump beta version to 0.1.137-beta.19 [skip ci]
actions-user Jan 20, 2026
ba08e6a
fix: Allow public access to gebruik endpoint
rubenvdlinde Jan 20, 2026
6834303
Updating configuration
rubenvdlinde Jan 21, 2026
881caa6
Pagination fixes
rubenvdlinde Jan 21, 2026
95ca64b
Merge pull request #161 from ConductionNL/beta-release
rubenvdlinde Jan 21, 2026
d3001d1
Bump beta version to 0.1.137-beta.20 [skip ci]
actions-user Jan 21, 2026
5353d25
Working on updating organisations
rubenvdlinde Jan 21, 2026
a718faf
Merge pull request #162 from ConductionNL/beta-release
rubenvdlinde Jan 21, 2026
48f6d02
Bump beta version to 0.1.137-beta.21 [skip ci]
actions-user Jan 21, 2026
0d30175
More test scripting
rubenvdlinde Jan 21, 2026
350bf7a
Merge pull request #163 from ConductionNL/beta-release
rubenvdlinde Jan 21, 2026
178cb39
Bump beta version to 0.1.137-beta.22 [skip ci]
actions-user Jan 21, 2026
a2d2d51
Speedup the applicaite wizard
rubenvdlinde Jan 21, 2026
818e28c
import fix
rubenvdlinde Jan 21, 2026
8201296
Merge pull request #165 from ConductionNL/beta-release
rubenvdlinde Jan 21, 2026
695d0d5
Bump beta version to 0.1.137-beta.23 [skip ci]
actions-user Jan 21, 2026
115bb4b
RBAC on schemas
rubenvdlinde Jan 22, 2026
8b43eca
Merge pull request #166 from ConductionNL/beta-release
rubenvdlinde Jan 22, 2026
974eba4
Bump beta version to 0.1.137-beta.24 [skip ci]
actions-user Jan 22, 2026
8f3b689
Load fix
rubenvdlinde Jan 24, 2026
962a107
Small changes to the schemas
rubenvdlinde Jan 25, 2026
f617e9d
Use the dashbaord page
rubenvdlinde Jan 25, 2026
e99da5e
fixing the forewards and reloads
rubenvdlinde Jan 25, 2026
e28225f
Merge pull request #167 from ConductionNL/beta-release
rubenvdlinde Jan 25, 2026
9f023be
Bump beta version to 0.1.137-beta.25 [skip ci]
actions-user Jan 25, 2026
bc4dc9e
Lets get some more fixes into gebruiekrs activeren
rubenvdlinde Jan 26, 2026
5c5bd65
Merge pull request #168 from ConductionNL/beta-release
rubenvdlinde Jan 26, 2026
bf07014
Bump beta version to 0.1.137-beta.26 [skip ci]
actions-user Jan 26, 2026
ed68adc
Fix using the wrong method
rubenvdlinde Jan 26, 2026
d51b012
Merge pull request #169 from ConductionNL/beta-release
rubenvdlinde Jan 26, 2026
739e4da
Bump beta version to 0.1.137-beta.27 [skip ci]
actions-user Jan 26, 2026
1beace6
Update RBAC for software catalog
rubenvdlinde Jan 27, 2026
133dfe8
Fixes for user creation
rubenvdlinde Jan 28, 2026
13cf9a0
Merge pull request #170 from ConductionNL/beta-release
rubenvdlinde Jan 28, 2026
7dec556
Bump beta version to 0.1.137-beta.28 [skip ci]
actions-user Jan 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/workflows/beta-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ on:
push:
branches:
- feature/newopenregister
# - beta

jobs:
release-management:
Expand All @@ -31,7 +30,7 @@ jobs:
git fetch origin main
main_version=$(git show origin/main:appinfo/info.xml | grep -oP '(?<=<version>)[^<]+' || echo "")

# Get current version from feature/newopenregister branch
# Get current version from current branch
current_version=$(grep -oP '(?<=<version>)[^<]+' appinfo/info.xml || echo "")

# Split main version into parts
Expand All @@ -43,7 +42,7 @@ jobs:
# Extract beta counter from current version if it exists
beta_counter=1
if [[ $current_version =~ -beta\.([0-9]+)$ ]]; then
# If current patch version is still ahead of master, increment counter
# If current patch version is still ahead of main, increment counter
current_patch=$(echo $current_version | grep -oP '^[0-9]+\.[0-9]+\.(\d+)' | cut -d. -f3)
if [ "$current_patch" -eq "$next_patch" ]; then
beta_counter=$((BASH_REMATCH[1] + 1))
Expand Down Expand Up @@ -92,7 +91,7 @@ jobs:

# Stap 9: Voer npm install, build en composer install uit
- run: npm ci
- run: npm run build
- run: npm run dev
- run: composer install --no-dev

# Stap 10: Kopieer de bestanden naar de package directory
Expand Down Expand Up @@ -152,7 +151,7 @@ jobs:
id: version
uses: codacy/git-version@2.7.1
with:
release-branch: feature/newopenregister
release-branch: beta-release

# Stap 14: Extraheer repository description (optioneel)
- name: Extract repository description
Expand All @@ -174,6 +173,7 @@ jobs:
name: Beta Release ${{ env.NEW_VERSION }}
draft: false
prerelease: true
skipIfReleaseExists: true

# Stap 18: Voeg het tarball toe als asset aan de GitHub release
- name: Attach tarball to GitHub release
Expand Down
8 changes: 7 additions & 1 deletion appinfo/info.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Submit a [bug report](https://github.com/OpenCatalogi/.github/issues/new/choose)

Submit a [feature request](https://github.com/OpenCatalogi/.github/issues/new/choose).
]]></description>
<version>0.1.137-beta.2</version>
<version>0.1.137-beta.28</version>
<licence>agpl</licence>
<category>organization</category>
<author mail="info@conduction.nl" homepage="https://www.conduction.nl/">Conduction</author>
Expand All @@ -39,6 +39,12 @@ Submit a [feature request](https://github.com/OpenCatalogi/.github/issues/new/ch
<database min-version="8.0">mysql</database>
</dependencies>

<repair-steps>
<post-migration>
<step>OCA\SoftwareCatalog\Repair\InitializeSettings</step>
</post-migration>
</repair-steps>

<background-jobs>
<job>OCA\SoftwareCatalog\Cron\OrganizationSync</job>
</background-jobs>
Expand Down
3 changes: 3 additions & 0 deletions appinfo/routes.php
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,9 @@
['name' => 'settings#updateSyncConfig', 'url' => '/api/settings/sync/config', 'verb' => 'POST'],
['name' => 'settings#syncOrganisations', 'url' => '/api/settings/sync/organisations', 'verb' => 'POST'],

// User Profile endpoint
['name' => 'contactpersonen#getMe', 'url' => '/api/me', 'verb' => 'GET'],

// Contactpersonen Management endpoints
['name' => 'contactpersonen#getContactpersonen', 'url' => '/api/contactpersonen/organisation/{organisationId}', 'verb' => 'GET'],
['name' => 'contactpersonen#getContactPersonsWithUserDetailsForOrganization', 'url' => '/api/contactpersonen/organisation/{organizationUuid}/with-user-details', 'verb' => 'GET'],
Expand Down
139 changes: 23 additions & 116 deletions lib/AppInfo/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ public function register(IRegistrationContext $context): void

// Register TEST event listener for easily triggerable Nextcloud events
$context->registerEventListener(UserLoggedInEvent::class, TestEventListener::class);

// Register event listeners for OpenRegister events
$context->registerEventListener(ObjectCreatedEvent::class, SoftwareCatalogEventListener::class);
$context->registerEventListener(ObjectUpdatedEvent::class, SoftwareCatalogEventListener::class);
Expand Down Expand Up @@ -298,6 +298,23 @@ public function register(IRegistrationContext $context): void
$container->get('Psr\Log\LoggerInterface')
);
});

// Register ContactpersonenController with explicit dependencies for /me endpoint
$context->registerService(\OCA\SoftwareCatalog\Controller\ContactpersonenController::class, function ($container) {
return new \OCA\SoftwareCatalog\Controller\ContactpersonenController(
self::APP_ID,
$container->get('OCP\IRequest'),
$container->get(SettingsService::class),
$container->get('OCA\SoftwareCatalog\Service\SoftwareCatalogue\ContactPersonHandler'),
$container->get(\OCA\SoftwareCatalog\Service\ContactpersoonService::class),
$container->get('OCP\IUserManager'),
$container->get('OCP\IGroupManager'),
$container->get('OCP\IUserSession'),
$container,
$container->get('OCP\Security\ISecureRandom'),
$container->get('Psr\Log\LoggerInterface')
);
});
}

/**
Expand All @@ -309,135 +326,25 @@ public function register(IRegistrationContext $context): void
*/
public function boot(IBootContext $context): void
{
// Initialization is now handled by the Repair step (InitializeSettings)
// which runs only during app install/upgrade, not on every request.
// See lib/Repair/InitializeSettings.php

$container = $context->getServerContainer();
$logger = $container->get(LoggerInterface::class);

try {
$config = $container->get(IAppConfig::class);
$appManager = $container->get(IAppManager::class);
$currentAppVersion = $appManager->getAppVersion(self::APP_ID);
$lastInitializedVersion = $config->getValueString(self::APP_ID, 'last_initialized_version', '');

$logger->info('SoftwareCatalog boot: Version check', [
'currentVersion' => $currentAppVersion,
'lastInitializedVersion' => $lastInitializedVersion,
'versionChanged' => $lastInitializedVersion !== $currentAppVersion
]);

// Skip initialization during cron/CLI context without a user.
// RBAC checks require an authenticated user to have proper permissions.
$userSession = $container->get(\OCP\IUserSession::class);
if ($userSession->getUser() === null) {
$logger->debug('SoftwareCatalog boot: Skipping in cron/CLI context (no user)');
return;
}

// Check if we actually have a valid configuration, not just version matching
$needsInitialization = false;
$initReason = '';

if ($lastInitializedVersion !== $currentAppVersion || empty($lastInitializedVersion)) {
$needsInitialization = true;
$initReason = empty($lastInitializedVersion) ? 'never_initialized' : 'version_changed';
} else {
// Even if version matches, check if we have valid configuration
$hasValidConfig = $config->getValueString(self::APP_ID, 'voorzieningen_organisatie_schema', '') !== '' ||
$config->getValueString(self::APP_ID, 'organization_schema', '') !== '';

if (!$hasValidConfig) {
$needsInitialization = true;
$initReason = 'missing_configuration';
$logger->warning('SoftwareCatalog boot: No valid configuration found despite version match', [
'currentVersion' => $currentAppVersion,
'lastInitializedVersion' => $lastInitializedVersion
]);
}
}

if ($needsInitialization) {
$logger->info('SoftwareCatalog boot: Starting initialization', [
'reason' => $initReason,
'currentVersion' => $currentAppVersion,
'lastInitializedVersion' => $lastInitializedVersion
]);

try {
$settingsService = $container->get(SettingsService::class);
$initResult = $settingsService->initialize();

$logger->info('SoftwareCatalog boot: Initialization completed', [
'result' => $initResult,
'hasErrors' => !empty($initResult['errors'])
]);

// Only update version if initialization was actually successful
if (empty($initResult['errors']) &&
($initResult['autoConfigured'] || $initResult['fullyConfigured'])) {
$config->setValueString(self::APP_ID, 'last_initialized_version', $currentAppVersion);
$logger->info('SoftwareCatalog boot: Version updated to ' . $currentAppVersion . ' (successful init)');
} else {
$logger->warning('SoftwareCatalog boot: Initialization incomplete, not updating version', [
'errors' => $initResult['errors'] ?? [],
'autoConfigured' => $initResult['autoConfigured'] ?? false,
'fullyConfigured' => $initResult['fullyConfigured'] ?? false
]);
}

} catch (\RuntimeException $e) {
// Don't update version if OpenRegister is not available
$logger->warning('SoftwareCatalog boot: OpenRegister not available during initialization', [
'exception' => $e->getMessage(),
'initReason' => $initReason
]);
} catch (\Exception $e) {
$logger->error('SoftwareCatalog boot: Initialization failed', [
'exception' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
'initReason' => $initReason
]);
}
} else {
$logger->debug('SoftwareCatalog boot: Skipping initialization (version unchanged and config valid)');
}

} catch (\Exception $e) {
// Log error but don't fail the boot process
$logger->error('SoftwareCatalog boot error during version check: ' . $e->getMessage(), [
'exception' => $e,
'trace' => $e->getTraceAsString()
]);
}

// Register background job for organization contact synchronization
try {
$jobList = $container->get('OCP\BackgroundJob\IJobList');
if (!$jobList->has(\OCA\SoftwareCatalog\BackgroundJob\OrganizationContactSyncJob::class, null)) {
$jobList->add(\OCA\SoftwareCatalog\BackgroundJob\OrganizationContactSyncJob::class);
$logger->info('SoftwareCatalog boot: Background job registered');
$logger->debug('SoftwareCatalog boot: Background job registered');
}
} catch (\Exception $e) {
$logger->error('SoftwareCatalog boot: Failed to register background job', [
'exception' => $e->getMessage()
]);
}

// Check if initial sync has been done
try {
$config = $container->get(IAppConfig::class);
$initialSyncDone = $config->getValueString(self::APP_ID, 'initial_sync_done', 'false');
if ($initialSyncDone === 'false') {
// Mark as done to prevent repeated attempts
$config->setValueString(self::APP_ID, 'initial_sync_done', 'true');
$logger->info('SoftwareCatalog boot: Initial sync flag set');
}
} catch (\Exception $e) {
// Log but don't fail
$logger->error('SoftwareCatalog boot error during sync check: ' . $e->getMessage(), [
'exception' => $e->getMessage()
]);
}


}


Expand Down
Loading