diff --git a/plugins/tools/frontend/routes.js b/plugins/tools/frontend/routes.js index 3af4a1c0..f306aa24 100644 --- a/plugins/tools/frontend/routes.js +++ b/plugins/tools/frontend/routes.js @@ -15,22 +15,28 @@ export default [ path: 'tools', name: 'tools', component: () => import('./views/ToolsIndex.vue'), - meta: { requiresAuth: true, plugin: 'tools' } + // NO requiresAuth. Every tool here is usable without an account: the label + // generator runs entirely in the browser, and secure send decides for + // itself (a site can let guests create, and receiving never needs a login). + // Gating the index turned a public tool into one nobody could reach. + meta: { plugin: 'tools' } }, { path: 'tools/codes', name: 'tools-codes', component: () => import('./views/CodeGenerator.vue'), - meta: { requiresAuth: true, plugin: 'tools' } + // Browser-only: no API, no data, nothing to protect. + meta: { plugin: 'tools' } }, { path: 'tools/secure-send', name: 'tools-secure-send', component: () => import('./views/SecureSendCreate.vue'), - // Creating a secret needs a login AND tools.secrets. The route guard covers - // the login; the server enforces the permission, and the page surfaces its - // refusal rather than pretending the form worked. - meta: { requiresAuth: true, plugin: 'tools' } + // Reachable by anyone; the SERVER decides who may actually create. A signed + // in user needs tools.secrets, and a guest needs the site to have turned on + // securesend_allow_guests. The page reads that setting so a guest who + // cannot create is told so, instead of being handed a form that 401s. + meta: { plugin: 'tools' } }, ] diff --git a/plugins/tools/frontend/views/SecureSendCreate.vue b/plugins/tools/frontend/views/SecureSendCreate.vue index 7bef0d91..a679db72 100644 --- a/plugins/tools/frontend/views/SecureSendCreate.vue +++ b/plugins/tools/frontend/views/SecureSendCreate.vue @@ -17,13 +17,25 @@
+ +Signing in is needed to create a secret link at this site.
++ Receiving one never needs an account - if somebody sent you a link, open + that instead. +
+