feat: add /terms page and make disclaimer/privacy/dmca/terms public routes
Some checks failed
CI / Check ui (pull_request) Successful in 20s
Release / Test backend (push) Successful in 42s
Release / Check ui (push) Successful in 38s
CI / Docker / caddy (pull_request) Successful in 3m2s
Release / Docker / caddy (push) Successful in 1m36s
CI / Docker / ui (pull_request) Successful in 1m19s
Release / Docker / backend (push) Successful in 1m42s
CI / Test backend (pull_request) Successful in 6m54s
Release / Docker / ui (push) Successful in 1m38s
Release / Docker / runner (push) Successful in 2m28s
Release / Gitea Release (push) Failing after 2s
CI / Docker / backend (pull_request) Failing after 43s
CI / Docker / runner (pull_request) Successful in 1m20s
Some checks failed
CI / Check ui (pull_request) Successful in 20s
Release / Test backend (push) Successful in 42s
Release / Check ui (push) Successful in 38s
CI / Docker / caddy (pull_request) Successful in 3m2s
Release / Docker / caddy (push) Successful in 1m36s
CI / Docker / ui (pull_request) Successful in 1m19s
Release / Docker / backend (push) Successful in 1m42s
CI / Test backend (pull_request) Successful in 6m54s
Release / Docker / ui (push) Successful in 1m38s
Release / Docker / runner (push) Successful in 2m28s
Release / Gitea Release (push) Failing after 2s
CI / Docker / backend (pull_request) Failing after 43s
CI / Docker / runner (pull_request) Successful in 1m20s
This commit is contained in:
@@ -4,7 +4,7 @@ import { getSettings } from '$lib/server/pocketbase';
|
|||||||
import { log } from '$lib/server/logger';
|
import { log } from '$lib/server/logger';
|
||||||
|
|
||||||
// Routes that are accessible without being logged in
|
// Routes that are accessible without being logged in
|
||||||
const PUBLIC_ROUTES = new Set(['/login', '/disclaimer', '/privacy', '/dmca']);
|
const PUBLIC_ROUTES = new Set(['/login', '/disclaimer', '/privacy', '/dmca', '/terms']);
|
||||||
|
|
||||||
export const load: LayoutServerLoad = async ({ locals, url }) => {
|
export const load: LayoutServerLoad = async ({ locals, url }) => {
|
||||||
// Allow /auth/* (OAuth initiation + callbacks) without login
|
// Allow /auth/* (OAuth initiation + callbacks) without login
|
||||||
|
|||||||
51
ui/src/routes/terms/+page.svelte
Normal file
51
ui/src/routes/terms/+page.svelte
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<svelte:head>
|
||||||
|
<title>Terms of Service — libnovel</title>
|
||||||
|
</svelte:head>
|
||||||
|
|
||||||
|
<div class="max-w-2xl mx-auto py-10 px-4">
|
||||||
|
<h1 class="text-2xl font-bold text-zinc-100 mb-6">Terms of Service</h1>
|
||||||
|
|
||||||
|
<div class="space-y-5 text-sm text-zinc-400 leading-relaxed">
|
||||||
|
<p>
|
||||||
|
By using libnovel you agree to these terms. If you do not agree, please do not use the service.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 class="text-base font-semibold text-zinc-200 mt-6">Use of the service</h2>
|
||||||
|
<ul class="list-disc list-inside space-y-2 pl-1">
|
||||||
|
<li>libnovel is provided for personal, non-commercial reading use only.</li>
|
||||||
|
<li>You may not scrape, crawl, or systematically download content from the site.</li>
|
||||||
|
<li>You may not use the service for any unlawful purpose.</li>
|
||||||
|
<li>Accounts may be suspended or terminated for abuse.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2 class="text-base font-semibold text-zinc-200 mt-6">Content</h2>
|
||||||
|
<p>
|
||||||
|
libnovel aggregates publicly available web novel content from third-party sources for
|
||||||
|
personal reading convenience. We do not claim ownership of any novel content displayed on
|
||||||
|
the site. If you are a rights holder and wish to have content removed, please see our
|
||||||
|
<a href="/dmca" class="text-amber-400 hover:text-amber-300 transition-colors">DMCA policy</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 class="text-base font-semibold text-zinc-200 mt-6">Accounts</h2>
|
||||||
|
<p>
|
||||||
|
You are responsible for maintaining the security of your account. libnovel is not liable
|
||||||
|
for any loss or damage resulting from unauthorised access to your account.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 class="text-base font-semibold text-zinc-200 mt-6">Disclaimer of warranties</h2>
|
||||||
|
<p>
|
||||||
|
The service is provided "as is" without warranty of any kind. We do not guarantee
|
||||||
|
availability, accuracy, or completeness of any content. See our full
|
||||||
|
<a href="/disclaimer" class="text-amber-400 hover:text-amber-300 transition-colors">disclaimer</a>
|
||||||
|
for details.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 class="text-base font-semibold text-zinc-200 mt-6">Changes to these terms</h2>
|
||||||
|
<p>
|
||||||
|
We may update these terms at any time. Continued use of the service after changes are
|
||||||
|
posted constitutes acceptance of the revised terms.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="text-zinc-600 text-xs mt-8">Last updated: {new Date().getFullYear()}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
Reference in New Issue
Block a user