SimpleLogin - Passwordless Authentication for Joomla
🔐 Log in without passwords. Securely. Simply.
SimpleLogin is a powerful Joomla system plugin that enables passwordless authentication via secure email links. Users can log in to your website by requesting a login link sent to their email address — no password required. New users can also register without creating a password, receiving an activation link instead.
✨ Features
🔑 Passwordless Login
- One-click login: Users receive a secure link via email
- Time-limited: Links expire after a configurable period (default: 15 minutes)
- Single-use: Each link can only be used once
- Secure: Uses cryptographically secure tokens
👤 Passwordless Registration
- Easy signup: New users can register with just name and email
- Email verification: Accounts are activated via email link
- No password needed: Users never need to create or remember a password
- Duplicate prevention: Existing users receive a login link instead
🛡️ Security Features
- Rate limiting: Prevents brute force attacks (configurable per IP and user)
- Cooldown period: Enforces minimum wait time between requests
- Scanner detection: Blocks automated bots and scanners
- Token revocation: Old tokens are automatically invalidated
- Password enforcement: Optionally disable password login entirely
📊 Admin Features
- Comprehensive logging: Track all login attempts and actions
- Throttle monitoring: View active rate-limited requests
- Log export: Export logs via email for analysis
- Bulk operations: Hash all existing passwords to enforce passwordless-only
- Customizable: Configure all aspects of the plugin
🌍 Multi-Language Support
- English: Full support
- Dutch (Nederlands): Full support
- Easy to translate: All strings are language-ready
📥 Installation
Method 1: Joomla Installer (Recommended)
- Download the plugin package (
simplelogin.zip) from the releases page - Go to Joomla Administrator → System → Extensions → Install
- Upload the package file and click "Upload & Install"
- Enable the plugin: Extensions → Plugins → System - Simplelogin → Enable
Method 2: Manual Installation
- Extract the plugin files to
/plugins/system/simplelogin/ - Go to Joomla Administrator → System → Extensions → Discover
- Discover the plugin and install it
- Enable the plugin
Method 3: Git Clone (Developers)
cd /path/to/joomla/plugins/system
git clone https://github.com/adstam/simplelogin.git simplelogin
Then install via Joomla Extensions → Discover.
⚙️ Configuration
After installation, configure the plugin:
- Go to Extensions → Plugins → System - Simplelogin
- Click on the plugin name to edit settings
- Configure the options as needed
- Save your changes
🔧 Main Settings
General Configuration
| Setting | Description | Recommended Value |
|---|---|---|
| Landing Page Option | Where users go after login | Homepage or Custom |
| Landing Page Menu Item | Custom page for post-login redirect | Select your page |
| Login with Password Allowed | Allow traditional password login | No (for full passwordless) |
| Bulk Password Hashing | Hash all existing frontend passwords | Use when disabling passwords |
Email Templates
Customize the email messages sent to users:
Login Email:
- Subject: The email subject line
- Body: The email content. Use placeholders:
#name- User's name#link- Login link (auto-added if not in body)#expiry- Link validity in minutes
Registration Email:
- Subject: The activation email subject
- Body: The activation email content. Same placeholders as above.
🔒 Security Settings
Base Limits
| Setting | Description | Default | Recommended |
|---|---|---|---|
| Link Expiry (minutes) | How long login links are valid | 15 | 15-60 |
| Registration Link Expiry (minutes) | How long registration links are valid | 30 | 30-120 |
| Cooldown (seconds) | Minimum wait between requests | 30 | 30-60 |
Rate Limits
| Setting | Description | Default | Recommended |
|---|---|---|---|
| Max Requests per IP | Max attempts from one IP | 10 | 5-20 |
| IP Window (minutes) | Time window for IP rate limiting | 5 | 5-15 |
| Max Requests per User | Max attempts per user | 5 | 3-10 |
| User Window (minutes) | Time window for user rate limiting | 10 | 10-30 |
Logging & Cleanup
| Setting | Description | Default | Recommended |
|---|---|---|---|
| Record Retention (minutes) | How long to keep throttle records | 60 | 60-1440 |
| Log Retention (days) | How long to keep audit logs | 30 | 7-90 |
🚀 Getting Started
For Site Visitors (End Users)
Logging In
- Find the login link on your website (usually in the user menu or login module)
- Enter your email address in the form
- Click "Send login link"
- Check your email for a message from the website
- Click the link in the email to log in automatically
- You're logged in! No password needed
Registering a New Account
- Find the registration link on your website
- Enter your name and email address
- Click "Register"
- Check your email for an activation link
- Click the activation link to confirm your account
- You'll receive a login link automatically after activation
For Administrators
First-Time Setup
- Install and enable the plugin
- Configure the email templates with your branding
- Test the login flow with a test user account
- Monitor the logs in the plugin settings
- Optionally disable password login if desired
Testing the Plugin
- Create a test user account (Users → Manage → Add)
- Go to the frontend and request a login link
- Check that the test user receives the email
- Verify the link works and logs the user in
- Check the admin logs for the login attempt
Disabling Password Login
To enforce passwordless-only authentication:
- Go to plugin settings
- Set "Login with Password Allowed" to No
- Click "Hash all frontend passwords" button
- Save settings
⚠️ Warning: This will make it impossible for users to log in with passwords. Ensure all users have access to their email accounts.
🎨 Frontend Integration
Adding Login/Registration Links
The plugin automatically intercepts core Joomla login and registration pages. To add login/registration to your site:
Option 1: Use Joomla Menu Items
- Create a menu item → Users → Login Form
- The plugin will automatically redirect to passwordless login
- If password login is allowed, users can switch to password login
Option 2: Custom Login Button
Add a link to trigger the login overlay:
<a href="/index.php/simplelogin/simple-login-backlog?simplelogin=1">Login with Email</a>
Option 3: Custom Registration Button
Add a link to trigger the registration overlay:
<a href="/index.php/simplelogin/simple-login-backlog?sl_task=register">Create Account</a>
Option 4: Module Integration
Create a custom HTML module with:
<div class="simplelogin-buttons">
<a href="/index.php/simplelogin/simple-login-backlog?simplelogin=1" class="btn btn-primary">Login</a>
<a href="/index.php/simplelogin/simple-login-backlog?sl_task=register" class="btn btn-secondary">Register</a>
</div>
Styling the Overlay
The plugin includes default styling for the login/registration overlays. To customize:
- Override the layout files in your template:
- Copy
/plugins/system/simplelogin/layouts/simplelogin/overlay.phpto/templates/YOUR_TEMPLATE/html/layouts/simplelogin/overlay.php - Modify as needed
- Copy
- Add custom CSS to your template:
/* Custom SimpleLogin overlay styling */
#simplelogin-overlay .sl-modal {
background: #f8f9fa;
border-radius: 8px;
}
#simplelogin-overlay .sl-btn-primary {
background: #007bff;
border-color: #007bff;
}
📊 Monitoring & Maintenance
Viewing Logs
- Go to Extensions → Plugins → System - Simplelogin
- Scroll to the Logging section
- Use the Log Report to view recent activity
- Filter by type if needed
Log Types
| Type | Description |
|---|---|
| LoginFlow | User login attempts and successes |
| InviteFlow | Registration and activation events |
| SecurityIncident | Rate limiting, scanner detection |
| AccountEvent | User account changes |
| **Debug*** | Debug information (only when Joomla debug is enabled) |
Exporting Logs
- In the plugin settings, go to the Logging section
- Click "Export Log (last 24 hours)"
- Logs will be emailed to the site administrator
Throttle Monitoring
- Go to the Active Sessions section in plugin settings
- View current throttle records
- Monitor for suspicious activity
Cleanup
The plugin automatically cleans up:
- Expired tokens
- Old throttle records (based on retention setting)
- Old log entries (based on retention setting)
❓ Troubleshooting
Common Issues
Users don't receive emails
Check:
- ✅ Joomla mail settings are configured correctly
- ✅ Test emails work via System → Global Configuration → Server → Mail Settings
- ✅ Emails are not in spam folder
- ✅ Plugin email templates have valid subjects and bodies
- ✅ User email addresses are valid and verified
Solution:
- Test with a known working email address
- Check Joomla mail queue if using queued emails
- Verify SMTP settings if using SMTP
Login links don't work
Check:
- ✅ Link hasn't expired (check expiry time in settings)
- ✅ Link hasn't been used already (single-use)
- ✅ User account is not blocked
- ✅ User account is activated
- ✅ Token exists in database (
#__simple_logintable)
Solution:
- Request a new login link
- Check plugin logs for errors
- Verify database records exist
Registration links don't work
Check:
- ✅ Link hasn't expired (default: 30 minutes)
- ✅ Link hasn't been used already
- ✅ User account still exists (not deleted due to expiry)
Solution:
- Register again with the same email
- Check if the user already exists
- Verify database records
"Too many attempts" error
Check:
- ✅ Rate limiting settings in plugin configuration
- ✅ IP address hasn't exceeded rate limit
- ✅ User hasn't exceeded rate limit
- ✅ Cooldown period has passed
Solution:
- Wait for the rate limit window to expire
- Try from a different IP address
- Adjust rate limiting settings if too restrictive
"Request denied" or "Access denied" error
Check:
- ✅ User agent is not blocked (not a bot/scanner)
- ✅ CSRF token is valid
- ✅ User has permission to perform the action
Solution:
- Try with a regular browser
- Clear browser cache and cookies
- Check for suspicious user agents
Debugging
Enable Debug Mode
- Go to System → Global Configuration → System
- Set Debug System to Yes
- Set Debug Language to Yes (optional)
This will:
- Log debug information to
/logs/plg_system_simplelogin.php - Add debug entries to the log table (type:
Debug*) - Show detailed error messages
Check Database Tables
The plugin uses three database tables:
**#__simple_login**- Active tokensSELECT * FROM #__simple_login WHERE used = 0;**#__simple_login_throttle**- Rate limiting dataSELECT * FROM #__simple_login_throttle ORDER BY created DESC LIMIT 100;**#__simple_login_log**- Audit logsSELECT * FROM #__simple_login_log ORDER BY created DESC LIMIT 100;
Clear Caches
If changes don't appear:
- Clear Joomla cache: System → Clear Cache
- Clear browser cache
- The plugin automatically clears relevant caches on install/update
🔄 Upgrading
From Previous Versions
- Backup your website and database
- Download the latest version
- Install via Joomla Extensions → Install
- Clear cache if needed
Update Server
The plugin includes an update server for automatic updates:
- Update server URL:
https://raw.githubusercontent.com/adstam/simplelogin/main/update.xml - Joomla will automatically check for updates
🚫 Uninstalling
Before Uninstalling
- Backup your database
- Inform users that passwordless login will no longer be available
- Re-enable password login if it was disabled
- Export logs if you need them for records
Uninstall Process
- Go to Extensions → Manage → Manage
- Search for System - Simplelogin
- Select the plugin and click Uninstall
- The plugin and all its data will be removed
Note: Uninstalling removes:
- Plugin files
- Database tables (
#__simple_login,#__simple_login_throttle,#__simple_login_log) - Plugin configuration
📜 Changelog
Version 1.0.41 (July 5, 2026)
- Initial stable release
- Passwordless login via email links
- Passwordless registration with email activation
- Comprehensive security features (rate limiting, cooldown, scanner detection)
- Full logging and monitoring
- Multi-language support (English, Dutch)
- Admin dashboard with logs and reports
🤝 Contributing
Reporting Issues
If you encounter any bugs or have feature requests:
- Check the troubleshooting section
- Verify the issue still exists in the latest version
- Create an issue on GitHub with:
- Clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
- Joomla version, PHP version, plugin version
- Any relevant error messages
Development Setup
- Fork the repository on GitHub
- Clone your fork locally
- Install in a Joomla development environment
- Make your changes
- Test thoroughly
- Submit a pull request
Coding Standards
- Follow Joomla Coding Standards
- Use PSR-12 for PHP code
- Include PHPDoc comments for all methods
- Keep methods focused and single-purpose
- Write secure code (validate all input, escape all output)
📄 License
SimpleLogin is released under the GNU General Public License version 2 or later (GPLv2+).
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
🙏 Credits
- Product Owner & Concept: Ad Stam
- Architecture & Development: AI Assistant
- Testing & Feedback: Contributors
- Inspiration: Magic link authentication patterns from modern web applications
📞 Support
Documentation
- This README file
- Architecture Documentation (technical details)
Community
- GitHub Discussions: https://github.com/adstam/simplelogin/discussions
- GitHub Issues: https://github.com/adstam/simplelogin/issues
Professional Support
For professional support, custom development, or consulting:
- Website: https://demo.adstam.nl
- Email:
Dit e-mailadres wordt beveiligd tegen spambots. JavaScript dient ingeschakeld te zijn om het te bekijken.
SimpleLogin - Making authentication simple, secure, and password-free. 🎉
Documentation last updated: July 5, 2026 | Plugin version: 1.0.41
