A flexible, secure, and extensible authentication plugin designed for beta access management. This plugin allows you to gate sign-ups behind beta codes, manage invite flows, and add custom fields or logic for your application's early access program.
- Restrict sign-up to users with valid beta codes or wildcard access
- Add and remove beta users via API endpoints
- Send custom invite links to users
- Support for additional fields in beta user schema
- Secure middleware to enforce beta access at sign-up
- Extensible with custom code generation and email logic
- Built on top of the better-auth ecosystem
npm install @studiisapp/beta
import { betaPlugin } from '@studiisapp/beta';
plugins: [
betaPlugin({
enabled: true,
sendInviteLink: async ({ email, url, code }) => {
await sendBetaInviteEmail({
mailTo: email,
betaKey: code,
url,
});
},
betaSecret: process.env.BETA_SECRET || "",
}),
]
Endpoint | Method | Description |
---|---|---|
/beta/add-user |
POST | Add a beta user or wildcard code |
/beta/remove-user |
DELETE | Remove a beta user (not yet implemented) |
/beta/sign-up/:code |
GET | Callback for beta code sign-up |
/beta/sign-up |
POST | Complete sign-up with beta code |
/beta/check |
GET | Check if a beta code is valid |
- Beta Gating: The plugin enforces beta access at the sign-up endpoint using a secret header (
X-Beta-Signup
). Only requests with the correct secret are allowed to proceed. - Invite Flow: Admins can add users to the beta list, generating unique codes and sending invite links via email.
- Wildcard Codes: Supports "wildcard" codes for broader access (e.g., public beta).
- Custom Fields: Extend the beta user schema with additional fields as needed for your use case.
- Secure Callbacks: Redirects and error handling are built-in for a smooth user experience.
Option | Type | Description |
---|---|---|
enabled |
boolean | Enable or disable the beta plugin |
betaSecret |
string | Secret required in X-Beta-Signup header |
sendInviteLink |
function | Custom function to send invite emails |
additionalFields |
object | Extra fields to add to the beta user schema |
generateCode |
function | Custom function to generate invite codes |
schema |
object | Custom schema overrides |
USER_EXISTS
: User already exists in the betaUSER_NOT_FOUND
: User does not have beta accessINVALID_CODE
: Invalid or expired beta code
You can customize invite links, code generation, and schema fields to fit your application's needs. See the betaPlugin
options for details.
MIT
Contributions and feedback are welcome! Please open issues or pull requests for improvements or bug fixes.
This plugin is designed for beta access use cases and should be integrated with proper security and validation according to your application's requirements.
For more details, see the source code and inline documentation.