Custom Hashing & Login Security
Activating Custom Security
Set theCUSTOM_LOGIN_SECURITY environment variable to any non-empty value in your .env file:
Per-User Security Tokens
WhenCUSTOM_LOGIN_SECURITY is active, every new user registration automatically generates two unique random strings stored on the user record:
These tokens are generated at registration time and are unique to each user.
RIPEMD-256 HMAC Password Hashing
Passwords are stored as an HMAC hash computed using the RIPEMD-256 algorithm, keyed with the user’s uniqueuser_token_1:
users table — not a bcrypt or argon hash.
Seamless Authentication Fallback
The custom hashing layer is designed for transparent integration:- Login and credential confirmation requests automatically detect the active hashing mode
- Standard Laravel auth guards continue to function normally
- OAuth adapters (Google, Facebook, GitHub) are not affected
- No changes to login views or form submissions are required
user_token_1, recomputes the HMAC hash of the submitted password, and compares it to the stored value — all within the normal authentication pipeline.
Social OAuth Authentication
Site Store Pro supports social login through Laravel Socialite for the following providers:Sign in with Google OAuth 2.0
Sign in with Facebook Login
GitHub
Sign in with GitHub OAuth
Social Login Setup
Supports:- GitHub (Note: If using a GitHub App, the app must have “Email addresses” selected under Permissions > Account permissions in your App settings under Settings > Developer settings > GitHub Apps > [App Name] > Permissions & Events)
- Google Developer Console
- Meta Developer Console
- GitHub Developer Settings (OAuth Apps / GitHub Apps)
Missing Email Address Fallback
If a social provider does not provide the user’s email address, the user is temporarily redirected to/auth/collect-email to supply a valid, unique email address.
- Direct social registration (where email is provided) automatically sets
email_verified_attonow(). - Social registration where the email is collected manually keeps
email_verified_atasnullso they must verify their email.
