---
title: "Introducing Partial Paid and Protected Pages"
description: "Learn how LaunchFa.st helps you create pages that are public but require authentication and payment to view certain content on the page."
source: "https://www.launchfa.st/features/partial-paid-and-protected-pages"
author: "Rishi Raj Jain"
created_at: 2024-03-14T19:02:00.000Z
---

> **Site index for agents**
> Fetch https://www.launchfa.st/llms.txt to discover every page on this site.
> Every page is also available as Markdown by appending `.md` to its URL.

LaunchFa.st comes with baked-in partial paid and protected page(s) to help you prevent un-paid and un-authenticated users access **specific content** on such pages. With the payment methods such as Stripe and Lemon Squeezy integrated in LaunchFa.st and authentication methods such as Google, Twitter and Credentials, such payment callbacks' and user authentication methods can be used by your system to grant access only to a specific content on such pages for the paid and authenticated users only.

Here's how easily you can create partial paid and protected pages with LaunchFa.st:

- Create a file, say `partial_paid_and_protected.astro` with the following code:

```html
---
// File: src/pages/partial_paid_and_protected.astro

import redis from '@/lib/db/upstash'
import { getSession } from '@/lib/utils/auth'

const session: any = getSession(Astro.cookies)

let paid: number

if (session?.email) paid = await redis.hget('access', session.email)
---

<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
  </head>
  <body class="font-display">
    <!-- Show the Header if the user is logged in AND paid -->
    {paid && <Header />}
    <!-- Show the Divider if the user is logged in -->
    {session['email'] && <Divider className="mt-3 border-gray-100/50" />}
  </body>
</html>
```

- That's it! The Upstash Redis instance integrated in the LaunchFast Starter Kit takes care of fetching the user paid status and the `getSession` function takes care of decoding the user authentication status. Using Astro JSX, specific components or HTML is conditionally rendered (from the server) to the user.

Worry not, with LaunchFa.st you get such a page `partial_paid_and_protected.astro` built for you with goodies on top.
