From defdb32a35321c33be8f165a22194f34887ed21a Mon Sep 17 00:00:00 2001 From: Ruben Verborgh Date: Fri, 23 Jul 2021 15:01:43 +0200 Subject: [PATCH] docs: Add pod README. --- .../handler/RegistrationHandler.ts | 6 ++++- templates/pod/README$.md.hbs | 22 +++++++++++++++++++ templates/pod/README.acl.hbs | 12 ++++++++++ .../handler/RegistrationHandler.test.ts | 18 ++++++++++----- 4 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 templates/pod/README$.md.hbs create mode 100644 templates/pod/README.acl.hbs diff --git a/src/identity/interaction/email-password/handler/RegistrationHandler.ts b/src/identity/interaction/email-password/handler/RegistrationHandler.ts index 62b548e1c..c396f0fcc 100644 --- a/src/identity/interaction/email-password/handler/RegistrationHandler.ts +++ b/src/identity/interaction/email-password/handler/RegistrationHandler.ts @@ -135,7 +135,11 @@ export class RegistrationHandler extends HttpHandler { if (result.createPod) { podBaseUrl = podBaseUrl ?? this.identifierGenerator.generate(result.podName!); try { - await this.podManager.createPod(podBaseUrl, { ...result.data, webId: result.webId! }); + await this.podManager.createPod(podBaseUrl, { + ...result.data, + podBaseUrl: podBaseUrl.path, + webId: result.webId!, + }); } catch (error: unknown) { // In case pod creation errors we don't want to keep the account if (result.register) { diff --git a/templates/pod/README$.md.hbs b/templates/pod/README$.md.hbs new file mode 100644 index 000000000..5d3e5d847 --- /dev/null +++ b/templates/pod/README$.md.hbs @@ -0,0 +1,22 @@ +# Welcome to your pod + +## A place to store your data +Your pod is a **secure storage space** for your documents and data. +
+You can choose to share those with other people and apps. + +As the owner of this pod, +identified by {{webId}}, +you have access to all of your documents. + +## Working with your pod +The easiest way to interact with pods +is through Solid apps. +
+For example, +you can open your pod in [Databrowser](https://solid.github.io/mashlib/dist/browse.html?uri={{podBaseUrl}}). + +## Learn more +The [Solid website](https://solidproject.org/) +and the people on its [forum](https://forum.solidproject.org/) +will be glad to help you on your journey. diff --git a/templates/pod/README.acl.hbs b/templates/pod/README.acl.hbs new file mode 100644 index 000000000..2fdd88b2f --- /dev/null +++ b/templates/pod/README.acl.hbs @@ -0,0 +1,12 @@ +@prefix acl: . +@prefix foaf: . + +<#public> + acl:accessTo <./README>; + acl:agentClass foaf:Agent; + acl:mode acl:Read. + +<#owner> + acl:accessTo <./README>; + acl:agent <{{webId}}>; + acl:mode acl:Read, acl:Write, acl:Control. diff --git a/test/unit/identity/interaction/email-password/handler/RegistrationHandler.test.ts b/test/unit/identity/interaction/email-password/handler/RegistrationHandler.test.ts index dcefd7f2b..d84f6be1c 100644 --- a/test/unit/identity/interaction/email-password/handler/RegistrationHandler.test.ts +++ b/test/unit/identity/interaction/email-password/handler/RegistrationHandler.test.ts @@ -20,6 +20,7 @@ describe('A RegistrationHandler', (): void => { const password = 'superSecretPassword'; const confirmPassword = password; const podName = 'alice'; + const podBaseUrl = 'http://test.com/alice/'; // Strings instead of booleans because this is form data const createWebId = 'true'; const register = 'true'; @@ -178,7 +179,9 @@ describe('A RegistrationHandler', (): void => { expect(identifierGenerator.generate).toHaveBeenCalledTimes(1); expect(identifierGenerator.generate).toHaveBeenLastCalledWith(podName); expect(podManager.createPod).toHaveBeenCalledTimes(1); - expect(podManager.createPod).toHaveBeenLastCalledWith({ path: `${baseUrl}${podName}/` }, params); + expect(podManager.createPod).toHaveBeenLastCalledWith( + { path: `${baseUrl}${podName}/` }, { podBaseUrl, ...params }, + ); expect(accountStore.create).toHaveBeenCalledTimes(0); expect(accountStore.verify).toHaveBeenCalledTimes(0); @@ -198,7 +201,9 @@ describe('A RegistrationHandler', (): void => { expect(identifierGenerator.generate).toHaveBeenLastCalledWith(podName); (params as any).oidcIssuer = baseUrl; expect(podManager.createPod).toHaveBeenCalledTimes(1); - expect(podManager.createPod).toHaveBeenLastCalledWith({ path: `${baseUrl}${podName}/` }, params); + expect(podManager.createPod).toHaveBeenLastCalledWith( + { path: `${baseUrl}${podName}/` }, { podBaseUrl, ...params }, + ); expect(accountStore.verify).toHaveBeenCalledTimes(1); expect(accountStore.verify).toHaveBeenLastCalledWith(email); @@ -219,7 +224,9 @@ describe('A RegistrationHandler', (): void => { expect(identifierGenerator.generate).toHaveBeenLastCalledWith(podName); (params as any).oidcIssuer = baseUrl; expect(podManager.createPod).toHaveBeenCalledTimes(1); - expect(podManager.createPod).toHaveBeenLastCalledWith({ path: `${baseUrl}${podName}/` }, params); + expect(podManager.createPod).toHaveBeenLastCalledWith( + { path: `${baseUrl}${podName}/` }, { podBaseUrl, ...params }, + ); expect(accountStore.deleteAccount).toHaveBeenCalledTimes(1); expect(accountStore.deleteAccount).toHaveBeenLastCalledWith(email); @@ -239,9 +246,10 @@ describe('A RegistrationHandler', (): void => { expect(accountStore.create).toHaveBeenLastCalledWith(email, generatedWebID, password); expect(accountStore.verify).toHaveBeenCalledTimes(1); expect(accountStore.verify).toHaveBeenLastCalledWith(email); - const podParams = { ...params, oidcIssuer: baseUrl, webId: generatedWebID }; expect(podManager.createPod).toHaveBeenCalledTimes(1); - expect(podManager.createPod).toHaveBeenLastCalledWith({ path: `${baseUrl}${podName}/` }, podParams); + expect(podManager.createPod).toHaveBeenLastCalledWith( + { path: `${baseUrl}${podName}/` }, { ...params, podBaseUrl, oidcIssuer: baseUrl, webId: generatedWebID }, + ); expect(ownershipValidator.handleSafe).toHaveBeenCalledTimes(0); expect(accountStore.deleteAccount).toHaveBeenCalledTimes(0);