javascript-solid-server 0.0.16 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +8 -1
- package/LICENSE +661 -0
- package/README.md +28 -2
- package/bin/jss.js +6 -0
- package/data/.idp/accounts/_email_index.json +3 -0
- package/data/.idp/accounts/_webid_index.json +3 -0
- package/data/.idp/accounts/be4cfcd3-f6dd-41de-b2f5-7e4045d3e78c.json +9 -0
- package/data/.idp/authorization_code/6MiwPzYssbmBMdZ0_yp9RUmeGKJpmChhcPNAT-xkwE1.json +18 -0
- package/data/.idp/authorization_code/eC1ZBx2mpNsr0OjKMKdkKK69E4EfKV1SwU8p0dWFQTj.json +18 -0
- package/data/.idp/authorization_code/puWy-HQtx9ONFDhm_Bv-sRcBfm3OQPppRalQ956hLR4.json +18 -0
- package/data/.idp/client/client_mjocmpsj_vdrkczw9.json +25 -0
- package/data/.idp/client/client_mjocnc8k_3sd1aoa6.json +25 -0
- package/data/.idp/client/client_mjocnlbf_dkm0ltze.json +25 -0
- package/data/.idp/grant/ImpM7BIsyKuhvme7UOctBmRUicTsZweHOrHk95wza0s.json +16 -0
- package/data/.idp/grant/R2aOui_2A-m6E_aeq_03IyMd6N5OrFJ-lT67cCTuzOL.json +16 -0
- package/data/.idp/grant/YFxdDUi4neEPXjx_riL4_Tyg_VXuyhax_qm9yFEvrWG.json +16 -0
- package/data/.idp/grant/k5rDpXSPbMMzYLaWILONhIojmzNP6f1hkWxajC_weW3.json +16 -0
- package/data/.idp/grant/luO7y4I33a7yWi1BnfgOtoNcr1-5vH8l3t-aIqG8IgI.json +16 -0
- package/data/.idp/grant/nkXTstzTTyrUEN5H0f8Q-YR5jMqk0WdDc6H6H1XD6lJ.json +16 -0
- package/data/.idp/registration_access_token/CPhAs33MGp8s-gCRvdnbqjdDDdi0g9vNwacfuLGhX6L.json +7 -0
- package/data/.idp/registration_access_token/dbOnxWLEW5O2_pYEfCFQJYbvpdqJJ_t35gr1dd7jC_6.json +7 -0
- package/data/.idp/registration_access_token/lAFc6diCNs1g9KLYHRD75O-cH5uv4dRX09HPIelMZbE.json +7 -0
- package/data/.idp/session/VXgvz6cHkuwDGG3Hp7CYWzck4AlTDH9qCOnCxVVAGOb.json +28 -0
- package/data/demo/.acl +47 -0
- package/data/demo/inbox/.acl +50 -0
- package/data/demo/index.html +80 -0
- package/data/demo/private/.acl +32 -0
- package/data/demo/public/.acl +50 -0
- package/data/demo/public/card.ttl +8 -0
- package/data/demo/settings/.acl +32 -0
- package/data/demo/settings/prefs +17 -0
- package/data/demo/settings/privateTypeIndex +7 -0
- package/data/demo/settings/publicTypeIndex +7 -0
- package/package.json +2 -2
- package/src/config.js +7 -0
- package/src/handlers/resource.js +22 -3
- package/src/idp/interactions.js +13 -12
- package/src/mashlib/index.js +98 -0
- package/src/server.js +7 -0
- package/src/utils/url.js +18 -2
- package/test-data-idp-accounts/.idp/accounts/_email_index.json +1 -1
- package/test-data-idp-accounts/.idp/accounts/_webid_index.json +1 -1
- package/test-data-idp-accounts/.idp/accounts/b49949d9-6d61-45a1-bcee-07295aa07579.json +9 -0
- package/test-data-idp-accounts/.idp/keys/jwks.json +8 -8
- package/test-data-idp-accounts/.idp/accounts/3c1cd503-1d7f-4ba0-a3af-ebedf519594d.json +0 -9
package/README.md
CHANGED
|
@@ -54,7 +54,7 @@ npm run benchmark
|
|
|
54
54
|
|
|
55
55
|
## Features
|
|
56
56
|
|
|
57
|
-
### Implemented (v0.0.
|
|
57
|
+
### Implemented (v0.0.17)
|
|
58
58
|
|
|
59
59
|
- **LDP CRUD Operations** - GET, PUT, POST, DELETE, HEAD
|
|
60
60
|
- **N3 Patch** - Solid's native patch format for RDF updates
|
|
@@ -66,6 +66,7 @@ npm run benchmark
|
|
|
66
66
|
- **Container Management** - Create, list, and manage containers
|
|
67
67
|
- **Multi-user Pods** - Path-based (`/alice/`) or subdomain-based (`alice.example.com`)
|
|
68
68
|
- **Subdomain Mode** - XSS protection via origin isolation
|
|
69
|
+
- **Mashlib Data Browser** - Optional SolidOS UI for browsing RDF resources
|
|
69
70
|
- **WebID Profiles** - JSON-LD structured data in HTML at pod root
|
|
70
71
|
- **Web Access Control (WAC)** - `.acl` file-based authorization
|
|
71
72
|
- **Solid-OIDC Identity Provider** - Built-in IdP with DPoP, dynamic registration
|
|
@@ -138,6 +139,8 @@ jss --help # Show help
|
|
|
138
139
|
| `--idp-issuer <url>` | IdP issuer URL | (auto) |
|
|
139
140
|
| `--subdomains` | Enable subdomain-based pods | false |
|
|
140
141
|
| `--base-domain <domain>` | Base domain for subdomains | - |
|
|
142
|
+
| `--mashlib` | Enable Mashlib data browser | false |
|
|
143
|
+
| `--mashlib-version <ver>` | Mashlib version | 2.0.0 |
|
|
141
144
|
| `-q, --quiet` | Suppress logs | false |
|
|
142
145
|
|
|
143
146
|
### Environment Variables
|
|
@@ -151,6 +154,7 @@ export JSS_SSL_CERT=/path/to/cert.pem
|
|
|
151
154
|
export JSS_CONNEG=true
|
|
152
155
|
export JSS_SUBDOMAINS=true
|
|
153
156
|
export JSS_BASE_DOMAIN=example.com
|
|
157
|
+
export JSS_MASHLIB=true
|
|
154
158
|
jss start
|
|
155
159
|
```
|
|
156
160
|
|
|
@@ -403,9 +407,29 @@ createServer({
|
|
|
403
407
|
notifications: false, // Enable WebSocket notifications (default: false)
|
|
404
408
|
subdomains: false, // Enable subdomain-based pods (default: false)
|
|
405
409
|
baseDomain: null, // Base domain for subdomains (e.g., "example.com")
|
|
410
|
+
mashlib: false, // Enable Mashlib data browser (default: false)
|
|
411
|
+
mashlibVersion: '2.0.0', // Mashlib version to use
|
|
406
412
|
});
|
|
407
413
|
```
|
|
408
414
|
|
|
415
|
+
### Mashlib Data Browser
|
|
416
|
+
|
|
417
|
+
Enable the [SolidOS Mashlib](https://github.com/SolidOS/mashlib) data browser for RDF resources:
|
|
418
|
+
|
|
419
|
+
```bash
|
|
420
|
+
jss start --mashlib --conneg
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
When enabled, requesting an RDF resource with `Accept: text/html` returns an interactive data browser UI instead of raw data. Mashlib is loaded from the unpkg CDN.
|
|
424
|
+
|
|
425
|
+
**How it works:**
|
|
426
|
+
1. Browser requests `/alice/public/data.ttl` with `Accept: text/html`
|
|
427
|
+
2. Server returns Mashlib HTML wrapper (loads JS/CSS from CDN)
|
|
428
|
+
3. Mashlib fetches the actual data via content negotiation
|
|
429
|
+
4. Mashlib renders an interactive, editable view
|
|
430
|
+
|
|
431
|
+
**Note:** Mashlib works best with `--conneg` enabled for Turtle support. Pod profiles (`/alice/`) continue to serve our JSON-LD-in-HTML format.
|
|
432
|
+
|
|
409
433
|
### WebSocket Notifications
|
|
410
434
|
|
|
411
435
|
Enable real-time notifications for resource changes:
|
|
@@ -528,4 +552,6 @@ Minimal dependencies for a fast, secure server:
|
|
|
528
552
|
|
|
529
553
|
## License
|
|
530
554
|
|
|
531
|
-
|
|
555
|
+
AGPL-3.0-only
|
|
556
|
+
|
|
557
|
+
This project is licensed under the GNU Affero General Public License v3.0. If you run a modified version as a network service, you must make the source code available to users of that service.
|
package/bin/jss.js
CHANGED
|
@@ -50,6 +50,9 @@ program
|
|
|
50
50
|
.option('--subdomains', 'Enable subdomain-based pods (XSS protection)')
|
|
51
51
|
.option('--no-subdomains', 'Disable subdomain-based pods')
|
|
52
52
|
.option('--base-domain <domain>', 'Base domain for subdomain pods (e.g., "example.com")')
|
|
53
|
+
.option('--mashlib', 'Enable Mashlib data browser for RDF resources')
|
|
54
|
+
.option('--no-mashlib', 'Disable Mashlib data browser')
|
|
55
|
+
.option('--mashlib-version <version>', 'Mashlib version to use (default: 2.0.0)')
|
|
53
56
|
.option('-q, --quiet', 'Suppress log output')
|
|
54
57
|
.option('--print-config', 'Print configuration and exit')
|
|
55
58
|
.action(async (options) => {
|
|
@@ -85,6 +88,8 @@ program
|
|
|
85
88
|
root: config.root,
|
|
86
89
|
subdomains: config.subdomains,
|
|
87
90
|
baseDomain: config.baseDomain,
|
|
91
|
+
mashlib: config.mashlib,
|
|
92
|
+
mashlibVersion: config.mashlibVersion,
|
|
88
93
|
});
|
|
89
94
|
|
|
90
95
|
await server.listen({ port: config.port, host: config.host });
|
|
@@ -98,6 +103,7 @@ program
|
|
|
98
103
|
if (config.notifications) console.log(' WebSocket: enabled');
|
|
99
104
|
if (config.idp) console.log(` IdP: ${idpIssuer}`);
|
|
100
105
|
if (config.subdomains) console.log(` Subdomains: ${config.baseDomain} (XSS protection enabled)`);
|
|
106
|
+
if (config.mashlib) console.log(` Mashlib: v${config.mashlibVersion} (data browser enabled)`);
|
|
101
107
|
console.log('\n Press Ctrl+C to stop\n');
|
|
102
108
|
}
|
|
103
109
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "be4cfcd3-f6dd-41de-b2f5-7e4045d3e78c",
|
|
3
|
+
"email": "demo@example.com",
|
|
4
|
+
"passwordHash": "$2b$10$oNs/bKRsayWfBVgQBmjgEeyo0vt65Borrwhru3huSbA6.U9TyBerq",
|
|
5
|
+
"webId": "http://localhost:4000/demo/#me",
|
|
6
|
+
"podName": "demo",
|
|
7
|
+
"createdAt": "2025-12-27T13:40:57.822Z",
|
|
8
|
+
"lastLogin": "2025-12-27T13:41:20.530Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"iat": 1766842885,
|
|
3
|
+
"exp": 1766843485,
|
|
4
|
+
"accountId": "be4cfcd3-f6dd-41de-b2f5-7e4045d3e78c",
|
|
5
|
+
"authTime": 1766842885,
|
|
6
|
+
"codeChallenge": "lFETalcnuAuriGuAQvsKeZcYVW-pRv-Hz5MTPXDj7r0",
|
|
7
|
+
"codeChallengeMethod": "S256",
|
|
8
|
+
"grantId": "ImpM7BIsyKuhvme7UOctBmRUicTsZweHOrHk95wza0s",
|
|
9
|
+
"redirectUri": "http://localhost:4000/demo/public/card.ttl",
|
|
10
|
+
"resource": "urn:solid",
|
|
11
|
+
"scope": "openid offline_access webid",
|
|
12
|
+
"sessionUid": "4uEOfXb2Z3tCyhmDQuG53CpYdqkNf2FfaejZWA-xnqf",
|
|
13
|
+
"kind": "AuthorizationCode",
|
|
14
|
+
"jti": "6MiwPzYssbmBMdZ0_yp9RUmeGKJpmChhcPNAT-xkwE1",
|
|
15
|
+
"clientId": "client_mjocmpsj_vdrkczw9",
|
|
16
|
+
"_id": "6MiwPzYssbmBMdZ0_yp9RUmeGKJpmChhcPNAT-xkwE1",
|
|
17
|
+
"_expiresAt": 1766843485104
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"iat": 1766842921,
|
|
3
|
+
"exp": 1766843521,
|
|
4
|
+
"accountId": "be4cfcd3-f6dd-41de-b2f5-7e4045d3e78c",
|
|
5
|
+
"authTime": 1766842885,
|
|
6
|
+
"codeChallenge": "BqdP4MPCzvEmeNtCuKNperx_wpsUZSd41h31qsKrjHs",
|
|
7
|
+
"codeChallengeMethod": "S256",
|
|
8
|
+
"grantId": "YFxdDUi4neEPXjx_riL4_Tyg_VXuyhax_qm9yFEvrWG",
|
|
9
|
+
"redirectUri": "http://localhost:4000/demo/public/card.ttl",
|
|
10
|
+
"resource": "urn:solid",
|
|
11
|
+
"scope": "openid offline_access webid",
|
|
12
|
+
"sessionUid": "4uEOfXb2Z3tCyhmDQuG53CpYdqkNf2FfaejZWA-xnqf",
|
|
13
|
+
"kind": "AuthorizationCode",
|
|
14
|
+
"jti": "eC1ZBx2mpNsr0OjKMKdkKK69E4EfKV1SwU8p0dWFQTj",
|
|
15
|
+
"clientId": "client_mjocnlbf_dkm0ltze",
|
|
16
|
+
"_id": "eC1ZBx2mpNsr0OjKMKdkKK69E4EfKV1SwU8p0dWFQTj",
|
|
17
|
+
"_expiresAt": 1766843521653
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"iat": 1766842908,
|
|
3
|
+
"exp": 1766843508,
|
|
4
|
+
"accountId": "be4cfcd3-f6dd-41de-b2f5-7e4045d3e78c",
|
|
5
|
+
"authTime": 1766842885,
|
|
6
|
+
"codeChallenge": "8mhdOmnnCBhXBjFUC_tIfIle7O4i-ySSck_ZNnAM-TI",
|
|
7
|
+
"codeChallengeMethod": "S256",
|
|
8
|
+
"grantId": "R2aOui_2A-m6E_aeq_03IyMd6N5OrFJ-lT67cCTuzOL",
|
|
9
|
+
"redirectUri": "http://localhost:4000/demo/public/card.ttl",
|
|
10
|
+
"resource": "urn:solid",
|
|
11
|
+
"scope": "openid offline_access webid",
|
|
12
|
+
"sessionUid": "4uEOfXb2Z3tCyhmDQuG53CpYdqkNf2FfaejZWA-xnqf",
|
|
13
|
+
"kind": "AuthorizationCode",
|
|
14
|
+
"jti": "puWy-HQtx9ONFDhm_Bv-sRcBfm3OQPppRalQ956hLR4",
|
|
15
|
+
"clientId": "client_mjocnc8k_3sd1aoa6",
|
|
16
|
+
"_id": "puWy-HQtx9ONFDhm_Bv-sRcBfm3OQPppRalQ956hLR4",
|
|
17
|
+
"_expiresAt": 1766843508522
|
|
18
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"application_type": "web",
|
|
3
|
+
"grant_types": [
|
|
4
|
+
"authorization_code",
|
|
5
|
+
"refresh_token"
|
|
6
|
+
],
|
|
7
|
+
"id_token_signed_response_alg": "ES256",
|
|
8
|
+
"require_auth_time": false,
|
|
9
|
+
"response_types": [
|
|
10
|
+
"code"
|
|
11
|
+
],
|
|
12
|
+
"subject_type": "public",
|
|
13
|
+
"token_endpoint_auth_method": "client_secret_basic",
|
|
14
|
+
"post_logout_redirect_uris": [],
|
|
15
|
+
"require_pushed_authorization_requests": false,
|
|
16
|
+
"dpop_bound_access_tokens": false,
|
|
17
|
+
"client_id_issued_at": 1766842877,
|
|
18
|
+
"client_id": "client_mjocmpsj_vdrkczw9",
|
|
19
|
+
"client_secret_expires_at": 0,
|
|
20
|
+
"client_secret": "uab7wwtWjqbYV6wpBcVyIo0pDhU7COlN2WEJ5AOr4EX2lmKmY3gxvGpb_YGs09ysVM9RiHs3pO0EsVIEW98XaQ",
|
|
21
|
+
"redirect_uris": [
|
|
22
|
+
"http://localhost:4000/demo/public/card.ttl"
|
|
23
|
+
],
|
|
24
|
+
"_id": "client_mjocmpsj_vdrkczw9"
|
|
25
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"application_type": "web",
|
|
3
|
+
"grant_types": [
|
|
4
|
+
"authorization_code",
|
|
5
|
+
"refresh_token"
|
|
6
|
+
],
|
|
7
|
+
"id_token_signed_response_alg": "ES256",
|
|
8
|
+
"require_auth_time": false,
|
|
9
|
+
"response_types": [
|
|
10
|
+
"code"
|
|
11
|
+
],
|
|
12
|
+
"subject_type": "public",
|
|
13
|
+
"token_endpoint_auth_method": "client_secret_basic",
|
|
14
|
+
"post_logout_redirect_uris": [],
|
|
15
|
+
"require_pushed_authorization_requests": false,
|
|
16
|
+
"dpop_bound_access_tokens": false,
|
|
17
|
+
"client_id_issued_at": 1766842907,
|
|
18
|
+
"client_id": "client_mjocnc8k_3sd1aoa6",
|
|
19
|
+
"client_secret_expires_at": 0,
|
|
20
|
+
"client_secret": "bDLVLSo0s3P7u93bfPDrLw74PAaq8hguSjVfanz0il6V9cCFLshHECGUuNKA8fhgIpCuzdqOX2aBXv8jHwEL2g",
|
|
21
|
+
"redirect_uris": [
|
|
22
|
+
"http://localhost:4000/demo/public/card.ttl"
|
|
23
|
+
],
|
|
24
|
+
"_id": "client_mjocnc8k_3sd1aoa6"
|
|
25
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"application_type": "web",
|
|
3
|
+
"grant_types": [
|
|
4
|
+
"authorization_code",
|
|
5
|
+
"refresh_token"
|
|
6
|
+
],
|
|
7
|
+
"id_token_signed_response_alg": "ES256",
|
|
8
|
+
"require_auth_time": false,
|
|
9
|
+
"response_types": [
|
|
10
|
+
"code"
|
|
11
|
+
],
|
|
12
|
+
"subject_type": "public",
|
|
13
|
+
"token_endpoint_auth_method": "client_secret_basic",
|
|
14
|
+
"post_logout_redirect_uris": [],
|
|
15
|
+
"require_pushed_authorization_requests": false,
|
|
16
|
+
"dpop_bound_access_tokens": false,
|
|
17
|
+
"client_id_issued_at": 1766842918,
|
|
18
|
+
"client_id": "client_mjocnlbf_dkm0ltze",
|
|
19
|
+
"client_secret_expires_at": 0,
|
|
20
|
+
"client_secret": "ag53idPGzSjObWZSvKjxAmaNTsF7p6o8YSwf-3RRucHfTDe-kTmlGU6DYrjqo4qlmWGbWB1jRuCZY8OByg6rqw",
|
|
21
|
+
"redirect_uris": [
|
|
22
|
+
"http://localhost:4000/demo/public/card.ttl"
|
|
23
|
+
],
|
|
24
|
+
"_id": "client_mjocnlbf_dkm0ltze"
|
|
25
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"iat": 1766842880,
|
|
3
|
+
"exp": 1768052480,
|
|
4
|
+
"accountId": "be4cfcd3-f6dd-41de-b2f5-7e4045d3e78c",
|
|
5
|
+
"clientId": "client_mjocmpsj_vdrkczw9",
|
|
6
|
+
"kind": "Grant",
|
|
7
|
+
"jti": "ImpM7BIsyKuhvme7UOctBmRUicTsZweHOrHk95wza0s",
|
|
8
|
+
"openid": {
|
|
9
|
+
"scope": "openid offline_access webid"
|
|
10
|
+
},
|
|
11
|
+
"resources": {
|
|
12
|
+
"urn:solid": "openid offline_access webid"
|
|
13
|
+
},
|
|
14
|
+
"_id": "ImpM7BIsyKuhvme7UOctBmRUicTsZweHOrHk95wza0s",
|
|
15
|
+
"_expiresAt": 1768052480543
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"iat": 1766842907,
|
|
3
|
+
"exp": 1768052507,
|
|
4
|
+
"accountId": "be4cfcd3-f6dd-41de-b2f5-7e4045d3e78c",
|
|
5
|
+
"clientId": "client_mjocnc8k_3sd1aoa6",
|
|
6
|
+
"kind": "Grant",
|
|
7
|
+
"jti": "R2aOui_2A-m6E_aeq_03IyMd6N5OrFJ-lT67cCTuzOL",
|
|
8
|
+
"openid": {
|
|
9
|
+
"scope": "openid offline_access webid"
|
|
10
|
+
},
|
|
11
|
+
"resources": {
|
|
12
|
+
"urn:solid": "openid offline_access webid"
|
|
13
|
+
},
|
|
14
|
+
"_id": "R2aOui_2A-m6E_aeq_03IyMd6N5OrFJ-lT67cCTuzOL",
|
|
15
|
+
"_expiresAt": 1768052507087
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"iat": 1766842918,
|
|
3
|
+
"exp": 1768052518,
|
|
4
|
+
"accountId": "be4cfcd3-f6dd-41de-b2f5-7e4045d3e78c",
|
|
5
|
+
"clientId": "client_mjocnlbf_dkm0ltze",
|
|
6
|
+
"kind": "Grant",
|
|
7
|
+
"jti": "YFxdDUi4neEPXjx_riL4_Tyg_VXuyhax_qm9yFEvrWG",
|
|
8
|
+
"openid": {
|
|
9
|
+
"scope": "openid offline_access webid"
|
|
10
|
+
},
|
|
11
|
+
"resources": {
|
|
12
|
+
"urn:solid": "openid offline_access webid"
|
|
13
|
+
},
|
|
14
|
+
"_id": "YFxdDUi4neEPXjx_riL4_Tyg_VXuyhax_qm9yFEvrWG",
|
|
15
|
+
"_expiresAt": 1768052518858
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"iat": 1766842885,
|
|
3
|
+
"exp": 1768052485,
|
|
4
|
+
"accountId": "be4cfcd3-f6dd-41de-b2f5-7e4045d3e78c",
|
|
5
|
+
"clientId": "client_mjocmpsj_vdrkczw9",
|
|
6
|
+
"kind": "Grant",
|
|
7
|
+
"jti": "k5rDpXSPbMMzYLaWILONhIojmzNP6f1hkWxajC_weW3",
|
|
8
|
+
"openid": {
|
|
9
|
+
"scope": "openid offline_access webid"
|
|
10
|
+
},
|
|
11
|
+
"resources": {
|
|
12
|
+
"urn:solid": "openid offline_access webid"
|
|
13
|
+
},
|
|
14
|
+
"_id": "k5rDpXSPbMMzYLaWILONhIojmzNP6f1hkWxajC_weW3",
|
|
15
|
+
"_expiresAt": 1768052485093
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"iat": 1766842921,
|
|
3
|
+
"exp": 1768052521,
|
|
4
|
+
"accountId": "be4cfcd3-f6dd-41de-b2f5-7e4045d3e78c",
|
|
5
|
+
"clientId": "client_mjocnlbf_dkm0ltze",
|
|
6
|
+
"kind": "Grant",
|
|
7
|
+
"jti": "luO7y4I33a7yWi1BnfgOtoNcr1-5vH8l3t-aIqG8IgI",
|
|
8
|
+
"openid": {
|
|
9
|
+
"scope": "openid offline_access webid"
|
|
10
|
+
},
|
|
11
|
+
"resources": {
|
|
12
|
+
"urn:solid": "openid offline_access webid"
|
|
13
|
+
},
|
|
14
|
+
"_id": "luO7y4I33a7yWi1BnfgOtoNcr1-5vH8l3t-aIqG8IgI",
|
|
15
|
+
"_expiresAt": 1768052521645
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"iat": 1766842908,
|
|
3
|
+
"exp": 1768052508,
|
|
4
|
+
"accountId": "be4cfcd3-f6dd-41de-b2f5-7e4045d3e78c",
|
|
5
|
+
"clientId": "client_mjocnc8k_3sd1aoa6",
|
|
6
|
+
"kind": "Grant",
|
|
7
|
+
"jti": "nkXTstzTTyrUEN5H0f8Q-YR5jMqk0WdDc6H6H1XD6lJ",
|
|
8
|
+
"openid": {
|
|
9
|
+
"scope": "openid offline_access webid"
|
|
10
|
+
},
|
|
11
|
+
"resources": {
|
|
12
|
+
"urn:solid": "openid offline_access webid"
|
|
13
|
+
},
|
|
14
|
+
"_id": "nkXTstzTTyrUEN5H0f8Q-YR5jMqk0WdDc6H6H1XD6lJ",
|
|
15
|
+
"_expiresAt": 1768052508513
|
|
16
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"iat": 1766842880,
|
|
3
|
+
"exp": 1768052521,
|
|
4
|
+
"uid": "4uEOfXb2Z3tCyhmDQuG53CpYdqkNf2FfaejZWA-xnqf",
|
|
5
|
+
"accountId": "be4cfcd3-f6dd-41de-b2f5-7e4045d3e78c",
|
|
6
|
+
"loginTs": 1766842885,
|
|
7
|
+
"authorizations": {
|
|
8
|
+
"client_mjocmpsj_vdrkczw9": {
|
|
9
|
+
"sid": "p_xkvzyOVCJq5ZLXM2vmqjV35OIzrYbsqAXzUvpknIc",
|
|
10
|
+
"grantId": "ImpM7BIsyKuhvme7UOctBmRUicTsZweHOrHk95wza0s",
|
|
11
|
+
"persistsLogout": true
|
|
12
|
+
},
|
|
13
|
+
"client_mjocnc8k_3sd1aoa6": {
|
|
14
|
+
"sid": "1SAM86GitibwBsMx8QL-9VCt9Wws4Yq4VMJn4Swf1OY",
|
|
15
|
+
"grantId": "R2aOui_2A-m6E_aeq_03IyMd6N5OrFJ-lT67cCTuzOL",
|
|
16
|
+
"persistsLogout": true
|
|
17
|
+
},
|
|
18
|
+
"client_mjocnlbf_dkm0ltze": {
|
|
19
|
+
"sid": "NuauxuaSNFbSm9ksu10YakHKPm7zhCcEqhLgM51b90b",
|
|
20
|
+
"grantId": "YFxdDUi4neEPXjx_riL4_Tyg_VXuyhax_qm9yFEvrWG",
|
|
21
|
+
"persistsLogout": true
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"kind": "Session",
|
|
25
|
+
"jti": "VXgvz6cHkuwDGG3Hp7CYWzck4AlTDH9qCOnCxVVAGOb",
|
|
26
|
+
"_id": "VXgvz6cHkuwDGG3Hp7CYWzck4AlTDH9qCOnCxVVAGOb",
|
|
27
|
+
"_expiresAt": 1768052521654
|
|
28
|
+
}
|
package/data/demo/.acl
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": {
|
|
3
|
+
"acl": "http://www.w3.org/ns/auth/acl#",
|
|
4
|
+
"foaf": "http://xmlns.com/foaf/0.1/"
|
|
5
|
+
},
|
|
6
|
+
"@graph": [
|
|
7
|
+
{
|
|
8
|
+
"@id": "#owner",
|
|
9
|
+
"@type": "acl:Authorization",
|
|
10
|
+
"acl:agent": {
|
|
11
|
+
"@id": "http://localhost:4000/demo/#me"
|
|
12
|
+
},
|
|
13
|
+
"acl:accessTo": {
|
|
14
|
+
"@id": "http://localhost:4000/demo/"
|
|
15
|
+
},
|
|
16
|
+
"acl:mode": [
|
|
17
|
+
{
|
|
18
|
+
"@id": "acl:Read"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"@id": "acl:Write"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"@id": "acl:Control"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"acl:default": {
|
|
28
|
+
"@id": "http://localhost:4000/demo/"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"@id": "#public",
|
|
33
|
+
"@type": "acl:Authorization",
|
|
34
|
+
"acl:agentClass": {
|
|
35
|
+
"@id": "foaf:Agent"
|
|
36
|
+
},
|
|
37
|
+
"acl:accessTo": {
|
|
38
|
+
"@id": "http://localhost:4000/demo/"
|
|
39
|
+
},
|
|
40
|
+
"acl:mode": [
|
|
41
|
+
{
|
|
42
|
+
"@id": "acl:Read"
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": {
|
|
3
|
+
"acl": "http://www.w3.org/ns/auth/acl#",
|
|
4
|
+
"foaf": "http://xmlns.com/foaf/0.1/"
|
|
5
|
+
},
|
|
6
|
+
"@graph": [
|
|
7
|
+
{
|
|
8
|
+
"@id": "#owner",
|
|
9
|
+
"@type": "acl:Authorization",
|
|
10
|
+
"acl:agent": {
|
|
11
|
+
"@id": "http://localhost:4000/demo/#me"
|
|
12
|
+
},
|
|
13
|
+
"acl:accessTo": {
|
|
14
|
+
"@id": "http://localhost:4000/demo/inbox/"
|
|
15
|
+
},
|
|
16
|
+
"acl:default": {
|
|
17
|
+
"@id": "http://localhost:4000/demo/inbox/"
|
|
18
|
+
},
|
|
19
|
+
"acl:mode": [
|
|
20
|
+
{
|
|
21
|
+
"@id": "acl:Read"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"@id": "acl:Write"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"@id": "acl:Control"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"@id": "#public",
|
|
33
|
+
"@type": "acl:Authorization",
|
|
34
|
+
"acl:agentClass": {
|
|
35
|
+
"@id": "foaf:Agent"
|
|
36
|
+
},
|
|
37
|
+
"acl:accessTo": {
|
|
38
|
+
"@id": "http://localhost:4000/demo/inbox/"
|
|
39
|
+
},
|
|
40
|
+
"acl:default": {
|
|
41
|
+
"@id": "http://localhost:4000/demo/inbox/"
|
|
42
|
+
},
|
|
43
|
+
"acl:mode": [
|
|
44
|
+
{
|
|
45
|
+
"@id": "acl:Append"
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>demo's Profile</title>
|
|
7
|
+
<script type="application/ld+json">
|
|
8
|
+
{
|
|
9
|
+
"@context": {
|
|
10
|
+
"foaf": "http://xmlns.com/foaf/0.1/",
|
|
11
|
+
"solid": "http://www.w3.org/ns/solid/terms#",
|
|
12
|
+
"schema": "http://schema.org/",
|
|
13
|
+
"pim": "http://www.w3.org/ns/pim/space#",
|
|
14
|
+
"ldp": "http://www.w3.org/ns/ldp#",
|
|
15
|
+
"inbox": {
|
|
16
|
+
"@id": "ldp:inbox",
|
|
17
|
+
"@type": "@id"
|
|
18
|
+
},
|
|
19
|
+
"storage": {
|
|
20
|
+
"@id": "pim:storage",
|
|
21
|
+
"@type": "@id"
|
|
22
|
+
},
|
|
23
|
+
"oidcIssuer": {
|
|
24
|
+
"@id": "solid:oidcIssuer",
|
|
25
|
+
"@type": "@id"
|
|
26
|
+
},
|
|
27
|
+
"preferencesFile": {
|
|
28
|
+
"@id": "pim:preferencesFile",
|
|
29
|
+
"@type": "@id"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"@graph": [
|
|
33
|
+
{
|
|
34
|
+
"@id": "http://localhost:4000/demo/",
|
|
35
|
+
"@type": "foaf:PersonalProfileDocument",
|
|
36
|
+
"foaf:maker": {
|
|
37
|
+
"@id": "http://localhost:4000/demo/#me"
|
|
38
|
+
},
|
|
39
|
+
"foaf:primaryTopic": {
|
|
40
|
+
"@id": "http://localhost:4000/demo/#me"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"@id": "http://localhost:4000/demo/#me",
|
|
45
|
+
"@type": [
|
|
46
|
+
"foaf:Person",
|
|
47
|
+
"schema:Person"
|
|
48
|
+
],
|
|
49
|
+
"foaf:name": "demo",
|
|
50
|
+
"inbox": "http://localhost:4000/demo/inbox/",
|
|
51
|
+
"storage": "http://localhost:4000/demo/",
|
|
52
|
+
"oidcIssuer": "http://localhost:4000/",
|
|
53
|
+
"preferencesFile": "http://localhost:4000/demo/settings/prefs"
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
</script>
|
|
58
|
+
<style>
|
|
59
|
+
body { font-family: system-ui, sans-serif; max-width: 600px; margin: 2rem auto; padding: 0 1rem; }
|
|
60
|
+
h1 { color: #333; }
|
|
61
|
+
.card { background: #f5f5f5; padding: 1.5rem; border-radius: 8px; }
|
|
62
|
+
dt { font-weight: bold; margin-top: 1rem; }
|
|
63
|
+
dd { margin-left: 0; color: #666; }
|
|
64
|
+
a { color: #7c4dff; }
|
|
65
|
+
</style>
|
|
66
|
+
</head>
|
|
67
|
+
<body>
|
|
68
|
+
<div class="card">
|
|
69
|
+
<h1>demo</h1>
|
|
70
|
+
<dl>
|
|
71
|
+
<dt>WebID</dt>
|
|
72
|
+
<dd><a href="http://localhost:4000/demo/#me">http://localhost:4000/demo/#me</a></dd>
|
|
73
|
+
<dt>Storage</dt>
|
|
74
|
+
<dd><a href="http://localhost:4000/demo/">http://localhost:4000/demo/</a></dd>
|
|
75
|
+
<dt>Inbox</dt>
|
|
76
|
+
<dd><a href="http://localhost:4000/demo/inbox/">http://localhost:4000/demo/inbox/</a></dd>
|
|
77
|
+
</dl>
|
|
78
|
+
</div>
|
|
79
|
+
</body>
|
|
80
|
+
</html>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": {
|
|
3
|
+
"acl": "http://www.w3.org/ns/auth/acl#",
|
|
4
|
+
"foaf": "http://xmlns.com/foaf/0.1/"
|
|
5
|
+
},
|
|
6
|
+
"@graph": [
|
|
7
|
+
{
|
|
8
|
+
"@id": "#owner",
|
|
9
|
+
"@type": "acl:Authorization",
|
|
10
|
+
"acl:agent": {
|
|
11
|
+
"@id": "http://localhost:4000/demo/#me"
|
|
12
|
+
},
|
|
13
|
+
"acl:accessTo": {
|
|
14
|
+
"@id": "http://localhost:4000/demo/private/"
|
|
15
|
+
},
|
|
16
|
+
"acl:mode": [
|
|
17
|
+
{
|
|
18
|
+
"@id": "acl:Read"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"@id": "acl:Write"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"@id": "acl:Control"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"acl:default": {
|
|
28
|
+
"@id": "http://localhost:4000/demo/private/"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|