Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
188 commits
Select commit Hold shift + click to select a range
2687030
Initial work
srosset81 Jul 3, 2025
f1977d9
If checking append mode, also check write mode
srosset81 Jul 4, 2025
84c143a
Fix and improve resource CRUD test
srosset81 Jul 4, 2025
6d58c35
Merge branch 'master' into permissions-check-on-middleware
srosset81 Jul 4, 2025
843f96f
Refactor and improve group CRUD tests
srosset81 Jul 4, 2025
0dd8fc5
Merge branch 'master' into permissions-check-on-middleware
srosset81 Jul 4, 2025
0a6e522
Improve not found errors
srosset81 Jul 4, 2025
42c1643
Fix tests
srosset81 Jul 7, 2025
4a0278e
Add utils tests
srosset81 Jul 7, 2025
b89a507
Use new action to check permissions in WAC actions
srosset81 Jul 9, 2025
f662d35
webacl.resource.getRights: use new permissions service
srosset81 Jul 9, 2025
84f1cf6
Various fixes
srosset81 Jul 9, 2025
a1617be
Merge branch 'master' into permissions-check-on-middleware
srosset81 Jul 9, 2025
107ccda
Map acl:Write to acl:Read
srosset81 Jul 10, 2025
82031d6
Add docs
srosset81 Jul 10, 2025
c63b80b
Rename AuthorizerBot file to avoid confusion
srosset81 Jul 10, 2025
c93a38b
createAndAttachCollection: don't pass unused webId parameter
srosset81 Jul 10, 2025
3e49b20
ldp.resource.exist: verify user has read permission after having chec…
srosset81 Jul 10, 2025
059795b
Merge pull request #1402 from assemblee-virtuelle/permissions-check-o…
srosset81 Jul 10, 2025
5dcf635
Use Fuseki 5.1 for tests
srosset81 Jul 28, 2025
61ffd42
Initial work
srosset81 Jul 28, 2025
f41a8ef
Working GET method
srosset81 Jul 28, 2025
89a97a1
New parseRawBody middleware
srosset81 Jul 29, 2025
b8f0c0b
Working POST method
srosset81 Jul 29, 2025
8772a55
Fix tests
srosset81 Jul 29, 2025
f7fbdfa
Deprecate contentType on triplestore.insert action
srosset81 Jul 29, 2025
1586023
Remove unused accept/contentType params and fix all tests
srosset81 Jul 30, 2025
7cc4997
Remove contentType from triplestore.insert action
srosset81 Jul 30, 2025
aea50d1
Default webacl.resource.getRights accept param to JSON-LD
srosset81 Jul 31, 2025
a9247f2
Remove unneeded accept param from activitypub.collection.get
srosset81 Jul 31, 2025
9ba4b1c
Remove unneeded accept param from triplestore.query
srosset81 Jul 31, 2025
92b837f
Merge pull request #1408 from assemblee-virtuelle/fix-content-negotia…
srosset81 Jul 31, 2025
c3935c5
Remove test that should not be working
srosset81 Jul 31, 2025
3e2d653
Merge branch '2.0' into store-documents-in-named-graph
srosset81 Jul 31, 2025
8f7e304
Working tests except PUT
srosset81 Aug 5, 2025
ba30af5
Store containers in their own document
srosset81 Aug 5, 2025
aebd133
Replace CLEAR with DROP, as it also deletes named graphs
srosset81 Aug 6, 2025
e8392f5
Missing
srosset81 Aug 6, 2025
a7f4e29
New DocumentService
srosset81 Aug 6, 2025
093aaec
Migrate Middleware to Typescript (#1409)
Laurin-W Aug 7, 2025
dc591fc
Migrate utils
srosset81 Aug 7, 2025
930d11d
resolve merge-conflicts with master branch
srosset81 Jul 3, 2025
1a1234a
resolve merge conflicts with master
Laurin-W Aug 7, 2025
5fb8a59
Add tripleadmin to containers
srosset81 Aug 8, 2025
f3115b4
Fix some activitypub tests
srosset81 Aug 8, 2025
1b59710
Fixes
srosset81 Aug 12, 2025
137da98
Stop using current predicate
srosset81 Aug 12, 2025
3784c88
New noGraph param
srosset81 Aug 12, 2025
9664ba3
Fix all ActivityPub tests
srosset81 Aug 13, 2025
38ec723
Fixes
srosset81 Sep 3, 2025
ddeeb28
Migration of resources and containers to named graphs
srosset81 Sep 3, 2025
c984b1d
Move old migration service to @semapps/migration package
srosset81 Sep 4, 2025
ea67e8c
More migration
srosset81 Sep 5, 2025
222b281
Remove mirror graph, fix all tests
srosset81 Sep 5, 2025
9c58dbc
ts-migrate rename middleware
Laurin-W Sep 8, 2025
17ce501
transform_ts_codemod
Laurin-W Sep 8, 2025
d2a536e
make satisfies partial
Laurin-W Sep 8, 2025
4c8a3a6
remove define wrappers
Laurin-W Sep 8, 2025
4fde1bb
rm define wrappers
Laurin-W Sep 8, 2025
8f47e7b
explicit json imports `with { type: 'json' }`
Laurin-W Sep 8, 2025
a77b04e
[ts-migrate] eslint fix
Laurin-W Sep 8, 2025
adebc8c
add tsconfigs
Laurin-W Sep 8, 2025
ebd0744
add type "module"
Laurin-W Sep 8, 2025
c0ae582
add sourceType "module" to eslintrc
Laurin-W Sep 8, 2025
3b47dfc
tsconfig allow explicit extensions
Laurin-W Sep 8, 2025
fea5e0b
activate eslintrc ts parser
Laurin-W Sep 8, 2025
dc09c05
eslint autofix
Laurin-W Sep 8, 2025
0300aac
remove unused ts-expect
Laurin-W Sep 8, 2025
754b342
tsconfig to strict
Laurin-W Sep 8, 2025
9571fcc
explicit any
Laurin-W Sep 8, 2025
133d2a7
ts expect errors
Laurin-W Sep 8, 2025
2a14d02
use package.jsons and configs from 2.0
Laurin-W Sep 8, 2025
b6e0918
merge part 1
Laurin-W Sep 8, 2025
3f763af
Merge branch 'store-documents-in-named-graph' of github.com:assemblee…
Laurin-W Sep 9, 2025
3f65e30
Solve all merge conflicts
srosset81 Sep 9, 2025
d4cfa31
Fix some tests after merge
srosset81 Sep 9, 2025
af35ed7
Remove PseudoIdMixin and add migration
srosset81 Sep 9, 2025
e7944fb
Fix crypto tests
srosset81 Sep 12, 2025
865bae1
Fix all remaining tests
srosset81 Sep 12, 2025
e7a8283
Renamed DocumentService to NamedGraph service for consistency sake
srosset81 Sep 12, 2025
4eb2d36
Merge pull request #1416 from assemblee-virtuelle/store-documents-in-…
srosset81 Sep 15, 2025
de34d37
Full test suite for triplestore service and subservice with adequate …
SlyRock Sep 19, 2025
c4e34aa
Remove yarn.lock and package-lock.json files, clean up middleware tes…
SlyRock Sep 19, 2025
aa7a7f1
Refactor triplestore actions to remove 'webId' parameter from dropAll…
SlyRock Sep 19, 2025
debe2ae
Refactor triplestore service to replace 'mainDataset' with 'defaultDa…
SlyRock Sep 22, 2025
c70b044
Use correct API for WebAcl actions
srosset81 Sep 23, 2025
1c79850
Call controlled action from ldp.container.get
srosset81 Sep 23, 2025
625926b
Fix types
srosset81 Sep 23, 2025
3129dbb
Fix WebAclService routes
srosset81 Sep 23, 2025
f36aed1
Fix ProxyService calls
srosset81 Sep 23, 2025
f8c2f30
Add missing interop predicates
srosset81 Sep 23, 2025
d90a0df
Add missing application/sparql-query content type
srosset81 Sep 23, 2025
2ce6999
WebIdService: add missing resourceUri param to ldp.resource.create
srosset81 Sep 23, 2025
dc08197
Force explicit creation of named graph via declarative triple insertion
SlyRock Sep 24, 2025
62ed0eb
Switch back to Yarn classic
srosset81 Sep 24, 2025
6e4b721
Lower requirements to Node 22
srosset81 Sep 24, 2025
736e7a3
Merge branch 'master' into 2.0
Laurin-W Sep 25, 2025
fb01f72
fix: tsconfig typeRoots config (fixes jest globals)
Laurin-W Sep 29, 2025
7c897e6
chore: remove obsolete @ts-expect-error
Laurin-W Sep 29, 2025
4180de3
fix: edd25519 getByType
Laurin-W Sep 29, 2025
f7aa4b0
Refactor named-graph.create action to handle URI generation
srosset81 Oct 14, 2025
6a5b91a
Various fixes
srosset81 Oct 17, 2025
47d8555
Refactor TypeIndex. Working controlled containers and resources
srosset81 Oct 20, 2025
1378223
Working tests
srosset81 Oct 21, 2025
8ec7002
Rename options to registration
srosset81 Oct 21, 2025
5784e83
Big refactoring. All LDP tests passing
srosset81 Oct 28, 2025
addb338
Begin refactoring to stop using podProvider setting
srosset81 Oct 29, 2025
9a2ff50
All LDP tests passing
srosset81 Oct 30, 2025
435d8f6
Handle resource creation in solid-storage service
srosset81 Oct 30, 2025
2e0b2cf
Rename acceptedTypes to types
srosset81 Oct 30, 2025
f1b3455
Refactor AccountService
srosset81 Oct 30, 2025
b27936e
Refactor WebId to have a full path
srosset81 Oct 31, 2025
2c05a7a
Cleanup
srosset81 Oct 31, 2025
9dc7fd9
Cleanup podProvider setting from LdpService
srosset81 Oct 31, 2025
62f1d19
Add redirect to WebID and accounts tests
srosset81 Oct 31, 2025
7589a58
Working WAC tests
srosset81 Nov 10, 2025
d86278f
Keys tests working
srosset81 Nov 11, 2025
3ace44b
Rename keys container services
srosset81 Nov 11, 2025
c66412f
Refactor Keys and VC tests
srosset81 Nov 12, 2025
1615715
Rename VC services
srosset81 Nov 12, 2025
f6f9c10
Rename getUris to getByType
srosset81 Nov 12, 2025
547fbcd
First working AP test
srosset81 Nov 12, 2025
38dd70c
Working outbox test
srosset81 Nov 14, 2025
6a57409
All tests passing (except interop)
srosset81 Nov 17, 2025
1f38210
Refactor ActivityPub ApiService
srosset81 Nov 17, 2025
9ef0d77
Replace all baseUri with baseUrl
srosset81 Nov 17, 2025
2580c7c
Add ontology type
srosset81 Nov 18, 2025
08af491
Fix isRemote action
srosset81 Nov 18, 2025
e9cfdba
Fix notifications context
srosset81 Nov 19, 2025
3776a59
Many fixes and improvements
srosset81 Nov 21, 2025
cda994c
More fixes
srosset81 Nov 25, 2025
a7417c2
Small fix
srosset81 Nov 25, 2025
684f02f
All ActivityPods tests passing !
srosset81 Nov 25, 2025
e6f5af2
Skip all interop tests for now
srosset81 Nov 25, 2025
8cc8e16
Finish migration tool
srosset81 Nov 27, 2025
12c5ae3
Merge pull request #1420 from assemblee-virtuelle/uuids-for-container…
srosset81 Nov 27, 2025
86ffaee
Moving type-index and notifications tests from ActivityPods
srosset81 Dec 1, 2025
da1c39c
Small fixes
srosset81 Dec 2, 2025
cecb8e2
Add typing
srosset81 Dec 2, 2025
4381981
New BinaryService using adapters
srosset81 Dec 2, 2025
c40ff89
Remove the ldp.resource.upload action
srosset81 Dec 2, 2025
fefe5ba
Cleanup
srosset81 Dec 3, 2025
49fa206
Add NgBinaryAdapter
srosset81 Dec 3, 2025
224e05b
Add migration tool
srosset81 Dec 3, 2025
2c2a32c
Add documentation
srosset81 Dec 3, 2025
43e2bdd
Fix and improve docs
srosset81 Dec 3, 2025
c47f226
Add link in docs
srosset81 Dec 3, 2025
f14dd64
Merge branch '2.0' into binary-adapter
srosset81 Dec 3, 2025
6527a70
Working tests through Moleculer actions
srosset81 Dec 3, 2025
9944567
Start work on API
srosset81 Dec 3, 2025
7a27346
Add API for sort order and predicate
srosset81 Dec 4, 2025
c63282d
Add links to next/prev/first/last pages
srosset81 Dec 4, 2025
fae2e07
Redirect to first page if no page is provided in query string
srosset81 Dec 4, 2025
5a7778c
Fix all tests
srosset81 Dec 4, 2025
1137c26
Update documentation
srosset81 Dec 4, 2025
d89b133
Merge pull request #1429 from assemblee-virtuelle/ldp-paging
srosset81 Dec 4, 2025
8bf94d0
Enhance named graph functionality in triplestore service by implement…
SlyRock Dec 31, 2025
c8bb0ea
Update NextGraph adapter documentation to clarify client peer key gen…
SlyRock Jan 8, 2026
bc27e32
Fix tests, remove iKnowWhatImDoing param
srosset81 Jan 8, 2026
703e931
Merge branch '2.0' into feature/nextgraph-integration-ts
srosset81 Jan 8, 2026
6020447
Tests passing except for NextGraph not accepting HTTP URIs as graph name
srosset81 Jan 9, 2026
df1daa8
Don't use a baseUrl for named graphs
srosset81 Jan 9, 2026
9667c6e
Clean up and fix tests
srosset81 Jan 9, 2026
3aa0b39
Working account test
srosset81 Jan 13, 2026
e22c972
Cleanup session handling
srosset81 Jan 13, 2026
084411b
Most LDP tests working except controlled containers/resources and API
srosset81 Jan 14, 2026
30a2779
Remove console.log
srosset81 Jan 14, 2026
e5256a6
All LDP tests running except binary and blank nodes
srosset81 Jan 14, 2026
bb601c7
Merge branch 'feature/nextgraph-integration-ts' into binary-adapter
srosset81 Jan 14, 2026
256eda3
Fix all LDP tests
srosset81 Jan 19, 2026
63c848f
Merge pull request #1428 from assemblee-virtuelle/binary-adapter
srosset81 Jan 19, 2026
4599d24
Update Docker Compose configuration for ng_tests service and enhance …
SlyRock Jan 20, 2026
aa5bd87
Update .env and docker-compose configurations for ng_tests service to…
SlyRock Jan 20, 2026
50c0d91
Merge branch 'feature/nextgraph-integration-ts' of github.com:assembl…
SlyRock Jan 20, 2026
501e141
Refactor .env and docker-compose configurations for ng_tests service t
SlyRock Jan 20, 2026
2cd2266
Use NextGraph env variables correctly
srosset81 Jan 21, 2026
49a12aa
Fix tests
srosset81 Jan 21, 2026
1e0f322
Docker image extension for fuseki 5, in order to fix the permissions …
SlyRock Jan 22, 2026
adf93db
Merge branch 'feature/nextgraph-integration-ts' of git@github.com:ass…
SlyRock Jan 22, 2026
f44ef54
Update nextgraph docker config
srosset81 Jan 23, 2026
ed20301
Fixes
srosset81 Jan 23, 2026
e487ed9
Use new NG package and add Makefile
srosset81 Jan 26, 2026
955b343
Merge pull request #1417 from assemblee-virtuelle/feature/nextgraph-i…
srosset81 Jan 26, 2026
90cb565
Import moleculer's type-only exports with `import type`
srosset81 Sep 3, 2026
7b496be
Merge branch 'type-only-imports'
srosset81 Sep 3, 2026
e5a5428
Merge master into 2.0
srosset81 Sep 3, 2026
4f72e9b
Import moleculer's type-only exports with `import type`
srosset81 Sep 3, 2026
3d6a3d5
Merge branch 'master' into 2.0
srosset81 Sep 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
17 changes: 17 additions & 0 deletions src/jena/fuseki5-docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
FROM stain/jena-fuseki:5.1.0

# Switch to root first (base image ends with USER fuseki)
USER root

# Install su-exec for switching users (Alpine package)
RUN apk add --no-cache su-exec

# Copy the wrapper entrypoint
COPY docker-entrypoint-wrapper.sh /docker-entrypoint-wrapper.sh
RUN chmod +x /docker-entrypoint-wrapper.sh

# Use our wrapper as the entrypoint (it will switch to fuseki user)
ENTRYPOINT ["/docker-entrypoint-wrapper.sh"]

# Preserve the CMD from the base image (required when overriding ENTRYPOINT)
CMD ["/jena-fuseki/fuseki-server"]
95 changes: 95 additions & 0 deletions src/jena/fuseki5-docker/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Fuseki 5 fixed docker image

This is an extension of `stain/jena-fuseki:5.1.0` docker image for Fuseki 5

## Why the fix ?

When creating a service with docker compose and mounting a volume for Fuseki data, there is a permissions issue.

### The issue

```yaml
fuseki_tests:
image: stain/jena-fuseki:5.1.0
container_name: fuseki_tests
restart: always
volumes:
- ./data/fuseki_tests:/fuseki:z
ports:
- '3040:3030'
expose:
- '3040'
environment:
ADMIN_PASSWORD: 'admin'
```

```
sylvain@UP222:~/virtual-assembly/activitypods/semapps/src/middleware/tests$ docker compose up -d
[+] Running 6/6
✔ Network middleware_tests_network Created 0.0s
✔ Container redis_middleware_tests Started 0.8s
✔ Container ng_tests Started 0.8s
✔ Container fuseki_tests Started 0.8s
✔ Container arena_tests Started 1.5s
✔ Container tripleadmin Started 1.5s
sylvain@UP222:~/virtual-assembly/activitypods/semapps/src/middleware/tests$ docker logs fuseki_tests
###################################
Initializing Apache Jena Fuseki

cp: cannot create regular file '/fuseki/shiro.ini': Permission denied
```

### Temp fix during development

1. That issue could to be fixed with a `chmod 777` from the host computer then relaunching the container.

2. It could also be fixed by forcing the container to run as root :

```yaml
fuseki_tests:
image: stain/jena-fuseki:5.1.0
container_name: fuseki_tests
restart: always
volumes:
- ./data/fuseki_tests:/fuseki:z
ports:
- '3040:3030'
expose:
- '3040'
environment:
ADMIN_PASSWORD: 'admin'
user: '0:0' # run as root
```

### Unsatisfying fixes

1. Solution one : implied a manual step, deterrent for devX
2. Solution two : could lead to security or technical issues as the original image wasn't designed to run as root

## The fix

We extended the docker image to start as root and created an entry point that fixes the permissions on the mounted volume before running the original entrypoint as the fuseki user from the image.

### Build and publish the image

```
docker build -t semapps/fuseki5-permissions-fix .
docker push semapps/fuseki5-permissions-fix
```

### Use the new image

```yaml
fuseki_tests:
image: semapps/fuseki5-permissions-fix
container_name: fuseki_tests
restart: always
volumes:
- ./data/fuseki_tests:/fuseki:z
ports:
- '3040:3030'
expose:
- '3040'
environment:
ADMIN_PASSWORD: 'admin'
```
32 changes: 32 additions & 0 deletions src/jena/fuseki5-docker/docker-entrypoint-wrapper.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/bin/sh
set -e

# This script runs as root (because we set USER root in the Dockerfile)
# Its purpose is to fix permissions on the /fuseki volume before switching
# to the fuseki user and running the original entrypoint.

# Step 1: Ensure /fuseki directory exists
# (Docker creates the mount point, but we ensure it exists just in case)
mkdir -p /fuseki

# Step 2: Change ownership of /fuseki to fuseki:fuseki
# This ensures the fuseki user (non-root) can write to the directory
# -R means recursive (applies to all files/subdirs if any exist)
# 2>/dev/null suppresses error messages if chown fails (shouldn't happen as root)
# || true ensures the script doesn't fail if chown somehow fails
chown -R fuseki:fuseki /fuseki 2>/dev/null || true

# Step 3: Ensure the directory is writable by the owner (fuseki user)
# u+w gives write permission to the user (owner)
# -R applies recursively to all contents
chmod -R 777 /fuseki 2>/dev/null || true

# Step 4: Switch to the fuseki user and execute the original entrypoint
# su-exec is like su but designed for containers (handles signals properly)
# fuseki:fuseki means user:group
# The original entrypoint is: /sbin/tini -- sh /docker-entrypoint.sh
# We use tini (already in base image) to handle signals, and su-exec to switch users
# The "$@" passes through any arguments (CMD) that were provided
# The original entrypoint from base image is: /sbin/tini -- sh /docker-entrypoint.sh
# We use su-exec to switch users, then call tini with the original entrypoint script
exec su-exec fuseki:fuseki /sbin/tini -- sh /docker-entrypoint.sh "$@"
2 changes: 1 addition & 1 deletion src/middleware/.eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@
"import/no-unresolved": "off",
"import/no-useless-path-segments": "warn",
"import/order": "warn",
"jest/no-conditional-expect": "warn",
"jest/no-conditional-expect": "off",
"jsdoc/require-jsdoc": "off",
"jsdoc/require-param": "off",
"jsdoc/require-returns": "off",
Expand Down
1 change: 1 addition & 0 deletions src/middleware/.nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
22.12.0
Loading