A plugin for CTFd that allows administrators to designate certain users as beta testers who can access challenges before the official CTF start time.
If you find this plugin useful for your CTF events, consider supporting the developer:
This plugin was originally developed for Oscar Zulu to facilitate challenge testing before competitions begin, and is now being offered to the broader CTF creator community.
- Designate users as beta testers who can access challenges before the CTF starts
- Beta testers maintain regular user permissions without access to admin features
- Simple admin interface for managing beta testers
- Securely blocks beta testers from accessing admin routes
- Works with existing CTFd permission systems
-
Create the plugin directory structure in your CTFd installation:
mkdir -p /path/to/CTFd/plugins/betatester/templates
-
Copy the plugin files to the appropriate locations:
__init__.py
→/path/to/CTFd/plugins/betatester/
config.json
→/path/to/CTFd/plugins/betatester/
betatesters.html
→/path/to/CTFd/plugins/betatester/templates/
-
Restart your CTFd instance to load the plugin.
- In the CTFd admin panel, go to Admin → Beta Testers
- Select a user from the dropdown list
- Click "Add to Beta Testers"
- In the CTFd admin panel, go to Admin → Beta Testers
- Find the user in the Beta Testers list
- Click "Remove" next to their name
- Beta testers can access and solve challenges before the CTF officially starts
- Beta testers cannot access any admin routes or features
- Beta testers appear as regular users to other participants
The plugin works by:
- Promoting beta testers to admin role (giving them challenge access)
- Tracking them in a separate BetaTesters table
- Blocking their access to all admin routes
- Automatically redirecting them to the challenges page if they try to access admin features
- CTFd v3.0.0 or higher
This project is licensed under the GPLv3 License.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request